背景
有三台Linux主机,分别为A、B、C
A到C是可以正常ssh连接的
B到C可以ping通但是无法ssh连接,所有端口都不通
排查
- 基本上可以排sshd服务问题,因为A可以正常连接,
/etc/hosts.deny
之类的也没有禁止- 因为B到C可以ping通所以当时忽略了路由问题
iptables
经排查也没有问题- 通过
主机A
链路跟踪排查下一跳
traceroute -T -p <不通的端口号> <主机C的IP>
查看到下一跳地址后就不通了,然后测试了到另一台主机D
的链路,发现下一跳地址不一样,然后查看路由,发现多了一条主机C到某个网关的路由
解决
把多出来的那条路由删掉就可以了
结论
一般像网络/端口不通之类的问题,首先应该使用网络相关的工具先排查,然后再排应用服务之类的,比较更快的定位问题点。常用的网络排查工具:
- traceroute
- mtr