【发布时间】:2017-05-12 22:16:17
【问题描述】:
我的软件和服务器之间的 tcp 通信有一些错误。在超时路由器静默关闭连接而不通知客户端(通常它是用 FIN 数据包制作的)。
我在这种情况下的 tcpdump 日志:
Soft 尝试在打开的连接中推送消息。
09:29:41.438050 IP CLIENTIP.33668 > SERVERIP.8101: Flags [P.], seq 163:228, ack 144, win 229, options [nop,nop,TS val 96713087 ecr 4169733508], length 65
在服务器(实际上是中间)端,此连接已断开,服务器使用重置包进行响应。
09:29:41.447415 IP SERVERIP.8101 > CLIENTIP.33668: Flags [R], seq 3072817047, win 0, length 0
我正在尝试调试这种情况,但这种情况仅在相当长的超时后才会发生。
我的想法是使用 iptables 来模拟这种情况。例如更改我的客户的目标端口:
sudo iptables -t nat -D OUTPUT -p tcp --destination-port 8101 -j DNAT --to-destination SERVERIP:8102
但此规则仅适用于新的 tcp 连接,但我需要更改已建立连接上的数据包内容。有人知道我如何将 tcpdump 规则写入所有包的目标端口吗?
【问题讨论】:
标签: networking tcp iptables tcpdump