DHCP6が機能するためにip6tablesルールが必要なのはなぜですか? (逆にIPv4は何も必要ありません)

DHCP6が機能するためにip6tablesルールが必要なのはなぜですか? (逆にIPv4は何も必要ありません)

DHCP6にip6tablesルールが必要なのはなぜですか? (逆にIPv4では必要ありません。)


これは私が書いた最小限のIPv4ルールです。特別なDHCPv4(ウィキペディア) ルール:

IPv4:iptables --list-rules INPUT

-P INPUT DROP
-A INPUT -i lo -m comment --comment loopback -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment traffic4 -j ACCEPT

これは私が書いた最小IPv6ルールです。特殊DHCPv6(ウィキペディア) ルール:

IPv6:ip6tables --list-rules INPUT

-P INPUT DROP
-A INPUT -i lo -m comment --comment loopback -j ACCEPT
-A INPUT -p ipv6-icmp -m limit --limit 10/sec --limit-burst 30 -m comment --comment icmp6 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment traffic6 -j ACCEPT
-A INPUT -d fe80::/64 -p udp -m conntrack --ctstate NEW -m udp --dport 546 -m comment --comment dhcp6 -j ACCEPT

質問

ip6tablesLinuxで動作するには、IPv6にはDHCPv6が機能するために特別な規則が必要ですが、IPv4()では機能しない理由を知りたいですiptables。一方、DHCPv4 では動作するためのルールは必要ありません。

ベストアンサー1

DHCPv4では、最初の検索/提案/要求/承認交換はブロードキャストアドレスを使用して発生し、クライアントによって開始されるため、接続iptables追跡はクライアントでそれを追跡するのに問題はありません。後続の更新はすべてユニキャストである可能性がありますが、クライアントから開始されるため、追跡に問題はありません。また、DHCPv4クライアントは通常許可されていないソースIPアドレス0.0.0.0を使用する必要があるため、交換のためにほとんどをバイパスするrawソケットを使用する必要がありますiptables

IPv6にはブロードキャストがないため、クライアントは「範囲内のすべてのDHCPv6サーバーとリレーエージェント」アドレスにマルチキャストパケットを送信します。ただし、サーバーはマルチキャスト要求にユニキャスト応答を送信できるため、クライアント要求とサーバー応答の間の相関はDHCPv4ほど直接的で明確ではありません。

さらに、IPv6では、各インターフェイスにデフォルトでリンクローカルIPv6アドレスがあり、DHCPv6マルチキャストのソースアドレスとして使用できるため、rawソケットは必要ありません。これiptablesにより、デフォルトでは通常のUDP + IPv6機能のみが使用され、DHCPv6交換を完全に制御できます。

さらに、DHCPv6 サーバーは、クライアントが再構成メッセージを受信し続けるように要求することがあります。サーバーが初期 DHCPv6 交換でこのオプションをネゴシエートした場合サーバーが起動することがあります。DHCPv6の再構成。再構成はサーバーがクライアントにパケットを送信することから始まるため、この時点では接続(conntrackの意味で)は確立されず、クライアントはインバウンド再構成メッセージを受け入れるために明示的なiptablesルールが必要です。

おすすめ記事