今天遇到一个非常诡异的问题。具体表现如下(两台机器分别用src和dst表示,两台机器在不同的数据中心,连接需要走公有网络)
- 在src主机,访问dst的8181端口,发现连接无法建立。
- src访问dst的非8181端口,连接正常建立
- 在src主机所在的集群,访问dst的8181端口,连接正常建立
- 在其它外网设备访问dst的8181端口,连接正常
- 通过内网访问dst的8181端口,连接正常
- 两个服务器都没有设置防火墙
于是在两边的节点分别抓了包,包的内容如下:
这是在src节点抓的包
这是在dst节点抓的包
乍一看,非常唬人,两边的节点都在收发rst包。那看来问题应该就是为什么会有rst包了。
重新组织包收发过程
这个时候就应该看图说话了,wireshark打开的包是两边分别抓到的,我们需要重新构建包发送的流程。我们以(8181, 54335)这一组画一下时序图
上图编号是对应抓包方在wireshark中显示的包