✍🏻

Raspberry Pi 5とRouter HATを使い、OpenWrtで2.5G対応ルータを作る

に公開

今年のGWはいくつもの工事をして、自環境のアップグレードをしていたのですが、その一つを紹介しようかと思います。

はじめに

きっかけは値上げでした。

  • 一部サービス等の月額利用料改定および割引の終了について(NTT東日本)

https://flets.com/2024_rebalance/

我が家では長らくフレッツ光ネクストのマンションタイプ VDSL方式を使ってきたのですが、今年度から値上げが決まり、光配線方式と同額の金額に設定されたのです。

じゃあ光配線方式にしたほうがお得じゃん、と思ったので、NTTに電話して工事を手配したのですが、工事業者は宅内で数十分四苦八苦した結果、あまりの工事の難易度[1]に悲鳴をあげて帰っていきました。

どうしたもんだろうと管理会社に相談したら、当初『雀の涙みたいな速度ですよ…』と言っていたはずのマンション据付の通信回線が光までアップグレードされた(!)のことで、目出度くVDSL解約の運びとなりました。

VDSL回線では混雑対策のためV6プラス(MAP-E)を使っていた関係で、市販のルータ(TP-Link Archer A10)を使っていたのですが、通信回線変更に伴って宅内ネットワーク環境を見直すことにしました。

ネットワーク構成の変更

こんな感じで構成を見直し、既存構成に抱えていたいくつかの問題意識を解決することにしました。

機能分割

WiFi 5が長らく居座り続けていたのは、ルータに統合されており、各機能の更新が円滑にいかなかったからでして。

各々の独立性を確保することで、将来に渡って両機能を個別に更新できるようにすべく、両機能を分割することにしました。

WiFi機能はアクセスポイントにもなる中継機を別途調達して構成しています。これで、WiFiの高速化をルータ機能に関係なく実施できるようになりました。

https://www.amazon.co.jp/dp/B0BH7Y3SDB?th=1&linkCode=ll1&tag=httpthimblogf-22&linkId=7ac820d75922fc1179ce81f98f662601&language=ja_JP&ref_=as_li_ss_tl

また、RouterをSBC(シングルボードコンピュータ)エッジデバイスで構成することで、NASとの統合も視野に入りましたが、境界面で動かすルータと宅内サーバとして、あえて分離して構成することにしました。

エッジデバイス調達の容易性確保

これはNASを見ながら考えていたことでした。

我が家のNASは数年前にNanoPi M4をベースとして構成したものでしたが、

https://qiita.com/Dimeiza/items/aa5243c468e3487ad6e2

セキュリティアップデートはぼちぼち行われていたものの、最近のOS更新の選択肢は結構狭まってきている印象がありました。以前使用していたArmbianも、NanoPi M4に対してはCommunity Supportに移行し、品質レベルも必ずしも維持されなくなっています。

Raspberry Piの成功以来、いくつものメーカーが多種多様なEmbedded LinuxのSBCを出したものの、長期に渡って安定し、かつ多様な選択肢を提供できるボードは限られているなぁと思ったのです。

そこに来ると、やはり王者Raspberry Piは世界中に浸透しているだけあって、OSの品質、後方互換性、選択肢、パーツ互換性等で長期に渡って安心できる選択肢だなぁと思ったので、原点に帰ってRaspberry Piベースで我が家のエッジデバイスを再構成することにしました。

(NAS更新については、時間を見て別の記事を書こうと思っています)

ルータの機器構成

今回はこんな感じで組んでいます。

機器種別 機器名 解説
ボード Raspberry Pi 5 8GB 4Gでも良かったかもしれませんが、通信機能に関わるサービス追加と、将来の他用途への流用を考慮しつつ、とりあえずこれぐらいにしました。
ネットワークI/F Radxa Dual 2.5G Router Hat 今回のポイント。
ケース Raspberry Pi 5用 パッシブクーリング CNCケース(ボックス) シルバー NASにも使ってますが、ファンレスで結構冷えるケースです。
ACアダプタ ACアダプター【PSE適合品】 12V, 3A, 外径5.5mm, 内径2.5mmのものを選びましょう。

ネットワークI/F

ここが本記事のポイントで、最近出たこれを使っています。

https://radxa.com/products/accessories/dual-2-5g-router-hat/

このHATはRadxaのボードだけではなくRaspberry Pi 5に互換性を持つ、2.5GのEthernetポートを2つ持つHATなのですが、それだけではなく、

  • M.2 (〜2280)のSSDを搭載可能
  • さらにその上にM.2 Miniアダプタボードを増設可能

とかいう、割と攻めた構成になっているボードです(なのでルータ兼NASとして使うことも普通に可能)。

ただ、このボードを使う際にはType Cベースの給電(5V/5A)では不足する可能性があるそうで、12v/3AのACアダプタによる給電が推奨です。

このボードはいくつかのディストリビュータが取り扱っているのですが、私はみんな大好きAliexpressから調達しました。

https://ja.aliexpress.com/item/1005008753621187.html?gatewayAdapt=glo2jpn

ケース

Raspberry Pi5は基本的にアクティブクーラー(ファン)を使うのがデフォルトで、公式のクーラーもファン付きになっています。

https://www.switch-science.com/products/9253

特に高負荷で使用する際にはサーマルスロットリング回避のためにアクティブクーラーを使うことが望ましいのですが、私はコンピュータに関しては静音原理主義者で、管理下の機器はなるべくファン音を抑えて構成する程度にはファンの音を気にする人なのです。しかも24時間稼働であることを考えると、寝ている間にファンが回ってうるさいという事態を避けたいわけです。

Raspberry Pi5ほどのスペックで、ルータ機能に特化させれば、恒常的に動作しているとはいえ負荷は低く抑えられるので、パッシブクーリングで問題なかろう、と判断しました。

こんな感じで冷却効果が検証されています。

https://www.youtube.com/watch?v=QianasxfWFA

一つ注意点があって、このケースを使う場合はフレキシブルケーブルをケースのスリット(以下画像の左側:EDA TECのロゴの左)に通してからRaspberry Pi 5のコネクタに接続する必要があります。

フレキシブルケーブルを通しながらつなぐのが多少やりづらいので、ケーブルを傷つけないように気をつけて接続しましょう。

OSのインストール

OSはOpenWrtを使うことにしました。

https://firmware-selector.openwrt.org/?version=SNAPSHOT&target=bcm27xx%2Fbcm2712&id=rpi-5

Raspberry Pi OSやUbuntuなど汎用OSを使っても良かったのですが、ルータ+αの機能であれば、まずは特化OSを使ったほうが楽かなと。

インストールも非常に簡単で、FACTORY(EXT4)でダウンロードしたイメージを、Raspberry Pi ImagerでSDカードに書き込むだけです。

Radxa Dual 2.5G Router Hatを機能させる

インストールしただけではすぐにルータとして使えるわけではないので、しばらく旧構成環境下でインターネット接続を確保しながら構成します。

一度ローカルログオンして初期設定(rootのパスワード設定など)を行った後、Raspberry Pi 5内蔵のネットワークI/Fにログオンします。

一つ面倒なのが、現時点(2025/4)のOpenWrtでは、Radxa Dual 2.5G Router Hatがそのままでは有効化されないことです。

これを解決するために、まずはHatが認識されているか確認したいのですが、lspciをインストールせずに構成していたので、まずはlspciをインストールします。

opkg update
opkg install pciutils

lspciの出力を見ると、RTL8125 2.5GbE Controllerが含まれていることが分かるので、これを動かすためのドライバをインストールする必要があります。

alt text

調べてみたところ、OpenWrtではR8169ドライバを使うことでRTL8125を動かすことができるらしい[2]ので、インストールします。

opkg update
opkg install kmod-r8169

インストール完了後再起動し、ドライバのインストールとデバイス認識状況を確認します。

lsmod | grep -i r81

dmesg | grep -i 'r8169\|r8125\|ethernet'

ip a

eth0がRaspberry Pi 5の内蔵Ethernetポート、eth1とeth2がHATのEthernetポートとして認識されています。

ルーティング(WAN/LAN I/F)の設定

OpenWrtの設定ファイルは/etc/config/networkというテキストファイルにあるので、このファイルを開きます。

vi /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 'fdc5:c0ca:5425::/48'
        option packet_steering '1'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth1'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ip6assign '60'
        list ipaddr '192.168.10.1/24'

config device
        option name 'eth1'

config interface 'wan'
        option proto 'dhcp'
        option device 'eth2'

LAN I/Fはブリッジ(br-lan)に割り当てていて、br-lanのlist portsにHATの片方(eth1)を割り当てる形になっています。

HATのI/F有効化前には、list portsにeth0(Pi 5の内蔵Ethernetポート)を割り当てていて、両方を併記しながら内蔵ポートからHATポートへの移行を行いました。

list ports 'eth0'
list ports 'eth1'

WAN側からはIPv4でDHCPアドレスが振られることを確認していたので、HATの片方のI/F(eth2)を指定してdhcp方式でアドレスを割り付けるように設定しています。

設定が完了したら、この設定を反映すべく、ネットワーク機能を再起動します。

/etc/init.d/network restart

Web I/Fによる管理画面

先程の設定を反映すると、LAN側では192.168.10.1でルータにアクセスできるようになります。

ブラウザで192.168.10.1にアクセスすると、こんなログイン画面がでます。

パスワードを入力してログオンすると、こんな感じでStatusが見られます。

WAN/LANの各I/Fも機能しているようです。

パスワードを設定したり、HTTPS化することもできるようなので、パッケージの追加と合わせて、追々いじっていく予定です。

物理的な配置

こんな感じでルータを構成できたので、最後にNASと合わせて壁面に集約してみることにしました。

私の部屋には突っ張り棒を使うとデバイスを壁面に固定できるスペースがあるので、そこに配置しました[3]

前のルータと違って圧倒的に省スペース化したので、こんな感じに壁面埋め込み形ルータが爆誕しました。

おわりに

こんな感じで、古い市販のルータに代えて入手性の高い汎用デバイスを使い、高速かつ小型なルータを構成することができました。

またしても好奇心ドリブンで役に立ちそうなことができて、なかなか楽しかったです。

市販のルータにご不満のある方、エッジデバイスで手を動かしてみたい方、お時間のあるときにでもぜひお試しください。


ちなみにこの構成、最後に一つオチが付きます。

実は私の部屋のインターネット環境の最大通信速度は、だいたい200[Mbps] なのです。

そして、現状、宅内LANはGigabit Ethernet、つまり最大通信速度は1[Gbps] なのです。

要するにオーバーエンジニアリングにもほどがあるのですが、これができるのが趣味のコンピュータいじり、ってやつですよね。

脚注
  1. 工事業者いわく、私の居室は宅内配管が途中で切れており、床下から光ケーブルを入れてもコンセントまで上げられなかったのだとか。 ↩︎

  2. RTL8125B専用ドライバをビルドしても良いらしいです。 ↩︎

  3. 実は背面がコンクリートなので、ケースを密着させ、巨大なヒートシンクとして機能させています。 ↩︎

Discussion