Elecom WRC-X3200GST3 に OpenWrtをいれて、IPoE + PPPoEでつなぐ
おはようございます。watura です。 先日、note アプリチームで年末の技術投資Daysと題して,業務とは関係のない技術投資を行なう2日間を実施しました。
アプリとは違うこと、かつ、興味があることを2日間やる。よし!ルーターにOpenWrtをいれるぞ!ということでやってみました。
なお、ルーターにOpenWrtなんで?流れはこのマガジンに記事を追加していくつもりです。
OpenWrtとは
メリット
Geminiにメリットを簡潔に!おねがいしたら長々と返してくれました。めっちゃはやくていいんですけども。
ELECOMのWRC-X3200GST3-B
OpenWrtをいれるルーターはELECOMのELECOMのWRC-X3200GST3-Bになります。このルーターについても生成してもらいました。
なお、独自機能、セキュリティ機能はOpenWrtで消し飛ばすので関係ないです。現在、ASUSのルーターをつかっているのですが、そのルーターをAPとしてつかい、X3200GST3は有線ルータとしてつかいます。なので、無線機能についてもどうでもいいやという感じになります。
OpenWrtのインストール
スクショをとりながらすすめていたらよかったのですが、わすれていたのでスクショ等はありません。なお、残念すぎるくらい簡単にOpenWrtをインストールできます。ルーターによってはかなり面倒そうなものもたくさんあるので、簡単なルータでよかったです。
ネットワーク設定
ネットワーク設定をしていきます。
PPPoE(IPv4)
自宅サーバーを動かしているため、DS-LiteなどのIPv4 over IPv6 はあまり嬉しくありません。今使っているIIJではPPPoEとIPoEを一緒につかうことができるので、PPPoEを使うようにしています。
Network→Interfaceで、wan を編集します。画像ではpppoe-wanになっていますが、初期状態の場合はDHCPになっていたと思います。
設定画面をひらき、ProtocolをPPPoEにします。そして、IDとパスワードを入力します。保存したら Save & Applyをして、接続してくれることを祈ります。セッション情報などの関係か、つながるまでに時間がかかる場合がありました。
これで、PPPoE(IPv4)接続が出来るようになりました。
IPoE(IPv6)
wan6をまずは設定します。wan6の設定画面をひらき、DHCP Serverを開きます。DHCPをセットアップする的なボタンが表示されていると思うのでセットアップします。
IPv6 Settingをひらき画像のようになるように設定します。
つぎに、br-lanも設定します。
こちらも同様にDHCP→IPv6 Settingsを開きます。
そして、同様に全部relay modeにします。
Save & Apply します。これで、IPv6もつながります!
とかで、IPv6かどうかをみれます。詳しくは OpenWrt フレッツ光 IPoE 設定で検索するといっぱい出てきます。
どハマりポイント(MacだけIPv6でつながらなくなった)
さて、ここまでほぼほぼAIで生成してもらいながら書いてきました。書いてきたというよりはコピペしてきました。さて、検索したらいっぱい出てくるよ!と書いたものの、今回遭遇した事態についてかかれているページがほぼ見つからなかったので、メモとして残しておきます。
発生した事象というのが、IPv6での接続がすごく不安定でだいたいIPv4だけになるというものでした。
現象
1回IPv6でつながった
何かがおこってつながらない端末がでてくる
iPhone つながる
Ubuntu つながる
iPad つながる
Mac つながらない
Mac はもう二度とつながらない
ルーターを初期化してやり直したらつながった
mac 2台のうち1台がつながっていたタイミングとかもあったので、なかなか状態がわからず、諦めようとしていました。
ルーターを初期化した後、安定してつながっていたのですが、間違えてルーターのコンセントを引っこ抜いてしまうというミスをしました。
そして、macだけがつながらなくなりました。。。
なにか、キャッシュされているものが消えた…
ただしく、通信するためにはIPアドレスとマシンの関係を知る必要があります。猛烈にざっくりと書くと
ルーター「 2400:abcd:1234:xxxx:ssss ってだれですか?」
Mac 「はい!私です。MACはAB:12:CD:EF:GGです。」
ルーター「覚えておくね!では、パケットどうぞ!」
次回からは、覚えているので、「パケットどうぞ」だけですみます。
これは、IPv4でもIPv6でも行われていることなんですが、IPv6だと少しややこしさがあるようです。そして、そのややこしさのせいで今回の問題が発生してしまったようです。
ULAとLLA
ULAとLLAというものがあり、これが今回の原因だったようです。Claudeの説明を読んでもよくわからないのですが、GlobalなIP, ローカルのIP, もういっこLocalなIPという3種類のIPをもつようです。
そして、MacはULAを使った宛先の問い合わせには返事をしないとのIssueがありました。
対処方法としては、問い合わせにULAを使わないようにするだけです。
Interface → Global Network Optionsに IPv6 ULA-Prefix を空にします。Save & Apply をして再起動もしておきます。
Status → Routing → IPv6 Routing → IPv6 Neighbours にMacのIPアドレスがあれば成功です。(再起動直後だと問い合わせが発生していないので、まだないかもしれないです)mac以外だとULAがセットされた問い合わせでも返事してくれているようなので、動いているようです。(iOSもちゃんと返事する)
これで、IPv6も安定して使えるようになりました。
ついでにPrometheus/Grafanaでグラフを見れるようにしてみました。
まとめ:技術投資Days
IPv6というものや、ルーターを含めてIPv6を構成するいろいろなものについての理解が少し深まりました。LLAとULAの違いとかまだ、試験にでてきたらxをとってしまいそうなところも多々あるのですが、知識が増えたという…ではよかったのではないかと思います。
社会人をしているとこういう一般的な技術仕様とかに関することって勉強する機会があまりないので、よい、投資になったのではないかと思います。
こういう、コンピュータサイエンスにはいってきそうな、幅広い知識はまた勉強したいですね。
なお、ds-liteによる接続もわりとさくっとできていて、2日間のうちの6割くらいはULA問題の調査にかかっていました。
また、同時に物理的に2.5GbEでmacつないだり2.5GbEスイッチいれたりとかってして遊んでいたので,その時間も含まれています。
1GbEのRPiにたいして、2.5GbEのmacからiperf3をしたら、1GbEだったときよりちょっと早くなったりしていました。
RPiにもUSBで2.5GbEアダプタをつないだのですが、Clientとしてなら早くなったのに、サーバーとしてだとめっちゃ遅いという謎な現象も発生していました。ここは調査していないですが、USB SSDで起動しているのも原因の一つ?とちょっと考えています。