IPv4をブリッジし、IPv6を同時にルーティングする方法は?

IPv4をブリッジし、IPv6を同時にルーティングする方法は?

私のISPは私に権限を与えました。一つIPv4 アドレスと IPv6 プレフィックスは複数のネットワークに細分化されます。

              +--------------+
              |              | eth1
              |              |---------- <IPv6 network>
              |              |
         eth0 | Linux Router | eth2
ISP ----------|              |---------- <IPv6 network>
              |              |
              |              | eth3
              |              |---------- <IPv6 network>
              +--------------+

まさに一つIPv6 ネットワークに接続されたノードは、eth1IPv4 アドレスを持つ利点を享受できます。

ルーターが必要だと思います。IPv4トラフィックと路線IPv6トラフィック。いいえ?

プロキシARPについて聞いたことがありますが、ルーターに別のIPv4アドレスを提供する必要があることを知っています。それ以外の場合は、ISP の v4 トラフィックと対話しようとしません。そうなんですか?繰り返しますが、v4アドレスしかありません。

一般的なブリッジもオプションではないと思います。これはレイヤ 2 で、IPv4 トラフィックと IPv6 トラフィックの違いを区別できないためです。 IPv4をブリッジすると、IPv6もブリッジし、現在のIPv6設定が中断されます。

トラフィックをプライベートネットワークに強制的にNATし、そのネットワークの他のアドレスをノードに割り当てる必要がありますか?より直接的なオプションはありますか?

答え1

(これらのコマンドはすべてLinuxルーターで実行する必要があります。)

ステップ1:2つのインターフェイス間のすべてのトラフィックをルーティングするのと同じように、通常はブリッジを作成します。

ip link add name br0 type bridge
ip link set br0 up
ip link set eth0 master br0
ip link set eth1 master br0

ステップ2:ebtablesルールを使用して、カーネルにIPv4トラフィックをブリッジし、IPv6トラフィックをルーティングする必要があることを通知します。

ebtables -t broute -A BROUTING -p ipv4 -j ACCEPT
ebtables -t broute -A BROUTING -p ipv6 -j DROP

(BROUTINGチェーンでは、「ACCEPT」はブリッジングを意味し、「DROP」はブリッジを無視することを意味します。)

Linux ルータのインターフェイスに IPv4 アドレスは必要ありません。

いくつかの問題があるため、このソリューションはVirtualbox VMでテストしないでください。ブリッジエラーbr0働く場所はまったくありません。

関連情報