朝焼けに染まる白根三山(夜叉神峠)
Date/Time: 2013:09:29 05:39:40
Camera: Panasonic
Model: DMC-LX2
Exporsure Time: 1/50 [s]
FNumber: 3.6
Aperture Value: 3.7
Focal Length: 10.0 [mm]

y2blog » OpenWRT + Banana Pi R4 で10Gのv6プラス(MAP-E & 固定IP)ルータを構築してみる(その2:固定IP編)

12

14

2025

OpenWRT + Banana Pi R4 で10Gのv6プラス(MAP-E & 固定IP)ルータを構築してみる(その2:固定IP編)

v6プラスの固定IPサービスをOpenWRTで実装してみる



Banana Pi R4
テスト中のBanana Pi R4

OpenWRTと64bit系のシングルボードコンピュータの組み合わせによる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) を設定した.


Initial interfaces
初期状態でもOpenWRT自身や配下のPCがIPv6のみの通信で外部と通信可能な状態になっている

lan setting 01
“lan”ポートのIPアドレスを変更する

lan setting 02
“IPv6 assign hint” に16進で”c9″を設定する(Subnet ID)

lan setting 03
“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      <=== IPv6関連のGUIインタフェースのアップデート
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)"を選択する.


Create a tunnel interface 01
"ip4ipv6"という名前のトンネルインタフェースを作成する

Create a tunnel interface 02
プロバイダから指定された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" )



Create a tunnel Interface 03
"Advance Setting" の項目を設定していく

Create a tunnel Interface 04
固定IPの双方向トンネルに必要な情報を設定する


ネットワーク関係のインタフェースの設定ファイルの中身を確認しておく.




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#




4. Firewallの設定

OpenWRTのIPv6関連のFirewallの設定がデフォルト状態でどのように設定されているのかは "Network > Firewall" の"Generar Settings"と"Traffic Rules"を見れば概要が判る.まだ、OpenWrtのFirewall機能については詳細を調べていないが、とりあえずWAN側のデフォルトのFirewallをそのままトンネルインターフェースに適用で問題ないだろう.IPv6関連で必要になるICMP関連のルールが主な内容だ.


この時点ではIPv4アドレスの通信も、LAN側からはNAPTによる変換がなされるので、特別なIPV4のFirewall設定も必要ない.IP-SEC関連の通信を許可する設定も入っているようだ.


勿論外部からのIPv4通信をDMZやLAN側に流す場合は、まともなFirewall設定が必要になることは言うまでもない.


今回はユーザ側のIPv6 prefixがNTT側の都合で変更になった場合に、v6プラス側のBRへその変更内容を通知する機能は実装していない.v6プラス側のURLに認証のためのアカウント情報を使ってアクセスする必要があるが、その際にそのようなパラメータ情報を渡せば良いのか不明だ.


NECのIXルータでのddnsのステータス情報を見る限り、あまり複雑なことは行っていないようだが、v6プラスの固定IPサービス機能がどのようなやり取りを行っているのか実際にddnsのやり取りをキャプチャーしてみるしかなさそうだ.



Create a tunnel Interface 05
IPv6トンネルのFirewall設定は"WAN"側のゾーンに設定しておく


以上で、基本的なトンネルインタフェースの設定は完了だ.設定を保存しシステムをリブートする.リブート後にインタフェースのダイアログで、"ipv4ipv6" トンネルインタフェースの RX, TXのパケット数が増えていればトンネルの通信は問題ないだろう.



After Rebooted
IPv6のトンネルは問題なく開通しているようだ

OpenWRT Status
IPv4のoutbound接続はIPv4 over IPv6トンネル経由で出て行く/span>




ipv6 connection test
IPv4/IPv6のデュアルスタックで問題なく通信できている

Speed Test Data
IPv4のダウンロードが少し遅いが、一般的な用途では実用的なスピードだろう


Firewallの設定でハードウェアオフロード機能を有効にしてみる


Banana Pi R4 とOpenWRTの組み合わせの場合、FirewallなどのCPU負荷のかかる作業をSoCに組み込まれた専用のハードウェアアクセラレータで処理することでCPUの負荷を減らしパケットフィルタリングを高速化させる機能が備わっているので、OpenWRTのFirewall設定でこの機能をONにしてみてどの程度スピードが向上するのか試してみた.



OpenWRT HW Offloading
Firewallの設定で "Hardware flow offloading" を有効にする

Fast Speed Test with HW Offloading
FAST Speed Test

SpeedTest with HW Offloading
SPEEDTEST

iNonius Speed Test HW
iNounious Speed Test


夜の9時台での計測であるが、"Hardware flow offloading" を有効にするとパケットの処理スピードがかなり向上するようだ.




Calendar

January 2026
S M T W T F S
 123
45678910
11121314151617
18192021222324
25262728293031

Latest Posts

  • Blogroll

  • Meta