LinuxでIPv6ブリッジ付きルータ

(eth0=ppp0, eth1=LANで既にNATが構成されているとする)

# ブリッジの基本ルールをDROPに
ebtables -t broute -P BROUTING DROP
# 全パケットに0x0のマーク
ebtables -t broute -I BROUTING -j mark --set-mark 0x0 --mark-target CONTINUE
# 行き・帰りのIPv6のパケットをブリッジしつつそれぞれ別のマークを付ける
ebtables -t broute -I BROUTING -p IPv6 -i eth0 -j mark --set-mark 0x600 --mark-target ACCEPT
ebtables -t broute -I BROUTING -p IPv6 -i eth1 -j mark --set-mark 0x601 --mark-target ACCEPT

ここまでで、ebtables -t broute -Lの結果は

Bridge table: broute

Bridge chain: BROUTING, entries: 3, policy: DROP
-p IPv6 -i eth1 -j mark --mark-set 0x601 --mark-target ACCEPT
-p IPv6 -i eth2 -j mark --mark-set 0x600 --mark-target ACCEPT
-j mark --mark-set 0x0 --mark-target CONTINUE

(此処で付けたマークを利用して後でip6tablesで煮るなり焼くなり)


あとは、

brctl addbr br0
brctl stp br0 off
brctl addif eth0
brctl addif eth1
ifconfig br0 [eth1のアドレス] netmask [ネットマスク] broadcast [ブロードキャストアドレス] up


参考URL
http://www.heart-pot.co.jp/flets-v6.html
http://www.gcd.org/blog/2006/04/29/