在Linux系统中,查看已开启的端口(监听状态)有以下几种常用方法:
netstat
命令sudo netstat -tulnp
-t
:显示TCP端口-u
:显示UDP端口-l
:仅显示监听状态的端口-n
:以数字形式显示地址和端口(不解析域名和服务名)-p
:显示关联的进程/程序名(需root权限)输出示例:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
tcp6 0 0 :::80 :::* LISTEN 5678/nginx
⚠️ 如果系统提示
netstat
未找到,可能需要安装net-tools
包(例如sudo apt install net-tools
)。
ss
命令(推荐,更现代的工具)sudo ss -tulnp
netstat
类似,但性能更高。netstat
接近。lsof
命令sudo lsof -i -P -n | grep LISTEN
-i
:显示网络连接-P
:禁用端口别名(直接显示数字端口)-n
:禁用域名解析(显示IP地址)sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
nginx 5678 root 6u IPv6 67890 0t0 TCP *:80 (LISTEN)
/etc/services
文件cat /etc/services
如果端口被防火墙拦截,可能无法通过上述命令看到外部访问。需检查防火墙配置:
- iptables:
bash
sudo iptables -L -n
- firewalld:
bash
sudo firewall-cmd --list-all
- ufw(Ubuntu):
bash
sudo ufw status
-p
参数)通常需要 sudo
。LISTEN
表示服务正在监听端口,ESTABLISHED
表示活跃连接。0.0.0.0
(所有IPv4)和 ::
(所有IPv6)的区别。# 检查是否有服务监听80端口
sudo ss -tlnp | grep ':80'
根据输出结果,你可以进一步分析是哪个服务占用了端口,或是否需要调整防火墙规则。