#topicpath
----
EBUG第27回会合の勉強会 [[FreeBSDを使ってIPv6を使い込む>http://www.ebug.jp/pub/docs/20080920/ipv6-tune.pdf]] で出されたお題の「テストケース3」を追試してみた。

-二つのEther Segmentを跨いでIPv4とIPv6を運用するのに、以下の条件をみたすように接続する。
--IPv4はNATを用いてSegment-BからSegment-BへIPパケットの転送を行う。
--IPv6は (/64で割り当てられており、
これ以上サブネット分割ができないため) ブリッジ接続を行い、全体で1つのセグメントとして運用する。

これが可能かどうかを以下の環境で検証した。
OuterGW, InnerGW, ClientはいずれもOpenBSD 4.3。

                              Intenret
                                 |
                                 :
                                 :
                                 |
                             [OuterGW (+DNS)]
                                 |em1 172.31.0.1
                                 |
 Segment A                       |              172.31.0.0/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]

***InnerGWの設定 [#aafaf062]
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---
 ext_if="ne0"
 int_if="ne1"
 
 nat on $ext_if inet from !($ext_if) to any -> ($ext_if)
 
 pass all
このあと、
 # pfctl -f /etc/pf.conf
 # pfctl -e

***Clientの設定 [#ff730634]
 # 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側リンクローカルアドレスを追加)

***確認 [#x55dcec7]
この状態で、Clientにログインし、状況を観察する。
-IPv4/IPv6ともClientからインターネットへのアクセスは可能となった。
-ClientからSegment-AへのアクセスもIPv4/IPv6とも可能
-OuterGWからClientへのSSHログインは、IPv6のみ可能。
-Client上で、Segment-Bのパケットを観測すると、Segment-AからのICMP6パケットも
見えていたので今回は設定を手動で行ったが、OuterGWからRAを流して自動設定とすることも可能と思われる。
-その他、Segment-Bでは、Segment-Aからの
ARP、IPv4ブロードキャストパケットなども流れていた。
sysctlによってIPレベルのforwardingを無効にしても、結局bridge i/f経由で流れるようだ。
今回は特に影響もないので放っておいたが、運用に影響がでるようであれば、
pfにフィルタルールを追加するなどして対策することが必要と思われる。
----
#topicpath

Front page   Edit Diff History Attach Copy Rename Reload   New Page list Search Recent changes   Help   RSS of recent changes