Iptables
linux中的IPv4標識欄位操作
設置標誌時
Don't Fragment
,IPv4 RFC 允許將標識欄位設置為0x0000
.我有一個位於防火牆後面的對等點,它阻止 RFC 並阻止任何具有此類
0x0000
ID 欄位的 IPv4 數據包。我的“現代”4.4.0 linux 核心生成帶有 ID 的數據包,0x0000
因此我無法創建 TCP 連接。如何禁止生成此
0x0000
ID 或如何使用 iptables mangle 或任何其他方式操作此欄位?
您可能指的是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
旗幟。