goo blog サービス終了のお知らせ 

gooブログはじめました!

やってみると意外と簡単、ルーターの自作に挑戦。①

◯ 多くの機能を備えるルーター、手軽に自作する方法はこれだ。

 「自作する」「組み立てる」という行為は、組み立てる対象を理解するのに役立つ手段の1つだ。ネットワーク機器の中で自作できるものでは、ルーターが最適だ。

 シンプルなLAN(Local Area Network)スイッチのほうが簡単に自作できそうだが、LANスイッチはその性質上、多数のLANポートを備えていないと意味がない。その点、ルーターであればLANポートが2基あれば成り立つ。LANポート2基で成り立つ機器としてはファイアウオールもあるが、シンプルなファイアウオール機能であればルーターが搭載できる。

多数の機能が欠かせない。

 ここでルーターが備えておくべき機能を整理しておこう(図1)。根幹となるのはルーティングテーブル*1を参照し、IP(Internet Protocol)アドレスに応じて適切なポートからパケットを送出するルーティング機能だ。しかしこれについては、Linux(リナックス)やWindowsなどの汎用OS(Operating System)を使えば標準で備えている。

図1●ルーターを自作するには
図1、ルーターを自作するには、
ルーターには多岐にわたる機能が求められる。基本となるIPパケットの転送はもちろん、ルーティング情報の交換に使われるルーティングプロトコルへの対応。さらに必要に応じてアドレス変換やIPアドレスの割り当てなどだ。これを小型パソコン(ミニPC)やRaspberry Piなどの汎用ハードウエアで実装すればルーターを自作できる。

 上流のネットワークに接続する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)。

図2●代表的なオープンソースのルーター
図2、代表的なオープンソースのルーター、
ルーターの様々な機能をパッケージとしてまとめているディストリビューションとしてはOpenWrt(オープンダブルアールティー、a)とVyOS(ヴィオーエス、b)がある。VyOSはもともと「Vyatta(ヴィヤッタ)」として開発されていたものだが、開発元が買収され、その後事業が終了してしまったため、有志の手によりVyOSとして再出発した。

 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の安定版は有償製品となり、インストール可能なイメージとして公開されているのは開発版のみとなっている。なお安定版はソースコードが公開されているので自力でビルドすれば利用できる。

*1、ルーティングテーブル。
宛先IPアドレスとそこに到達するにはどのインターフェース(LANポート)からパケットを送出すればよいかを記述したテーブル。パソコンやルーターなどが備える。
 
*2、ダイナミックルーティング。
動的に経路情報を変更することを指す。ルーター同士が情報を交換し合うことによって、ネットワークの状況に応じてパケットを送り出すインターフェースを動的に変更できるようにする。
 
*3、スタティックルーティング。
利用者や管理者が手動で経路情報を設定することを指す。
 
*4、DHCP。
IPアドレスやDNSサーバーの設定など、ネットワーク関連の設定情報を配布するプロトコル。
 
*5、名前解決。
ドメイン名からIPアドレスを知ること。
 
*6、DNS。
ドメイン名とIPアドレスの対応関係を管理するシステム。
 
*7、NATやNAPT。
NATはポート番号を変えずにIPアドレスを変換する処理、NAPTはIPアドレスとポート番号を変換する処理。LAN内にある複数の端末からインターネットに接続する場合、NAPTを使ってプライベートIPアドレスをグローバルIPアドレスに変換する。ポート番号を使って端末を識別する。
 
*8、GPL。
米Free Software財団が策定したオープンソースのライセンス。GPLに基づくソフトウエアを改変して利用する場合は、GPLライセンスが適用されてソースコードを公開する必要がある。
 
*9、「Vyatta」という名称。
Vyattaとして公開されていた時期に、2011年8月号特集「ネットワークの“自作”に挑戦」や2014年6月号の連載「無料で作るリモートアクセスVPN」の第2回「VyattaでL2TP/IPsecを使う」などで取り上げている。

ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「〝 たぬき の 「 スマホ & パソコン 」 ワールド 〟」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事