使用iptables模拟断开的连接

时间:2017-05-11 08:10:27

标签: networking tcp iptables tcpdump

我在软件和服务器之间的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

在服务器(实际上是中间)这个连接已经断开,服务器回复了Reset包。

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规则写入目标端口?

1 个答案:

答案 0 :(得分:1)

您是否考虑使用类似netem的内容来添加延迟或丢弃数据包?我认为它可能比iptables更适合你。