
フラグが設定されている場合Don't Fragment
、IPv4 RFC では識別フィールドを に設定できます0x0000
。
RFC を無効にして、そのような ID フィールドを持つ IPv4 パケットをブロックするファイアウォールの背後にあるピアを取得しました0x0000
。私の「最新の」4.4.0 Linux カーネルは ID を持つパケットを生成する0x0000
ため、TCP 接続を作成できません。
この0x0000
ID の生成を禁止するにはどうすればよいでしょうか。また、iptables mangle または他の方法でこのフィールドを操作するにはどうすればよいでしょうか。
答え1
おそらくあなたが言及しているのはRFC 6864。
4.17.x Linux では、受信した接続に応答するサーバーの SYN+ACK パケットに対してのみ id = 0 が確実に表示され、それ以降は表示されませんでした。
更新: OP は、質問でもこれが通常のケースであることを確認しました (4.4.x カーネルの場合)。
ありそう最低限の要件: nftables v0.6 。notrack
は必要ありません。conntrack エントリはこの ID を気にしません。
参考までに、ここにnftables
[DF] が設定され、id == 0 の場合に id 値を変更するルール。これはまったく実行できない0xbeef
と思います。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
。