在 Linux 服务器上查看已经“开通”或“监听”的端口,意味着你想要找到那些正在接受网络连接的端口。这通常涉及到检查系统上哪些服务正在监听特定的 TCP 或 UDP 端口。以下是一些常用的方法来查看这些端口:
一. 使用 netstat
netstat 是一个强大的网络工具,可以显示网络连接、路由表、接口统计信息等。要查看正在监听的端口,可以使用以下命令:
sudo netstat -tuln
-t:显示 TCP 端口。
-u:显示 UDP 端口。
-l:仅显示监听状态的套接字。
-n:以数字形式显示地址和端口号(不解析主机名和服务名)。
二. 使用 ss
ss 是 netstat 的现代替代品,提供了类似的功能,但性能更好,输出格式也更灵活。要查看正在监听的端口,可以使用:
sudo ss -tuln
参数与 netstat 相同。
三. 使用 lsof
lsof(List Open Files)可以列出系统上所有打开的文件,包括网络套接字。要查看正在监听的端口,可以使用:
sudo lsof -i -P -n | grep LISTEN
-i:列出与网络相关的文件(套接字)。
-P:显示端口号而不是服务名。
-n:不解析主机名,显示 IP 地址。
grep LISTEN:过滤出监听状态的套接字。
nmap 是一个网络扫描工具,可以用来扫描本地或远程主机上开放的端口。要扫描本地主机,可以使用:
sudo nmap -sT localhost
或者,如果你只想快速查看特定端口是否开放,可以使用:
sudo nmap -p 80,443 localhost
但请注意,nmap 通常用于扫描远程主机,对于本地主机来说,它可能不是最直接的方法。
五. 使用系统服务管理工具
有时,你可能想知道哪个服务正在监听特定的端口。在大多数 Linux 发行版上,你可以使用 systemctl(对于 systemd 系统)或 service(对于较旧的系统)来查看服务状态。例如:
sudo systemctl status apache2 # 对于 Debian/Ubuntu 上的 Apache 服务器
sudo systemctl status httpd # 对于 CentOS/RHEL 上的 Apache 服务器
然后,你可以查看服务的配置文件(如 Apache 的 /etc/apache2/ports.conf 或 Nginx 的 /etc/nginx/nginx.conf)来确定它监听的端口。
总结
选择哪种方法取决于你的具体需求和你对系统的熟悉程度。对于快速查看正在监听的端口,netstat 和 ss 是最常用的工具。如果你需要更详细的信息,比如哪个进程正在监听端口,lsof 可能更合适。而 nmap 则更适合用于网络扫描和安全性评估。
前端技术交流: