OpenWRTを使えばIPv6 IPoE接続 + DS-Liteのルータを作成するのは容易ですが、GUIからチマチマ設定するのはめんどくさいので、スクリプト一発で設定できるように作成したスクリプトをログとして残します。スクリプトは RasPi 向けに作成しています。
OpenWRTを焼いたSDカードでRaspberry Piを起動後、このスクリプトを実行すれば自動で必要なパッケージのインストールを行い、自動で IPoE + DS-Lite 接続の設定が適用されるはずです。
事前準備としては、フレッツ光でIPoE を有効にしておくことと、IPoE DS-Lite 対応のプロバイダと契約しておくこと。光コラボは使ったことないのでよくわからない。
準備ができていたら、つぎのように実行すれば IPoE IPv6 + DS-Lite によるルータが出来上がります。OpenWRTのサイトは IPv6 reachable のため、IPv6 IPoE がフレッツ光で利用可能な状態になっていれば、OpenWRTデバイスをフレッツ光のONUにぶら下げるだけでパッケージのインストールが行えます。
- OpenWRT のファームウェアをSDカードに焼く(19.07.4 で動作確認しています)
- このスクリプトを initconfig.sh などの名前でSDカードにコピーする
- Raspberry Piを起動する
- スクリプトを実行すると、NICを DHCPv4 および DHCPv6 クライアントに変更し、外部への疎通がとおるまで待ち状態になります
- NICとフレッツ光のONUをLANケーブルでつなぎ、IPoEでIPv6アドレスが割り当てられると、必要なパッケージのインストールや設定の適用が自動的に進みます
- スクリプトの実行が完了したらOpenWRTを再起動すれば、IPoE IPv6 + DS-Lite が使えるようになっているはず
なお、スクリプト自体は Raspbery Pi2 に Buffalo の 2.4GHz USB dongle を装着する想定で作成しています。Raspberry Pi3 以降で使う場合は PKG_USB_WIFI のインストールが不要なので opkg の実行箇所をコメントアウトするなどしてください。
また、Raspberry Pi 以外の場合は eth0 を WAN 向けに設定している箇所を変更すると、スクリプトがそのまま使えるかもしれません、が、未検証です。とはいえ、uci コマンドによる設定内容は参考になるはずです。
#!/bin/sh -x # config(必要に応じて変更します) LAN_ADDR=192.168.4.1 LAN_MASK=255.255.255.0 WIFI_SSID=[SSID] WIFI_PASS=[passphrase] DSLITE_AFTR=gw.transix.jp PKG_USB_WIFI='kmod-mac80211 kmod-rt2800-lib kmod-rt2800-usb usbutils' MACADDR=$( /sbin/ifconfig eth0 | head -1 | awk '{print $5}' | sed 's/://g' ) uci set system.@system[0].hostname=OpenWrt-${MACADDR} # IPv6 を有効にするかどうか。true 以外の場合は IPv4 による、単なるトラベルルータとしてセットアップします。 ENABLE_IPV6=true # Rapsberry PiのLANポートをDHCPクライアントにするための設定を書き込む uci del network.lan.ipaddr uci del network.lan.netmask uci del network.lan.ip6assign uci set network.lan.proto='dhcp' if [ ${ENABLE_IPV6} == true ]; then # Rapsberry PiのLANポートをIPoE DHCPv6クライアントにするための設定を書き込む uci set network.wan6=interface uci set network.wan6.ifname='eth0' uci set network.wan6.proto='dhcpv6' uci set network.wan6.reqaddress='try' uci set network.wan6.reqprefix='auto' uci set dhcp.wan6=dhcp uci set dhcp.wan6.interface='wan6' uci set dhcp.wan6.dhcpv6='relay' uci set dhcp.wan6.ra='relay' uci set dhcp.wan6.ndp='relay' uci set dhcp.wan6.master='1' uci set firewall.@zone[1].network='wan wan6' fi uci commit /etc/init.d/network restart # 外部向けの疎通が確保できたらパッケージのインストールを行う while : do ping -c 1 www.google.com > /dev/null 2>&1 result_v4=$? ping6 -c 1 www.google.com > /dev/null 2>&1 result_v6=$? if [ ${result_v4} == 0 ] || [ ${result_v6} == 0 ]; then opkg update opkg install ds-lite luci-proto-ipv6 luci-i18n-base-ja opkg install ${PKG_USB_WIFI} break else sleep 1 fi done # WiFiルータにするための設定を書き込む uci set system.@system[0].zonename='Asia/Tokyo' uci set dropbear.@dropbear[0].Interface=lan uci set network.lan.proto='static' uci set network.lan.ipaddr=$LAN_ADDR uci set network.lan.netmask=$LAN_MASK uci set network.lan.ifname='wlan0' uci set network.wan=interface uci set network.wan.proto='dhcp' uci set network.wan.ifname='eth0' uci set wireless.radio0.disabled='1' uci set wireless.radio0.country='JP' uci set wireless.radio0.txpower='10' uci set wireless.default_radio0.encryption='psk2' uci set wireless.default_radio0.network='lan' uci set wireless.default_radio0.ssid=$WIFI_SSID uci set wireless.default_radio0.key=$WIFI_PASS uci set wireless.default_radio0.wpa_disable_eapol_key_retries='1' uci delete wireless.radio0.disabled='1' if [ ${ENABLE_IPV6} == true ]; then # IPv6 DHCP を LAN 側に relay する設定 uci set dhcp.lan.ra='relay' uci set dhcp.lan.dhcpv6='relay' uci set dhcp.lan.ndp='relay' # IPoE DS-Lite を有効にするための設定を書き込む``` uci set network.transix=interface uci set network.transix.proto='dslite' uci set network.transix.encaplimit='ignore' uci set network.transix.peeraddr=${DSLITE_AFTR} uci set firewall.@zone[1].network='wan wan6 transix' fi uci commit /etc/init.d/network restart #reboot
設定内容については下記記事を参考にしていますので、このスクリプトでうまくいかない場合はそちらに目を通すとよいのではと思います。