◯ 多くの機能を備えるルーター、手軽に自作する方法はこれだ。
「自作する」「組み立てる」という行為は、組み立てる対象を理解するのに役立つ手段の1つだ。ネットワーク機器の中で自作できるものでは、ルーターが最適だ。
シンプルなLAN(Local Area Network)スイッチのほうが簡単に自作できそうだが、LANスイッチはその性質上、多数のLANポートを備えていないと意味がない。その点、ルーターであればLANポートが2基あれば成り立つ。LANポート2基で成り立つ機器としてはファイアウオールもあるが、シンプルなファイアウオール機能であればルーターが搭載できる。
多数の機能が欠かせない。
ここでルーターが備えておくべき機能を整理しておこう(図1)。根幹となるのはルーティングテーブル*1を参照し、IP(Internet Protocol)アドレスに応じて適切なポートからパケットを送出するルーティング機能だ。しかしこれについては、Linux(リナックス)やWindowsなどの汎用OS(Operating System)を使えば標準で備えている。
上流のネットワークに接続するLANポートが複数ある場合は、ダイナミックルーティング*2を想定してRIP(Routing Information Protocol)やOSPF(Open Shortest Path First)などのルーティングプロトコルにも対応できるとよいだろう。ただLANポートが2基しかない場合、一般に上流と下流のネットワークを分ける目的で使われるので、スタティックルーティング*3の機能だけで十分だ。
自作ルーターに端末が接続することを考えると、DHCP(Dynamic Host Configuration Protocol)*4を使って端末にIPアドレスを配れるようにしたい。またLAN内で端末の名前解決*5をしたい場合はDNS(Domain Name System)*6サーバー機能が求められるし、配布するIPアドレスによってはNAT(Network Address Translation、ナット)やNAPT(Network Address Port Translation、ナプト)*7といったアドレス変換機能が必要になる。
こうした多くの機能を詰め込んだソフトウエアを、Raspberry Pi(ラズベリーパイ)に代表されるようなワンボードコンピューターやパソコンといった汎用的なコンピューターに組み込めば、ルーターを自作できるというわけだ。
一括して組み込むソフトも。
一連の機能を個別に組み込んでこそ自作といえるかもしれないが、各機能を設定するユーザーインターフェースがバラバラになると使い勝手が悪くなる。コマンドラインで設定するのも慣れれば悪くはないが、設定用コマンドを個々に覚えておくのは結構大変だ。
そこで今回はルーター用OSとしてまとめられているLinuxディストリビューションを使う。自作感はやや薄れるものの、これならば統一された操作環境が用意されるので設定が楽になる。何より様々なソフトウエアの組み合わせを調整する必要がないので、整合性が取れなくなる心配もない。
ルーター用ディストリビューションとしては、もともと無線LANルーターのファームウエアが公開されたことに端を発する「OpenWrt(オープンダブルアールティー)」と、商用ソフトのオープンソース版としての流れをくむ「VyOS(ヴィオーエス)」がある(図2)。
OpenWrtの大本は米Linksys(リンクシス)が同社のWi-FiルーターをGPL(GNU Public Lisence)*8に準拠させるため公開した、「WRT-54G」のソースコードである。OpenWrtのWrtはこの機器名からきている。
公式サイトによるとOpenWrtはLinuxカーネルに様々なSoC(System on Chip)やネットワークインターフェース用のパッチを適用したもので、ベンダー固有のコードをGPLに準拠できるように新規に実装しているという。
もう1つのVyOSはもともと、「Vyatta(ヴィヤッタ)」という名称*9で公開されていた商用ソフトのオープンソース版である「Vyatta Core」を継承している。Vyattaは買収などを経て開発中止となり、Vyatta Coreの開発も停止したため分岐した。
ただし現在のVyOSの安定版は有償製品となり、インストール可能なイメージとして公開されているのは開発版のみとなっている。なお安定版はソースコードが公開されているので自力でビルドすれば利用できる。
宛先IPアドレスとそこに到達するにはどのインターフェース(LANポート)からパケットを送出すればよいかを記述したテーブル。パソコンやルーターなどが備える。
動的に経路情報を変更することを指す。ルーター同士が情報を交換し合うことによって、ネットワークの状況に応じてパケットを送り出すインターフェースを動的に変更できるようにする。
利用者や管理者が手動で経路情報を設定することを指す。
IPアドレスやDNSサーバーの設定など、ネットワーク関連の設定情報を配布するプロトコル。
ドメイン名からIPアドレスを知ること。
ドメイン名とIPアドレスの対応関係を管理するシステム。
NATはポート番号を変えずにIPアドレスを変換する処理、NAPTはIPアドレスとポート番号を変換する処理。LAN内にある複数の端末からインターネットに接続する場合、NAPTを使ってプライベートIPアドレスをグローバルIPアドレスに変換する。ポート番号を使って端末を識別する。
米Free Software財団が策定したオープンソースのライセンス。GPLに基づくソフトウエアを改変して利用する場合は、GPLライセンスが適用されてソースコードを公開する必要がある。
Vyattaとして公開されていた時期に、2011年8月号特集「ネットワークの“自作”に挑戦」や2014年6月号の連載「無料で作るリモートアクセスVPN」の第2回「VyattaでL2TP/IPsecを使う」などで取り上げている。