#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
Reload  New Edit Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS