NURO MAP-E と OpenWRT:安定した効率的なネットワーク接続を構築

イントロ

NUROが提供するHGW(ホームゲートウェイ)にうんざりしました。ブリッジモードに変更できず、ファームウェアの機能も散々です。さらに、最初に契約したのは2024年2月で、その時にはSGP200WというHGWを受け取っていました。それはIPv4+IPv6のデュアルスタックDHCPでした。しかし、1か月後に2.5gをサポートするNSD-G1000Tを試したくなり、変更を申請したところ、密かにMAP-Eに変更され、専用IPv4とお別れしました…。ソニーマーケティング末期に遭遇したのに、それでも逃してしまいました。HGWとMAP-Eのダブルデバフの下で、自分の機器に置き換えることを考えました。

準備

最初は先輩に相談し、彼のTL-ER2260Tのプランをそのまま採用する予定でした。しかし、彼自身はまだデュアルスタックを使用しているため、TL-ER2260TはOpenWRTの公式サポートがなく、非公式のクローズドファームウェアしかありません。ソフトウェアリポジトリも共有できないため、選択しませんでした。その後、QNAPのqhora-301wを調査しましたが、この製品の10gポートはRJ45口で、2024年3月の時点でOpenWRTがこのルーターをサポートするファームウェアの対応度は良くありませんでした。これらの機器はすべて中国から輸入する必要があり、チャンスは一度しかないという原則に基づいて、最終的には安定を求めてx86ソフトウェアルーターを選択しました。さらに、GPON ONUスティックもどれが使えるか分からないため、ODI、HuaweiNokia、Alcatelの4つのメーカーの製品をそれぞれ1つずつ購入しました。

ハードウェアの選定

実際、全工程で最も難しいのは選定の部分です。その後、機器がすべて届いたら、箱を開けて商品を確認します。気づけば、スイッチを選ぶのに失敗していました。1つのSFP+ポートと8つのRJ45ポートを選ぶべきだったのに、2つのSFP+ポートと4つのRJ45ポートを選んでしまいました。しかし、2台をつないで使用すれば問題なく使えます。 GPON ONUスティックはまずODIを試しました。最も高価だったためです。しかし、元のファームウェアが原因で、設定が正しくなかったようで、O5の問題が解決できませんでした。しかし、他のブログでODIで成功してO5を達成した事例も見ました。その後、HuaweiNokiaに切り替えました。どちらも自作のOpenWRTファームウェアで、既にNSD-G1000Tに切り替えていたため、GPON SNを設定すれば完璧にO5を達成できました。Alcatelのものは電源を入れずに箱に戻しました…。

箱へ戻す

コンセントの節約を考えて、GPON ONUスティックとメディアコンバーターを使用せずに、直接スティックをスイッチに挿入し、スイッチのVLANを設定してWANとLANを分離しました。そして、スイッチの2つのポートにそれぞれx86ソフトウェアルーターのWANとLANを接続しました。他のポートはすべてLANポートとして設定し、2年以上使用していたWiFiルーターもついにブリッジとして引退しました。配線と整理の作業を経て、いよいよ電源を入れて実験を開始しました。

MAP-E

まず、x86ソフトウェアルーターにOpenWRTをインストールします。ここでは、公式のファームウェアセレクターの製品ファームウェアを直接選択します。期待通りにDHCPIPv6アドレスを取得できます。ここでopkgを通じてmapパッケージをインストールし、このスクリプトを使用してMAP-Eに必要なパラメータを自動生成します。この点ではリポジトリの開発者に感謝です。これでIPv4も正常に動作するはずです。ここで少し余談ですが、以前OpenWRTを使用したことがなかったため、多くの部分で最初はどのように設定すればいいのか分かりませんでした。MAP-Eを完了した後、IPv6アドレスを取得できないことに気づき、最初はそのスクリプトの問題かと思いました。しかし、最終的には、IPv6アドレスを割り当てるためのプロトコルを設定していないことが原因であることが判明しました。SLAACかDHCPv6のいずれかを設定していないため、調査の結果、SLAACを設定してネットワークを正常に復旧させました。

完璧

IPv4 && Ping

ここまで順調だと思っていたのですが、IPv4Pingが動作しないことに気づきました。しかし、IPv6Pingは正常に動作していました。そこで調査を進めたところ、こちらに解決策が見つかりました。日本のISPのMAP-Eプロトコルの一部がmapパッケージで処理されていない部分があるようです。そのため、コードを手動で修正する必要があります。

IPv6 && Android

WiFiに接続したAndroidバイスでは、数時間後にIPv6接続が失われます。WiFiを一度切断して再接続することで正常に戻りますが、数時間後に再び失われる現象が起こります。この問題は他のルーターを使用していたときにも経験しましたが、その時はルーター自体のファームウェアが不十分で深く追求しませんでした。今はOpenWRTを使用しているので、しっかり調査する時が来ました。この問題の原因はシンプルです。Androidがディープスリープモードに入ると、RA(ルーターアドバタイジング)を失います。RAのライフタイムがデフォルトで1500秒であり、ディープスリープ後にライフタイムが切れると、新しいIPv6アドレスを取得できなくなります。この問題の解決策も簡単です。RAのライフタイムを最大値の9000秒に変更すれば、問題を解決できます(完全に解決するわけではありませんが、発生する頻度が大幅に減少します)。

参照