如何debuggingSSH“连接超时”

从host1连接到host2时,出现错误(有时)

Errno::ETIMEDOUT: Connection timed out - connect(2) 

尝试连接时在主机1上的TCP转储(tcpdump -vv -i eth0 -s 0'端口22和主机host2'):

 19:13:47.510774 IP (tos 0x0, ttl 64, id 44238, offset 0, flags [DF], proto TCP (6), length 60) host1.50274 > host2.ssh: Flags [S], cksum 0x1409 (correct), seq 2693070134, win 5840, options [mss 1460,sackOK,TS val 867914232 ecr 0,nop,wscale 7], length 0 19:13:50.508713 IP (tos 0x0, ttl 64, id 44239, offset 0, flags [DF], proto TCP (6), length 60) host1.50274 > host2.ssh: Flags [S], cksum 0x111b (correct), seq 2693070134, win 5840, options [mss 1460,sackOK,TS val 867914982 ecr 0,nop,wscale 7], length 0 19:13:56.508707 IP (tos 0x0, ttl 64, id 44240, offset 0, flags [DF], proto TCP (6), length 60) host1.50274 > host2.ssh: Flags [S], cksum 0x0b3f (correct), seq 2693070134, win 5840, options [mss 1460,sackOK,TS val 867916482 ecr 0,nop,wscale 7], length 0 

在host2同时(tcpdump -vv -i eth0 -s 0'端口22和主机host1'):

 19:13:47.510512 IP (tos 0x0, ttl 62, id 44238, offset 0, flags [DF], proto TCP (6), length 60) host1.50274 > host2.ssh: Flags [S], cksum 0x1409 (correct), seq 2693070134, win 5840, options [mss 1460,sackOK,TS val 867914232 ecr 0,nop,wscale 7], length 0 19:13:50.508453 IP (tos 0x0, ttl 62, id 44239, offset 0, flags [DF], proto TCP (6), length 60) host1.50274 > host2.ssh: Flags [S], cksum 0x111b (correct), seq 2693070134, win 5840, options [mss 1460,sackOK,TS val 867914982 ecr 0,nop,wscale 7], length 0 19:13:56.508447 IP (tos 0x0, ttl 62, id 44240, offset 0, flags [DF], proto TCP (6), length 60) host1.50274 > host2.ssh: Flags [S], cksum 0x0b3f (correct), seq 2693070134, win 5840, options [mss 1460,sackOK,TS val 867916482 ecr 0,nop,wscale 7], length 0 

哪里可以解决问题? 我怎样才能debugging它?

我build议用'ping -s 1450'来testingnetworking(-s改变了探测包的大小,mtr似乎没有类似的选项)。 如果第一个数据包成功了,而第二个数据包不成功,那么通常是因为这个问题与数据包大小有关(例如,在大雨下的外部无线电链路等有问题的介质上),丢失率几乎为零小包,接近1的大包。 而大多数协议从小协商数据包开始,然后切换到大数据包。

我注意到,你说HTTP是好的,这将反驳我的假设,但我现在没有其他的想法。