Linux での IPv4 識別フィールドの操作

Linux での IPv4 識別フィールドの操作

フラグが設定されている場合Don't Fragment、IPv4 RFC では識別フィールドを に設定できます0x0000

RFC を無効にして、そのような ID フィールドを持つ IPv4 パケットをブロックするファイアウォールの背後にあるピアを取得しました0x0000。私の「最新の」4.4.0 Linux カーネルは ID を持つパケットを生成する0x0000ため、TCP 接続を作成できません。

この0x0000ID の生成を禁止するにはどうすればよいでしょうか。また、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

関連情報