上一篇
Linux如何查看监听端口?
- Linux
- 2025-07-06
- 4
在 Linux 中查看监听端口,主要使用
netstat -tuln
或更现代的
ss -tuln
命令,
lsof -i
也可查看进程监听的端口信息。
使用 netstat
命令(经典工具)
netstat
是传统网络工具,适合大多数Linux发行版(需安装 net-tools
包):
# 安装net-tools(如未预装) sudo apt install net-tools # Debian/Ubuntu sudo yum install net-tools # CentOS/RHEL # 查看所有监听端口(IPv4和IPv6) netstat -tuln # 参数说明: # -t : TCP协议 # -u : UDP协议 # -l : 仅显示监听状态 # -n : 以数字形式显示端口(不解析服务名) # -p : 显示进程名(需sudo权限)
输出示例:
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
使用 ss
命令(推荐,更高效)
ss
(Socket Statistics)是 netstat
的现代替代品,性能更强,预装于多数新系统:
# 查看所有TCP/UDP监听端口 ss -tuln # 高级用法: ss -tuln sport = :80 # 监听80端口的连接 ss -tuln state listening # 明确过滤监听状态
使用 lsof
命令(查看进程关联)
lsof
列出被进程打开的文件(包括网络套接字):
# 安装lsof(如未预装) sudo apt install lsof # Debian/Ubuntu sudo yum install lsof # CentOS/RHEL # 查看所有监听端口 sudo lsof -i -P -n | grep LISTEN # 参数说明: # -i : 显示网络连接 # -P : 禁用端口服务名解析(显示数字端口) # -n : 禁用主机名解析(显示IP)
通过 /proc
文件系统(底层查看)
Linux 内核通过 /proc/net
暴露网络信息:
# 查看TCP监听 cat /proc/net/tcp | awk '{$2=$3=""; print $0}' | grep "0A" # 0A=LISTEN状态(十六进制) # 查看UDP监听 cat /proc/net/udp
需转换端口:
0016
→ 十进制22(SSH端口)。
防火墙工具辅助查看
若防火墙(如 iptables
或 firewalld
)启用,可能影响实际可访问性:
# 检查防火墙规则 sudo iptables -L -n -v # iptables sudo firewall-cmd --list-all # firewalld(CentOS/RHEL)
使用场景建议
- 快速检查:优先用
ss -tuln
(速度快,无需安装)。 - 进程关联:用
lsof
或netstat -tulnp
定位程序路径。 - 脚本处理:
ss
或/proc
输出更易解析。 - 兼容旧系统:
netstat
作为备选。
安全注意事项
- 最小化监听:关闭非必要端口(如数据库端口暴露到公网)。
- 权限控制:使用
sudo
查看进程时避免泄露敏感信息。 - 定期审计:通过
cron
任务定时检查监听端口变化。
引用说明参考 Linux 官方手册(
man netstat
、man ss
)、Red Hat 文档及网络管理最佳实践,命令测试于 Ubuntu 22.04 和 CentOS 7 环境。