上一篇
使用telnet、nc或nmap工具测试端口,telnet检查TCP连接,nc测试TCP/UDP,nmap扫描端口状态,同时检查防火墙设置是否放行。
使用 telnet 测试TCP端口
适用场景:快速检测TCP端口是否开放(需安装telnet)。
命令与操作:
telnet <目标IP> <端口号> # 示例:检测192.168.1.100的80端口 telnet 192.168.1.100 80
结果解读:
- 连接成功:显示
Connected to 192.168.1.100或黑屏光标(表示端口开放)。 - 连接失败:提示
Connection refused(端口未开放)或No route to host(网络不通)。
注意:若未安装telnet,可通过sudo apt install telnet(Debian/Ubuntu)或sudo yum install telnet(CentOS/RHEL)安装。
使用 nc (netcat) 工具
适用场景:测试TCP/UDP端口,支持脚本自动化。
安装与命令:
# 安装nc sudo apt install netcat-openbsd # Debian/Ubuntu sudo yum install nc # CentOS/RHEL # TCP端口检测 nc -zv <目标IP> <端口号> # 示例:检测192.168.1.100的22端口(TCP) nc -zv 192.168.1.100 22 # UDP端口检测(需服务端响应) nc -zvu <目标IP> <端口号>
结果解读:

- 成功:
Connection to 192.168.1.100 port 22 [tcp/ssh] succeeded! - 失败:
nc: connect to 192.168.1.100 port 22 (tcp) failed: Connection refused
使用 nmap 扫描端口
适用场景:全面扫描目标主机的开放端口(支持批量IP检测)。
安装与命令:
# 安装nmap sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL # 基础扫描 nmap -p <端口号> <目标IP> # 示例:扫描192.168.1.100的80-443端口范围 nmap -p 80-443 192.168.1.100
结果解读:
- 开放端口:
PORT STATE SERVICE - 关闭端口:
STATE显示closed或filtered(被防火墙拦截)。
专用协议工具
-
HTTP/HTTPS端口
使用curl测试Web服务:
curl -I http://<目标IP>:<端口> # HTTP curl -I https://<目标IP>:<端口> # HTTPS(忽略证书错误加 `-k`)
- 成功:返回HTTP状态码(如
200 OK)。 - 失败:提示
Connection refused或超时。
- 成功:返回HTTP状态码(如
-
SSH端口
使用SSH客户端测试:ssh -v -p <端口> user@<目标IP>
- 成功:显示密钥交换信息。
- 失败:
Connection reset by peer或超时。
本地端口监听检查
适用场景:确认本机服务是否监听指定端口。
命令:
# 使用ss(推荐) ss -tuln | grep :<端口号> # 使用netstat netstat -tuln | grep :<端口号>
结果解读:

- 若输出中包含
LISTEN,表示服务已启动并监听该端口。 - 无输出则说明端口未被监听。
防火墙与路由排查
若端口不通,需检查:
- 防火墙规则:
sudo iptables -L -n # 查看iptables规则 sudo ufw status # Ubuntu防火墙
- 路由可达性:
ping <目标IP> # 检查网络层连通性 traceroute <目标IP> # 追踪路由路径
总结建议
- 快速测试:优先用
telnet或nc(TCP)、nmap(批量扫描)。 - 协议适配:HTTP用
curl,SSH用客户端命令。 - 全面诊断:结合本地监听检查(
ss/netstat)和防火墙验证。 - 注意局限:
- ICMP协议(
ping)仅测试网络层,不涉及端口。 - UDP端口检测需服务端主动响应,否则结果可能不准确。
- ICMP协议(
引用说明基于Linux官方文档(man7.org)及常用网络工具手册(如nmap、netcat),结合运维实践编写,确保方法可靠,防火墙配置部分参考了iptables官方指南(netfilter.org)。
