在Linux系统中,查看网络端口是否联通,通常需要从两个维度进行:一是检查本机端口是否处于监听状态,二是测试本机到目标主机的指定端口是否可达。下面从专业角度分别说明常用方法。

一、查看本机端口监听状态
使用ss命令(推荐,替代netstat)查看当前系统所有监听端口。例如:
ss -tlnp # 显示所有TCP监听端口,-t代表TCP,-l代表监听,-n代表数字显示端口号,-p代表显示进程。
若需查看UDP端口,可将-t替换为-u:
ss -ulnp
使用netstat命令(传统工具,部分新版系统默认不安装):
netstat -tlnp # 参数含义同上。
输出结果中,LISTEN状态表示端口正在监听。若只想检查某个特定端口,可配合grep过滤:
ss -tlnp | grep :8080 # 查看8080端口是否监听。
若命令有输出,说明本机8080端口已处于监听状态,否则未监听。
二、测试本机到远程端口的连通性
方法1:使用telnet命令(最直接)
telnet 目标主机IP 目标端口 # 例如 telnet 192.168.1.100 3306
如果端口联通,会返回类似“Connected to 192.168.1.100”或进入交互界面;如果不通,会提示“Connection refused”(连接被拒绝)或“Connection timed out”(连接超时)。
注意:telnet基于TCP协议,适合测试TCP端口。部分系统默认未安装telnet,可通过包管理器安装(如CentOS使用yum install telnet,Ubuntu使用apt install telnet)。
方法2:使用nc(netcat)命令
nc -zv 目标主机IP 目标端口 # -z表示零I/O模式(只探测不发送数据),-v表示详细输出。
例如:nc -zv 8.8.8.8 53
若端口联通,输出类似“Connection to 8.8.8.8 53 port [tcp/domain] succeeded!”;若不通,会提示“Connection refused”。
方法3:使用curl命令(适合HTTP/HTTPS或任意TCP端口)
curl -v telnet://目标主机IP:目标端口 # 使用telnet协议通过curl探测。
或者:curl -v http://目标主机IP:目标端口 # 以HTTP方式访问,如果端口开放,会返回HTTP响应或错误码(如404等);如果端口关闭,会提示“Connection refused”。
方法4:使用nmap(端口扫描工具)
nmap -p 目标端口 目标主机IP # 例如 nmap -p 22 192.168.1.1
输出结果中,端口状态为open表示开放且可达,closed表示端口关闭,filtered表示被防火墙拦截或无法确定。
三、特殊情况与注意事项
UDP端口测试:UDP是无连接协议,telnet和nc的TCP探测方式不适用于UDP。可用nc -zvu 目标IP 目标端口进行UDP探测,但UDP无连接,测试结果通常不如TCP准确。更可靠的方式是使用nmap的UDP扫描:nmap -sU -p 目标端口 目标IP。
防火墙影响:如果端口不通,可能是远端主机防火墙(如iptables/firewalld)拦截了连接,而非服务未启动。测试时需考虑防火墙规则是否允许相应端口访问。
ping与端口连通性的区别:ping使用ICMP协议,只能测试主机网络是否可达,无法确认端口是否开放。因此即使ping通,端口也可能不通(例如防火墙禁ping但允许端口,或服务未启动)。
权限要求:ss、netstat查看监听状态和进程信息时,部分信息需要root权限才能完整显示(如进程名)。建议使用sudo执行以获得完整输出。
总结:日常运维中,推荐使用ss -tlnp查看本机监听端口,使用telnet或nc -zv测试远程端口连通性。若需批量扫描或更专业的分析,使用nmap即可。

查看详情

查看详情