Skip to main content
edited body
Source Link
Yd Ahhrk
  • 373
  • 3
  • 12

(All these commands should be executed on the Linux router.)

Step 1: Create the bridge normally, as if it were to route all traffic between the two interfaces.

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

Step 2: Through ebtables rules, tell the kernel that IPv4 traffic should be bridged, and that IPv6 traffic should be routed.

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

(In the BROUTING chain, "ACCEPT" means bridge and "DROP" means ignore the bridge.)

None of the Linux router's interfaces need IPv4 addresses.

This solution should not be tested on Virtualbox VMs, because there's some bridging bug somewhere that prevents br0 from working at all.

(All these commands should be executed on the Linux router.)

Step 1: Create the bridge normally, as if it were to route all traffic between the two interfaces.

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

Step 2: Through ebtables rules, tell the kernel that IPv4 traffic should be bridged, and that IPv6 traffic should be routed.

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

(In the BROUTING chain, "ACCEPT" means bridge and "DROP" means ignore the bridge.)

None of the Linux router's interfaces need IPv4 addresses.

This solution should not be tested on Virtualbox VMs, because there's some bridging bug somewhere that prevents br0 from working at all.

(All these commands should be executed on the Linux router.)

Step 1: Create the bridge normally, as if it were to route all traffic between the two interfaces.

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

Step 2: Through ebtables rules, tell the kernel that IPv4 traffic should be bridged, and that IPv6 traffic should be routed.

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

(In the BROUTING chain, "ACCEPT" means bridge and "DROP" means ignore the bridge.)

None of the Linux router's interfaces need IPv4 addresses.

This solution should not be tested on Virtualbox VMs, because there's some bridging bug somewhere that prevents br0 from working at all.

Source Link
Yd Ahhrk
  • 373
  • 3
  • 12

(All these commands should be executed on the Linux router.)

Step 1: Create the bridge normally, as if it were to route all traffic between the two interfaces.

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

Step 2: Through ebtables rules, tell the kernel that IPv4 traffic should be bridged, and that IPv6 traffic should be routed.

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

(In the BROUTING chain, "ACCEPT" means bridge and "DROP" means ignore the bridge.)

None of the Linux router's interfaces need IPv4 addresses.

This solution should not be tested on Virtualbox VMs, because there's some bridging bug somewhere that prevents br0 from working at all.