Linux 中的 IPv4 標識欄位操作

Linux 中的 IPv4 標識欄位操作

Don't Fragment設定標誌後,IPv4 RFC 允許將標識欄位設定為0x0000

我有一個位於防火牆後面的對等點,它會阻止 RFC 並阻止任何具有此類0x0000ID 欄位的 IPv4 封包。我的「現代」4.4.0 Linux 核心產生帶有 ID 的資料包,0x0000因此我無法建立 TCP 連線。

我如何禁止產生此0x0000ID 或如何使用 iptables mangle 或任何其他方式操作此欄位?

答案1

您可能指的是RFC 6864

在 4.17.x Linux 上,我可以看到 id = 0 僅在應答接收到的連接的伺服器的 SYN+ACK 封包中可靠出現,但在之後則不然。

更新:OP 確認這也是問題中的常見情況(使用 4.4.x 核心)。

可能最低要求: nftables v0.6 。notrack不需要,conntrack 條目不關心這個 id。

對於它的價值,這裡有一個nftables規則將id 值更改為0xbeef設定 [DF] 且 id == 0 時的值。iptables

nft add table raw
nft 'add chain raw output {type filter hook output priority -300;}'
nft 'add rule raw output ip frag-off & 0x4000 != 0 ip id == 0 ip id set 0xbeef'    

0x4000這裡的意思是DF旗幟

相關內容