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。

无论如何,这里有一个nftables0xbeef规则是将 id 值更改为[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

相关内容