清水理史の「イニシャルB」
DS-Liteルーターを自前で! シングルボードコンピューター「NanoPi R2S」をOpenWrtで使う
2021年4月5日 06:00
「NanoPi R2S」は、中国のFriendlyELECが発売しているシングルボードコンピューターで、例えるならRaspberry Piのような製品だ。有線LANポートを2基搭載しており、ルーターとして利用するのに適している。
通常は同社が提供するFriendryWrt、もしくはUbuntuで動作させることが多いが、今回はSnapshot版のOpenWrtを使って、DS-Lite対応のルーターとして構成してみた。
RK3288搭載のギガビット対応デュアルLANボード
NanoPi R2Sは、RockchipのRK3288(クアッドコアのCortex-A53で1.3GHz)と1GBのメモリを搭載したシングルボードコンピューターだ。
同製品の最大の特徴は、2基搭載されたLANポート。オンボードのギガビット対応WANポート(RTL8211E)に加え、内部的にUSB 3.0接続されたギガビット対応のLANポート(RTL8153B)を搭載し、これらを使えばルーターとしての構成が可能となっている。
従来版のNanoPi R1Sと異なりWi-Fiは搭載しなくなったが、有線ポートがそれぞれ最大941Mbpsとフルスピード化されたことで、小型ながら高速な処理が可能な自作ルーターとして利用可能となった。
筆者は2020年11月ごろに購入(5000円前後)したため、手元にあるのは旧型の筐体(旧製品のNanoPi R1Sと同じイエロー筐体)が採用された製品だが、現在は放熱のためのスリットが入った、より質感の高いブラック筐体へ変わっている。
後継であるRK3399を採用した最新版「NanoPi R4S」もすでに発売されている。5000円ほど高価とはなるが、用途次第では処理性能の高いR4Sの方を購入するのもいいだろう。
なお、同様のことはRaspberry Pi4とUSB接続の有線LANアダプターを組み合わせても可能なので、LANポート内蔵のコンパクトさにこだわらないなら、利用者が多くノウハウが豊富なRaspberry Piの利用もお勧めしたいところだ。
FriendryWrtではDS-Liteが動かない
同製品は、本来であれば専用にカスタマイズされたFriendlyWrt、もしくはUbuntuベースのFriendlyCoreで動作させるようになっている(詳細はFriendlyARM WiKiのNanoPi R2Sの項目を参照)。
最新版ではDockerが統合され、ルーターとしてだけでなくNextCloudやMinecraft Serverとしても動作させることができるなど、多機能化されているが、今回はそのFriendlyWrtではなく、OpenWrtを利用することにした。
当初はFriendlyWrtで利用しようと考えていたが、使ってみると筆者宅の環境で利用している回線ではDS-Lite接続ができなかった。FriendryWrtでもパッケージを追加すればDS-Liteへの対応が可能なのだが、DS-Liteパッケージに必須のkmod-ip6-tunnelモジュールがインストールできなかったためだ。
FriendryWrtもバージョンアップが重ねられているため、今後は使えるようになる可能性があるが、本稿執筆時点ではFriendryWrtでいろいろ試行錯誤するより、OpenWrtを使ってしまった方が速そうなので、そちらを利用することにしたというわけだ。
OpenWrtをインストール
それでは、実際にセットアップしていこう。
まずはOpenWrtをダウンロードする。前述したように、NanoPi R2SはRK3288を搭載しているが、このチップ向けの安定版は提供されていないため、開発中のSnapshot版を利用する。
openwrtのダウンロードページから、「Development Snapshot builds」を選択し、「rockchip」「armv8」と選択し、「friendlyarm_nanopi-r2s-ext4-sysupgrade.img.gz」をダウンロードすればいい。
ダウンロードしたファイルはmicroSDカードへ書き込む。ツールはいろいろあるが、今回はRaspberry Pi用の「Raspberry Pi Imager」を利用した。カスタムでダウンロードしたファイルを指定して書き込みを実行するだけと簡単だ。
OSを書き込んだら、NanoPi R2SmicroSDカードをセットし、WANとLANにケーブルを接続し、最後に電源供給用のUSBケーブルを接続して起動すればいい。
しばらくすると、OpenWrtが起動し、LAN側がリンクアップしてPCにIPアドレスが割り当てられる。標準では192.168.1.0のネットワークで構成されるので、この範囲のアドレスが割り当てられるはずだ。
GUIをインストールして日本語化
OpenWrtが起動したら、まずはSSHで接続する。標準ではGUIがインストールされていないため、SSH経由でインストールする必要がある。
teratermなどのターミナルアプリを利用して、「192.168.1.1」にSSH接続し、標準のroot/passwordでログインする。
まずは、「passwd」コマンドでrootのパスワードを変更し、その後「opkg update」でパッケージの一覧を最新のものへと更新する。
ここまでの準備ができたら、「opkg install luci」でGUIをインストールすれば完了だ。
SSHを切断し、LAN内のPCなどからウェブブラウザーで「http://192.168.1.1」へアクセスすれば、OpenWrtの管理画面が表示される。
最初に基本的な設定を済ませておこう。「System」の「System」でタイムゾーンをAsia/Tokyoに変更し、続いて同じく「System」の「Software」から日本語化パッケージをインストールする。
「Update Lists」で一覧を更新後、「日本語」で検索すると日本語化パッケージが一覧表示されるので、とりあえず「luci-i18n-base-ja」をインストールしておく。
OpenWrtでは、機能ごとに日本語化パッケージが用意されているので、baseだけだと完全に日本語化されない。必要に応じて、ほかの日本語パッケージもインストールしておくといいだろう。
DS-Lite接続を設定する
今回利用したバージョンのOpenWrtでは、標準でIPv6が有効になっていたので、続いてIPv4接続用のDS-Lite接続を構成する。
「Software」からリストを更新し、「DS-Lite」で検索してパッケージをインストールする。インストールが完了したら、モジュールを認識させるために、OpenWrtをいったん再起動しておこう。
DS-Lite接続を利用するには、「インターフェース」で「WAN」の設定を編集する。標準では「プロトコル」が「DHCPクライアント」になっているので、これを「Dual-Stack Lite(RFC6333)」に変更し、「DS-Lite AFTRアドレス」に接続先のアドレス(transixの場合は「2404:8e00::feed:100」)を指定しておけばいい。
これで、接続は完了だ。
試しにfast.comで速度を計測してみたが、下りで600Mbps、上りで520Mbpsだったので、パフォーマンスは優秀だ。小型の有線LANルーターとしては悪くない印象だろう。
広告ブロック機能など、パッケージが豊富なOpenWrt
以上、FriendlyElecのNanoPi R2SにSnapshot版のOpenWrtをインストールし、DS-Lite対応のルーターとして構成してみた。
思ったより簡単にできたので試してみる価値はあるが、1つ注意しなければならないのは、開発中のSnapshot版を使っているという点だ。
ちょうど本稿を執筆しているタイミングもそうだったが、途中でアップデートされてカーネルのバージョンが変わったりすると、パッケージがインストールできなくなることなどがある。テスト用で使うなら問題ないが、実用環境で使うのは避けた方がいいだろう。
しかしながら、OpenWrtはパッケージが豊富で、いろいろな機能を後から追加できる。広告ブロック機能などが人気があるようだが、VPNサーバーとして構成するような使い方もできるので、いろいろ試してみるといいだろう。