2011-10-21 62 views
2

我们偶尔需要调试不正确处理TCP选择性确认(SACK)选项的故障Cisco路由器。这会导致我们的TCP会话在通过IPTABLES端口重定向规则路由时死亡。包含Linux数据包处理堆栈

为了帮助诊断,我一直在构造一个基于python的实用程序来构造可以随意重现此错误的数据包序列,实现使用原始套接字来执行此技巧。我有一个很好的ICMP ping工作,但我遇到了UDP实现的障碍,我可以构造,发送和接收数据包,没有问题,我看到的问题是Linux不喜欢UDP数据包从远程系统发回,并始终发送ICMP目标不可达数据包,即使我的python脚本能够接收并处理数据包而没有任何明显问题。

我的问题:使用RAW套接字时,是否可以包含Linux UDP堆栈以绕过这些ICMP错误消息?

感谢

回答

1

你接收和处理数据包,只需要抑制ICMP端口不可达?如果是这样,也许只是添加一个条目到iptables OUTPUT链去掉它?

+0

有趣的建议,它肯定会工作,我认为,如果可能的话,我宁愿不那么激烈的解决方案。 –

+0

似乎IPTABLES可能是唯一的出路,RAW套接字仅用于发送,AF_PACKET套接字可用于捕获返回数据包,但不能阻止Linux网络堆栈处理它们。 –