使用 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)。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/42753.html