SYN ACK 后 TCP 重置可能与“没有到主机的路由”有关

SYN ACK 后 TCP 重置可能与“没有到主机的路由”有关

我遇到了一个问题,我们的一个客户端尝试启动到我们服务器的 TCP 连接,但失败了。

我看到tcpdump,客户端设备发送了一个SYN数据包,我们的服务器正确地回复了SYN ACK.之后,我们的服务器立即收到一个RST数据包。几秒钟后,该过程将重复。奇怪的是,连接有时会正确建立(大约每 2 天上午 8:30 左右)。

我尝试将数据包重定向到另一台服务器,但该服务器遇到了同样的问题。

今天我尝试以相反的方式连接。我们的客户端当前没有在防火墙中打开端口,但我还是尝试连接以查看会发生什么。我曾经ssh尝试从不同的机器进行连接,这是我发现的:

从我的个人计算机 (Mac OS X 10.10):ssh: connect to host x.x.x.x port 22: Connection refused

从接收数据包的服务器SYN(Debian 8):ssh: connect to host x.x.x.x port 22: No route to host

从不同托管中心的另一台服务器(Debian 7):ssh: connect to host x.x.x.x port 22: No route to host

来自一家大公司的另一台服务器(Debian 7):ssh: connect to host x.x.x.x port 22: Operation timed out

如果端口未在防火墙中打开,我从家里的个人计算机得到的响应正是我所期望的,但我对从不同服务器得到的不同输出感到困惑。

从这些机器中的任何一台 Ping 客户端的 IP 都可以正常工作。

我是否可以在这里查看路由问题,即我的SYN-ACK包裹路由不正确,因此(几乎)永远不会到达客户端?您对如何解决这个问题有什么建议吗?我应该联系客户的 ISP 还是我的服务器提供商?

感谢您的帮助。

更新1:

我对杰夫的问题做了一些进一步的研究。这是我的结果: IP TTL SYN: 55 IP TTL RST: 59 我目前正在等待客户端授予我访问他的网络的权限,因此我当前无法查看他是否收到SYN-ACK或是否发送RST

Traceroute: 1 x.x.x.x 25.793 ms 5.516 ms 5.516 ms 2 x.x.x.x 4.140 ms 4.172 ms 4.166 ms 3 x.x.x.x 4.158 ms 4.147 ms 4.139 ms 4 x.x.x.x 9.855 ms 9.877 ms 9.874 ms 5 x.x.x.x 15.506 ms !X 15.753 ms !X 15.970 ms !X 我家电脑的traceroute在最后两跳是相同的。两条跟踪路由都有 5 跳。

服务器端没有防火墙或负载平衡器。

路由表在接收no route to host.它们主要由默认路由和本地子网路由组成,它们在所有其他情况下都工作正常。

答案1

我没有足够的声誉来提出问题,因此这些问题多于答案,但它们应该为您指明正确的方向,或者允许其他人提供有关该问题的更多见解。

-What is the IP TTL (or hop limit if IPv6) in the SYN and RST?
-What does a capture from the client show?  
    -Does it receive the SYN-ACK, and does it send the RST?
-What does a traceroute look like?
    -How many hops between the server and the client?  
-Is there a firewall, load balancer or other network 
 device fronting  (NAT, VIP) the server?
-What do the routing tables look like for the servers 
 receiving the No Route to Host?

答案2

这一切都归结为配置问题。今天客户允许我访问他的网络,我发现他基本上有两个具有相同 IP 地址的设备,导致他的网络出现路由问题。

更改了 IP 地址之一:已解决。

感谢您的帮助。

相关内容