2011-10-21 96 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網絡堆棧處理它們。 –