在Linux系统中,检查端口状态是网络管理和系统运维中的常见操作,无论是验证服务是否正常监听、排查网络连接问题,还是确保安全策略生效,掌握端口检查方法都至关重要,本文将详细介绍Linux环境下检查端口的多种命令行工具及其使用场景,帮助读者高效完成端口状态监控与故障排查。

使用netstat命令检查端口
netstat是传统的网络工具,能够显示网络连接、路由表、接口统计等信息,在大多数Linux发行版中默认安装,通过netstat可以全面查看TCP、UDP等协议的端口状态。
基本语法与常用选项
-
netstat -tuln:查看所有监听的TCP(t)和UDP(u)端口,并以数字形式显示地址和端口(n),避免DNS解析延迟。netstat -tuln
输出结果中,
Local Address列显示本地IP和端口,State列显示TCP连接状态(如LISTEN、ESTABLISHED),Proto列指明协议类型。 -
netstat -tulnp:在上述基础上添加p选项,可显示占用端口的进程ID(PID)和名称,便于快速定位服务进程。netstat -tulnp | grep :80
该命令可筛选出80端口的使用情况,若输出
LISTEN状态,表明服务正在监听80端口。 -
netstat -an:显示所有(a)网络连接,包括监听和非监听状态,并以数字形式展示信息,适合排查特定连接问题。
使用ss命令检查端口
ss是netstat的替代工具,来自iproute2包,在CentOS 7+、Ubuntu 18.04+等现代系统中默认安装,相比netstat,ss的执行效率更高,尤其在处理大量网络连接时优势明显。
核心功能与参数
-
ss -tuln:基本语法与netstat类似,查看监听的TCP和UDP端口。ss -tuln
输出结果包含
State(状态)、Local Address:Port(本地地址端口)、Peer Address:Port(对端地址端口)等列,信息更直观。 -
ss -tulnp:显示监听端口的进程信息,与netstat -tulnp效果一致。ss -tulnp | grep :22
可快速定位SSH服务(22端口)的监听状态及相关进程。

-
ss -t state established:筛选特定状态的连接,例如查看所有已建立的TCP连接。ss -t state established
结合
grep可进一步过滤特定端口的连接情况,如ss -t state established | grep :443。
使用lsof命令检查端口
lsof(List Open Files)用于列出系统打开的文件,包括网络连接、设备文件等,通过lsof可以精准定位占用端口的进程,尤其适合排查端口被占用的问题。
常用操作
-
lsof -i :端口号:查看指定端口的占用情况。lsof -i :3306
若端口被占用,输出会显示进程ID、命令名、用户、协议类型及本地/远程地址等信息。
-
lsof -i -P -n:显示所有网络连接,并以数字形式显示IP和端口(P禁用端口名解析,n禁用DNS解析)。lsof -i -P -n | grep LISTEN
结合
grep LISTEN可筛选出所有监听状态的端口及其进程。 -
lsof -i tcp:仅查看TCP协议的连接,lsof -i udp则查看UDP连接。
使用nc(netcat)测试端口连通性
nc是一个功能强大的网络工具,不仅能检查端口状态,还能进行端口扫描和简单数据传输,通过nc可以测试目标端口是否可达,适合快速验证服务是否对外响应。
基本用法
-
nc -zv IP地址 端口号:扫描目标IP的指定端口,z表示扫描模式(仅连接不传输数据),v显示详细信息。nc -zv 192.168.1.100 80
若端口开放,输出会显示
Connection to 192.168.1.100 80 port [tcp/http] succeeded!;若被防火墙拦截或端口未开放,则会显示连接失败。
-
nc -zv IP地址 端口范围:扫描连续端口,例如扫描1-1024端口。nc -zv 192.168.1.100 1-1024
适用于快速发现目标主机上的常见服务端口。
使用telnet测试端口连通性
telnet是一种传统的远程登录工具,也可用于测试端口连通性,虽然其功能较nc简单,但在无nc工具的环境中仍可使用。
操作步骤
-
telnet IP地址 端口号:尝试连接目标端口。telnet 192.168.1.100 80
若连接成功,会显示黑屏并进入交互界面(部分系统可能显示
Connected to 192.168.1.100);若失败,则会提示Connection refused或Connection timed out。 -
注意:
telnet默认使用明文传输,存在安全风险,建议仅在临时测试时使用。
结合firewalld和iptables检查防火墙规则
在Linux中,防火墙可能阻止端口访问,因此检查防火墙规则是端口排查的重要环节。
firewalld(CentOS/RHEL 7+)
firewall-cmd --list-ports:查看已开放的端口。firewall-cmd --list-ports
firewall-cmd --query-port=端口号/协议:检查指定端口是否开放。firewall-cmd --query-port=8080/tcp
iptables(传统防火墙)
iptables -L -n --line-numbers:列出所有规则,-n避免DNS解析,--line-numbers显示规则序号。iptables -L INPUT -n --line-numbers
- 重点查看
ACCEPT目标且涉及目标端口(--dport)的规则,确认端口是否被允许访问。
综合排查步骤
当遇到端口无法访问问题时,建议按以下步骤排查:
- 检查本地监听状态:使用
ss -tulnp或netstat -tulnp确认服务是否在本地正确监听目标端口。 - 验证进程状态:若端口未监听,检查对应服务进程是否运行(如
systemctl status nginx)。 - 测试本地连通性:使用
nc -zv 127.0.0.1 端口或telnet 127.0.0.1 端口确认本地访问是否正常。 - 检查防火墙规则:通过
firewall-cmd或iptables确认端口是否被防火墙拦截。 - 测试远程连通性:从其他主机使用
nc -zv 目标IP 端口验证网络可达性,排查网络路由或ACL限制。
通过以上工具和方法,可以全面掌握Linux系统中端口状态的检查技巧,无论是日常运维还是故障排查,都能高效定位问题并解决,熟练运用这些命令,将极大提升网络服务管理的效率和准确性。

















