12
14
2025
OpenWRT + Banana Pi R4 で10Gのv6プラス(MAP-E & 固定IP)ルータを構築してみる(その2:固定IP編)
v6プラスの固定IPサービスをOpenWRTで実装してみる
テスト中のBanana Pi R4
OpenWRT + Banana Pi R4の組み合わせでのMAP-E接続については、OpenWRTのmapモジュールの実装が不十分で正常に稼働しないということが判明しているので、一先ず設定がシンプルで簡単なv6プラスの固定IP接続サービスから実装してみることにする.
前回の記事で、Banana Pi R4にOpenWRTの稼働環境を内蔵のeMMC領域(8GB)から起動させる準備が整ったので、ソフトウェアのアップデートとipipトンネル関連とMAP関連のパッケージを追加でインストールしておく.
今回は、向かって左側の 10G SFP+ポート(eth2) とONUを接続し、その右隣の SFP+ポート(eth1) にテスト用のClient PCが繋がっている.eth2とeth0の左端の”wan”ポートは、ブリッジ “br-wan”を介して接続されているので、10G ONUの場合は eth2 SFP+ポート、1G ONUの場合は “wan”ポートへ接続すれば良い.
1. IPv6通信環境の初期設定
WANポートにONUを接続すると、FLET’Sクロス回線なのでDHCPv6-PD prefix長56bitsで “wan6″インタフェースにIPv6 prefix が割当てられる.この状態で、何も設定を行わなくても”lan”インタフェースのポートに繋いだクライアントPCには、OpenWRTのDHCPサーバからprivate IPv4 アドレス(192.168.1.xxx/24)が割当てられている.IPv6アドレス( ::/60 ) も割当てられているのでIPv6のみの通信が行える状態になっている.
“lan” ポートの設定を変更する場合は自分の環境に合わせて変更しておく.私の場合はIPv6アドレスのprefix長を64bitsに変更し、Subnet ID として “c9” (201d) を設定した.
初期状態でもOpenWRT自身や配下のPCがIPv6のみの通信で外部と通信可能な状態になっている
“lan”ポートのIPアドレスを変更する
“IPv6 assign hint” に16進で”c9″を設定する(Subnet ID)
“lan”インタフェースの設定完了
2. OpenWRTのシステムアップデート&追加パッケージのインストール
必要に応じてOpenWRTのシステムアップデートを行い、IPv4 over IPv6 を行うための “ip-full” と “map” パッケージを追加する.将来的にDS-Liteも使う場合は、”ds-lite” パッケージも追加しておくと良いだろう.
上記の必須パッケージ以外に、ユーティリティー関連ツールも必要に応じてインストールしておくことをお薦めする.
パッケージの追加は、”Luci” GUIインタフェースを通じて行うか、コンソールのコマンドラインから行うことになるが、今回はコマンドラインで行うことにする.
opkg update
opkg install ip-full map ds-lite
opkg upgrade luci-proto-ipv6
opkg install curl bind-dig fdisk parted losetup resize2fs blkid
reboot <=== 追加パッケージを有効化するには再起動が必要
3. IPv6トンネルインタフェースの作成
固定IP接続用のIPv6トンネルインタフェースを新規作成する.インタフェース設定画面の左下にある"Add new Interface..." ボタンを押下するとインタフェースを作成する.インタフェース名は任意だがトンネルインタフェースであることが明確になるような名前にしておく.今回は "ip4ipv6" という名前にした."Protocol" のプルダウンメニューから "IPv4 over IPv6 (RFC2473-IPIPv6)"を選択する.
"ip4ipv6"という名前のトンネルインタフェースを作成する
プロバイダから指定されたInterface IDを設定したIPv6アドレスを設定する
”General Settings" の設定が済んだら 次に"Advanced Settings" ペーンに切り替え、必要な項目を設定する."Tunnel Link" は "wan6" インタフェースを指定する.トンネルインタフェースのMTUサイズは最大サイズの1,460よりも小さなサイズを指定する.今回は1,420に設定した.
"IPv6 assignment length" を64bitsに設定し、"IPv6 assignment hint" の値を必ず "0" に設定する.ここで設定した値はIPv6 prefix のSubnet IDとなるが、v6プラスの固定IPサービスでは、Subnet ID に "0" 以外を設定すると BR側からの通信ができなくなり、双方向の通信ができなくなり固定IPアドレスの通信ができなくなる.
"IPv6 suffix" 欄にはプロバイダから指定された Interface ID を設定する.64bitsのIDの先頭に"::" を付けないとエラーとなる.( "::xxxx:yyyy:zzzz:aaaa" )
ネットワーク関係のインタフェースの設定ファイルの中身を確認しておく.
root@OpenWrt:/etc# cat /etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fdf2:20bc:4f2e::/48'
option packet_steering '1'
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'eth1'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '172.25.201.1'
option netmask '255.255.255.0'
option ip6assign '64'
option ip6ifaceid '::1'
option ip6hint 'c9'
list ip6class 'wan6'
config device
option name 'br-wan'
option type 'bridge'
list ports 'wan'
list ports 'eth2'
config device
option name 'wan'
option macaddr '1e:60:ac:9d:ef:4b'
config device
option name 'eth2'
option macaddr '1e:60:ac:9d:ef:4b'
config interface 'wan'
option device 'br-wan'
option proto 'dhcp'
config interface 'wan6'
option device 'br-wan'
option proto 'dhcpv6'
config interface 'ipv4ipv6'
option proto 'ipip6'
option peeraddr '2404:9200:225:100::65'
option ip4ifaddr '59.XXX.YYY.ZZZ'
option ip6addr '240b:xxxx:yyyy:f400:3b:zzzz:f000:0'
option encaplimit 'ignore'
option tunlink 'wan6'
option mtu '1420'
option ip6assign '64'
option ip6hint '0'
list ip6class 'wan6'
option ip6ifaceid '::3b:zzzz:f000:0'
root@OpenWrt:/etc#
"Advance Setting" の項目を設定していく
固定IPの双方向トンネルに必要な情報を設定する
4. Firewallの設定
OpenWRTのIPv6関連のFirewallの設定がデフォルト状態でどのように設定されているのかはまだ把握できていないが、とりあえずWAN側のデフォルトのFirewallをそのままトンネルインターフェースに適用で問題ないだろう.この時点では固定IPv4アドレスの通信も、LAN側からはNAPTによる変換がなされるので、特にIPV4のFirewall設定も必要ない.
勿論外部からのIPv4通信をDMZやLAN側に流す場合は、まともなFirewall設定が必要になることは言うまでもない.
IPv6トンネルのFirewall設定は"WAN"側のゾーンに設定しておく
以上で、基本的なトンネルインタフェースの設定は完了だ.設定を保存しシステムをリブートする.リブート後にインタフェースのダイアログで、"ipv4ipv6" トンネルインタフェースの RX, TXのパケット数が増えていればトンネルの通信は問題ないだろう.
IPv6のトンネルは問題なく開通しているようだ
IPv4のoutbound接続はIPv4 over IPv6トンネル経由で出て行く/span>
IPv4/IPv6のデュアルスタックで問題なく通信できている
IPv4のダウンロードが少し遅いが、一般的な用途では実用的なスピードだろう