Routing
如何同時橋接 IPv4 但路由 IPv6?
我的 ISP 授予我一個IPv4 地址和一個 IPv6 前綴,該前綴已細分為幾個網路。
+--------------+ | | eth1 | |---------- <IPv6 network> | | eth0 | Linux Router | eth2 ISP ----------| |---------- <IPv6 network> | | | | eth3 | |---------- <IPv6 network> +--------------+
碰巧的是,連接到 IPv6 網路的節點之一
eth1
將受益於擁有 IPv4 地址。看來我希望路由器橋接IPv4 流量,並路由IPv6 流量。不是嗎?
我聽說過代理 ARP,但據我所知,路由器需要另一個 IPv4 地址,否則它不會嘗試與 ISP 的 v4 流量互動,對吧?同樣,我只有一個 v4 地址。
我認為,正常的橋接也不是一種選擇,因為那是第 2 層,它無法區分 IPv4 流量和 IPv6 流量。如果我橋接 IPv4,我也會橋接 IPv6,這會破壞目前的 IPv6 設置。
我是否被迫將流量 NAT 到專用網路,並從該網路為節點分配另一個地址?有沒有更直接的選擇?
(所有這些命令都應該在 Linux 路由器上執行。)
第 1 步:正常創建網橋,就好像它要在兩個介面之間路由所有流量一樣。
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
,根本無法工作。