EBUG第27回会合の勉強会「FreeBSDを使ってIPv6を使い込む」で出されたお題
これが可能かどうかを以下の環境で検証した。 OuterGW, InnerGW, ClientはいずれもOpenBSD 4.3。
Intenret | : : | [OuterGW (+DNS)] |em1 172.31.0.1 | Segment A | 172.31.0.1/24 ----------------------+---------+--------------------------- | 2001:3e0:434:4::/64 | |ne0 172.31.0.125 [InnerGW] |ne1 192.168.64.1 | Segment B | 192.168.64.0/24 -----------+----------+------------------------------------- | 2001:3e0:434:4::/64 | (= Seg.A) |fxp0 192.168.64.2 [Client]
IPv4はIPパケットを転送し、IPv6パケットはしないようにする。
# sysctl -w net.inet.ip.fowarding=1 # sysctl -w net.inet6.ip6.fowarding=0
経路の設定
# route add -inet default 173.31.0.1 # route add -inet6 default (OuterGWのem1側リンクローカルアドレス)
bridgeの設定
# ifconfig bridge0 create # brconfig add ne0 # brconfig add ne1 # brconfig up
これで、ne0 <-> ne1間がブリッジ接続され、Segment-A/B間をIPv6パケットが行き来 できるようになった。
NATの設定
... pfを用いてNATを設定する。
---pf.conf--- int_if="ne1" nat on $ext_if inet from !($ext_if) to any -> ($ext_if) pass all
このあと、
# pfctl -f /etc/pf.conf # pfctl -e
# ifconfig fxp0 inet6 2001:3e0:434:4 eui64 <-グローバルアドレスを付けてみる # route add -inet default 192.168.64.1 # route add -inet6 default (OuterGWのem1側リンクローカルアドレス = InnterGWの設定と同じ) # vi /etc/resolv.conf <- (OuterGWのem1側リンクローカルアドレスを追加)
この状態で、Clientにログインし、状況を観察する。