在 Linux 下使用 telnet 排查网络/服务故障,核心思路是:确认网络是否通、端口是否开、服务是否响应。下面按场景给你一套实用排查方法。
✅ 可以排查:
❌ 不能排查:
openssl s_client)telnet 192.168.1.10 22
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
Connection refused # 端口没开
No route to host # 网络不通
Connection timed out # 防火墙或中间网络阻断
telnet www.example.com 80
含义:目标主机可达,但端口未监听
排查:
# 在目标机查端口
ss -lntp | grep 22
netstat -lntp | grep 22
# 服务是否运行
systemctl status sshd
含义:网络层不可达
排查:
ip route
ping 192.168.1.10
arp -n
含义:
排查:
# 本地防火墙
iptables -L -n
firewalld-cmd --list-all
# 中间网络
traceroute 192.168.1.10
mtr 192.168.1.10
含义:端口开,但服务不回数据
示例(HTTP):
telnet www.example.com 80
GET / HTTP/1.1
Host: www.example.com
没返回 → 服务异常
# TCP 端口测试
nc -zv 192.168.1.10 22
# 更详细
timeout 5 bash -c '</dev/tcp/192.168.1.10/22' && echo OK
openssl s_client -connect www.example.com:443
ping → 网络通不通telnet ip port → 端口通不通ss/netstat → 服务是否监听iptables/firewalld → 是否被拦tcpdump → 抓包确认Ctrl + ] 然后输入 quittimeout 5 telnet 192.168.1.10 3306
如果你有具体报错信息或服务类型(SSH / MySQL / HTTP 等),我可以帮你一步步定位。