Raspberry Pi3 B の役割変遷
これまで Asterisk、OpenVPN、WireguardVPN として使ってきました。
Asterisk はひかり電話をやめてブラステルをイエデンにしてお役御免になりました。
いまは Rakuten Link があるのでブラステルも不要になりつつあります。
その後、外出中に家庭内の機器を操作できるようにと、OpenVPN 〜 WireguardVPN をインストールしていました。
IPv4 over IPv6 のポート制限回避のため PPPoE を併用したり、いっそのこと IPv6 したりと変わってきています。
いまは AP モードの GL-AXT1800 の Tailscale を使っており自前の VPN サーバーはお役御免、その結果ラズパイは使い道がなく、有休品になっていました。
以下の記述で Rpi3 は Raspberry Pi3 B のことです。
Rpi3 を DS-lite で動かす
〜〜 ことの発端 〜〜
今回、GL-AXT1800 や MT2500A で DS-lite を設定したところ、再起動の不具合が発生、これが OpenWrt 問題か GL.iNet 問題かを切り分けるためラズパイに OpenWrt を入れ、DS-lite を設定して検証してみたのです。
結果は GL.iNet 問題であると結論付けましたが、せっかく DS-lite をセットアップしましたので、具体的なやり方を記載してみます。
【その1】OpenWrt で 無線LANルーターにする
まずは OpenWrt ルーターにするところから始めます。
参考にしたのは、にゃののん日記 というサイトです。
このサイトでは 無線LANルーター化 はしていますが、DS-lite は設定しておらず、IPv6 対応もされていません。
DS-lite ルーター化は OpenWrt による無線LANルーター化のあとで記載します。
ここに「OpenWrt公式サイト(日本語)からダウンロード→安定リリース ビルド→21.02.0(GL-AXT1800の最新版ファームウェアのOpenWrtバージョンと同じ)→targets→bcm27xx(Raspberry Piを含むカテゴリ)→bcm2710(Rpi3用)→rpi-3-ext4-factory.img.gzの順に選択してダウンロードしたものをbalenaEtcher等でmicroSDカードに書き込む」と記載されています。
この手順で OpenWrt は簡単にブートできます。
要は対象のブートイメージを SD カードに焼き、これを Rpi3 に差し込んで電源を入れれば OpenWrt の初期画面になります。
SD カードは手持ちの 2GB のものを使いましたが、1GB でも十分です。
最終的に DS-lite を動かすところまでに使用した SD メモリ領域は 0.9GB ほどです。
Rpi3 OpenWrt Configuration
Mac mini M1 で最初に SD カードを MS-DOS(FAT)で初期化します。
Windows でも OpenWrt にできます。
balenaEtcher を使い、ダウンロードした OpenWrt を書き込みます。
《Flash from file》をクリックしてダウンロードしたopenwrt-21.02.0-bcm27xx-bcm2710-rpi-3-ext4-factory.img.gz を指定します。
今回は GL-AXT1800 と同じバージョンにしましたが、もっと新しいバージョンがすでにリリースされています。

《Select target》をクリックして SD カードを指定し、《Flash!》をクリックすると、自動解凍して書き込みが始まります。
下図は書き込み中の状態です。
書き込み完了画面です。

OpenWrt のブートディスクが出来上がりです。
SD カードを取り出し、Rpi3 の SD カードスロットに差し込みます。
そして Mac と Rpi3 を LAN ケーブルで直結します。
このとき Mac のネットワーク設定は DHCP サーバーを使う設定にします。
OpenWrt から IP アドレス(192.168.1.0/24)が割り当てられるからです。
Rpi3 の電源導通で OpenWrt が起動します。
Mac のネットワークに IP が割り当たったらブラウザで192.168.1.1 と入力すると OpenWrt の初期画面になります。
初期画面ではまだパスワード未設定なので何も入力せず、《Login》をクリックします。

次に時刻合わせをします。
【System】→ 【System】→【General Settings】→【Sync with Browser】でブラウザと時刻が同期します。
【Timezone】を「Asia/Tokyo」として《Save & Apply》で反映させます。

続いてパスワードを設定します。

パスワードと、確認用パスワードを入力して《Save》で設定完了になります。
設定したパスワード欄と確認欄はクリアされますが設定はできています。
再び《Save》してしまうと no password になりますから注意が必要です。

いったん《Logout》し、パスワードを入力してログインし直します。
次に WiFi-AP を設定します。
ドライバーと アクセスポイント化のパッケージは Rpi3 用がすでに組み込まれています。
【Network】→【Wireless】と進み《Enable》となっているインタフェースの《Edit》をクリックします。
Power を10dBm/10mW にします。
国内は 10mW 以上の高周波出力は電波法違反になります。
10dBm で十分に届きます。
Wireless Security は WPA2-PSK にし、Cypher は Force CCMP(AES)として、Key(接続時パスワード)を設定します。

Advanced Settings で、Country Code を JP - Japan にし、Force 40MHz モードにチェックを入れます。

General Setup に戻り Wireless network is disabled 欄の《Enable》をクリックして有効化します。
Mac と Rpi3 を直結していた LAN ケーブルを外し、Mac をいま設定した WiFi-AP に接続します。
Mac の LAN ポートは現在のルーターにつないでいても構いません。
つまり LAN:192.168.xxx.0/24、WiFi-AP:192.168.1.0/24 となります。
にゃののん日記 では Rpi3 の LAN 端子を WAN端子にする、として下記手順が示されていますが 2 項のあと、3 項の該当箇所がなく、しばらく悪戦苦闘しました。
- Network→Interfaces
- InterfacesのLANから、Edit
- Physical Settings→Common ConfigurationのInterfaceからeth0→Ethernet Adapter: "eth0"のチェックをはずす
- Save & Apply
- Interfacesから、Add new interface
- Name of the new interfaceにwanを入力
- Protocol of the new interfaceからDHCP clientを選択
- Submit
- Save & Apply
1 〜 4 項は次のようにします。
【Network】→【Interface】→【Devices】→ Type 欄が「Bridge device」の《Configure...》をクリックします。

「Bridge ports」の「eth0」のチェックを外し《Save》で戻って《Save & Apply》します。

続いて 5 〜 9 項になります。
【Interfaces】から、《Add new interface》をクリックし、
「Name of the new interface」に「wan」を入力します。
「Protocol of the new interface」から「DHCP client」を選択し「Device」は「”eth0” (wan) 」を選択して、《Save》→《Save & Apply》で反映させます。
つまりこういうことです。
LAN インタフェースのデバイス設定を eth0 から br-lan にし、WAN インタフェースを新規追加して、こちらを eth0 にする、ということです。
これによって Rpi3 の LAN ポートが WAN になるというわけです。
さて、この WAN ポートをメインルーターの LAN ポートに繋ぐのですが、このあとの設定に備えて、メインルーターが 192.168.1.0/24 の場合は、Rpi3 側の LAN インタフェースを 192.168.1.0/24 以外にする必要があります。
メインルーターが 192.168.1.0/24 以外の場合は、変更する必要はありません。
変更する場合は LAN インタフェースの IPv4 アドレスを変更します。
ここではメインルーターが 192.168.1.0/24 以外を前提にこのあとの設定をします。
Rpi3 の LAN ポートは WAN ポートになっているので、メインルーターの LAN につなぎます。
以上で WAN がメインルーターからアドレス付与されて、Rpi3 に接続したクライアントは、インターネットアクセスができる状態になっています。
インターネットアクセスできないときは、DNS 未設定のケースと思われます。
ターミナルから CLI で vim /etc/resolv.conf とし、
nameserver 1.1.1.1 を最終行に追加して公的 DNS を有効にします。
これで Rpi3 が OpenWrt による 無線LAN ルーター になり、インターネットアクセスができるはずです。

インターネット接続できているので DS-lite 設定やその他に備え、いくつかのパッケージをインストールします。
【System】→【Software】→《Update lists...》をクリックし、パッケージリストを最新化します。
そして、「Filter:」欄に下記のパッケージ名を入力して一つずつ《Install》します。
・luci-i18n-base-ja(日本語化)
・usbutils(USBポートの検査)
・ds-lite(DS-lite のパッケージ)
・kmod-usb-net-asix-ax88179
(Buffalo LUA4-U3-AGT・USB-LAN アダプター用のドライバー)
DS-lite パッケージは再起動しないと有効になりませんので、ここでいったん再起動しておきます。
luci-i18n-base-ja のインストールにより、以降は日本語メニューになります。
以上で Rpi3 が無線LAN 付きのトラベルルーターになります。
【その2】OpenWrt で DS-lite による 無線LANルーターにする
DS-lite を設定して IPv4 over IPv6 対応の 無線 LAN ルーター にしていきます。
まずは IPv6 対応のために WAN6 インタフェースを作成します。
【ネットワーク】→【インタフェース】で《インタフェースを新規作成》をクリックします。
・名前 :wan6
・プロトコル:DHCPv6クライアント
・デバイス :”eth0” (wan)
を設定し《インタフェース作成》とします。
DHCPサーバータブをクリックしリレーモードにします。
詳細設定のカスタムDNS に 2606:4700:4700:1111 または 2001:4860:4860::8888 を設定します。
これは IPv6 の公的 DNS 設定になります。
ファイアウォールの設定を確認します。
xpass と wan6 がファイアウォールゾーン設定されているか?
《保存》→《保存&適用》します。
次に【ネットワーク】→【インタフェース】で《インタフェースを新規作成》をクリックし、xpass インタフェースを追加します。
・名前 :xpass
・プロトコル:Dual-Stack Lite (RFC6333)
として《インタフェースを作成》をクリックします。
その他の設定と確認
LAN インタフェースの【詳細設定】でカスタムDNS として IPv4 公的DNS を設定します。
DHCPサーバータブに移り、IPv6設定をリレーモードにします。
《保存》→《保存&適用》します。
xpass インタフェースの詳細設定で、トンネルインターフェースでMTUを使用欄を 1280 から 1460 に変更します。
ファイアウォール設定で、ファイアウォールゾーンの割り当てを確認します。
xpass と wan6 がファイアウォールゾーンに設定されているか?
次に WAN インタフェースの無効化設定をします。
・プロトコル:アンマネージド
・デバイス :未設定
とし《保存》します。
最後にファイアウォールの設定を確認・修正します。
あと一息で DS-lite 設定が終了します。
【ネットワーク】→【ファイアウォール】と進みます。
[LAN] → [WAN] の《編集》をクリックし、次の内容になっているかを確認します。
《保存》で戻ります。
[WAN] → [REJECT] の《編集》をクリックし、次の内容になっているかを確認します。
《保存》で戻ります。
《追加》をクリックし、xpass のファイアウォール設定をします。
《保存》で戻ると最終的に次のようになっているはずです。
Software flow offloading と Hardware flow offloading にチェックを入れます。
ネットワークアクセスが多少速くなるらしいです。
以上で DS-lite の設定ができているはずです。
確認のため、いくつかのサイトをアクセスしてみます。
https://test-ipv6.com/index.html.ja_JP をアクセスします。
IPv6 が 10/10 になるかを確認します。
https://www.yahoo.co.jp/ をアクセスします。
yahoo は IPv4 オンリーサイトなので IPIP カプセル化の確認ができます。
http://check.xpass.jp/ をアクセスして《確認》ボタンを押し、xpass の状態を確認します
以上で DS-lite の設定が完了です。
最後に・・・
ネットワークアクセス速度は DL/UP ともに約 90 Mbps です。
Rpi3 は USB2.0 ですし、WiFi も 2.4GHz/802.11bgn で、LAN ポートも最大 100 Mbps ですから、これ以上はでません。
ですので VDSL 方式ならば性能的にはつり合いますが、1Gbps 以上の回線では性能不足を感じます。
また GL-MT300N の方が 3,000 円程度で手に入りますので、格段にコスパが優れています。
Rpi 3 b+ または Rpi4 ならば USB3.0 ポートがありますし、WiFi も 5GHz/802.11ac ですからもっと速度性能はよくなると思いますがどうでしょうか。
OpenWrt ルーターとしてならば GL.iNet(AXT1800 やMT2500 が性能的におすすめ)の方をおすすめします。
Raspberry Pi は小型 Linux マシンとして使う分にはよいと思いますが、OpenWrt にするともったいない気がします。