LinuxでPCルーター

最も初期に書いたこのページが実は結構見られているので、書き直さなきゃなー、とは思ったんですが、結局たいした事は書けませんでした(泣)。「PCルーター構築完全マニュアル」というページもあるので、よかったらそちらも見てみてください(追記 2001/10/27)。


家庭内LANというのは一つのシアワセであります。それにインターネット常時接続とくれば言うことありません。でも、ちょっとめんどくさそうだし、お金もかかりそう....というヒトは多いかもしれません。まあ、ちょっとはめんどくさいですけど、それはそれで楽しいものですし、お金をなるべくかけない方法はあります。その一つがPCルーターの使用です。いまでは家庭用のルーターと称するものが比較的安く出回っていますが、それでも2〜3万はするようです。PCルーターにするマシンはとうの昔に引退して押入れの中で眠ってるようなもので十分です。そーいうのがなくても中古で5000円も出せば余裕で手に入ります。

では、私が実際にやった2通りの方法を紹介しましょう。詳しいドキュメントはやはり困り果てるほどありますので、大まかな流れをつかめるように書くにとどめます。


floppyfwで構築する

floppyfw というのはフロッピー1枚に収められたLinuxです。これを起動すれば立派なルーターになります。サーバーとかを使わないならこの方法がおすすめです。構築も簡単です。ドキュメントは豊富にありますので、簡単に流れだけ書いておきます。ちなみに以下で使用したバージョンは 1.0.6 です。

http://www.zelow.no/floppyfw/からダウンロードしてくる。フレッツADSLなどPPPoEのヒトはそれ用のイメージをとってくるように。イメージというのは起動フロッピーを作る素のようなものと思っておけばよいです。

起動フロッピーを作ります。Linuxユーザーのヒトは落としてきたイメージからddで作ってください。Windowsのヒト用に細かく説明します。

起動フロッピーを作成するDOSユーティリティがあります。rawrite.exeというものです。いまはrawrite2.exeというのもあるようですが、そっちは使ったことがありません。まあ、どっちでもいいでしょう。このrawrite.exeはフリーでどこでも手に入ります。イメージをとってきたところにもあったと思います。ここでは例としてC:\hogeというディレクトリにあるとします(hogeは適宜読み替えてください)。話が簡単になりますので、さっきのイメージも同じC:\hogeに移動しましょう。

コマンドプロンプトを起動します。

コマンドを打っていきます。以下コマンドです。

> C:
> cd hoge
> rawrite


すると英語で「イメージを指定してよ」といわれますので

イメージファイルの名前を入力して ENTER

こんどは英語で「フロッピードライブはどこか?」といわれますので

aと打ってENTER

またまた英語で「よっしゃほんとによいのだな?」といわれますので

ENTER

これでフロッピーに書き込みが始まります。終われば起動ディスクの出来上がり。


では設定です。フロッピーの中にあるConfigというファイルを編集します。 フレッツADSL用の設定をします。他のパターンのヒトはそれぞれあるのであとは調べてみてください。

プロバイダから与えられているアカウントとパスワードを使います。


USER_IDENT="hoge@nifty.com"
USER_PASSWORD="password"


といったようにします。USER_IDENTの@以下のドメイン名はNTTから渡された紙をよく見て記入します。

また、クォーテーションは必須ではないですが、つけないとたぶん'*'の入ったパスワードなどを使ったとき誤動作すると思いますので、つけておきましょう。

ネットワークの設定をします。デフォルトのままでよかったらほっといてかまいません。 デフォルトではネットワークは 192.168.1.0 になっています。

ネームサーバーを指定します。NAME_SERVER_IP1 のあたりを書きます。

以上です。これで動きます。しかし、実際にはFirewall.iniを編集してちゃんとパケットフィルタリングしたほうがヨイです。というか、してください!ドキュメントは困るほどあります。ipchainsというキーワードで探してみてください。

では起動しましょう。ルータマシンにフロッピーをさしてスイッチオン。結線してネットワーク内のマシンからテストしてみましょう。

古くなったノートPCで動いてくれると大変嬉しいです。省電力で、静か。NIC2つの認識がキモですかね。いずれやってみたいです。

追記:実は他のとあるディストリビューションで既に実現しています。近々紹介しますがなかなかのもんです(2001/10/27)。


■ バージョン 1.0.6 から 1.0.11 への移行(追記 2001/05/25) ■

現在私の環境では結局ノートPCで構築したルーターが稼働しているのですが、floppy-fw がバージョンアップしていたのでデスクトップ機で試してみました。1.0.11 というこのバージョンはそれまで私が使用していた 1.0.6 とは大きく異なりますが、ここでは基本的な設定を変更する必要があったり、変更した方がよい部分だけ、その概要を書いておきます。

※NIC の認識順が変わった
使用したデスクトップ機は NIC 3枚挿しです。1.0.6 ではスロットの NE2000コンパチが上から順に eth0, eth1 となりましたが、1.0.11 ではオンボの3Com590がeth0, スロット上側の NE2000 コンパチが eth1 となりました。これは 1.0.7 から3Com59x 認識がサポートされたことによるのでしょう。

ということで、ケーブルを差し替えました。それだけ。

しかし、とりあえずこのデスクトップ機をいつか緊急時に使用することを考えて、HDDで起動するLinuxルータの設定を同様にしておきました。

/etc/sysconfig/network-scripts/ifcfg-eth0 〜 2

の内容をスライドさせるように書き換えます。

※Firewall.ini 内で 取得した IPアドレスが使用できるようになった。
それまではFirewall.ini 内ではコネクション確立の結果は参照できなかったので、記述に使用できませんでしたが、${ OUTSIDE_hoge } という変数で参照できるようになりました。これによって、さらに細かいパケットフィルタリングができるようになりました。ただ、それまではこれ無しでやってきたわけですから、変更が必要というわけではありません。


Laser5をインストールして本格的なルーターを作る

追記:古いので参考程度にしておいてください。「PCルーター構築完全マニュアル」というページがサイト内にありますので、そちらもご覧になってください。(2001/10/27)


はじめはfloppyfwでいいかな、と思っていたんですけど、3枚のNICを認識させてブランチネットのネットワークを作ってみっか、と考えました。この構造なら万が一公開サーバーがクラックされてもプライベートネットワークはある程度守れるし、そういった面で普通使われているスクリーンドサブネットよりルータ1つ分少なくて済むので小規模LANにはもってこいなのですね。

ディストリビューションはLASER5を選びました。雑誌のおまけのFTP版を使いました。Laser5にした理由は

FreeBSD4.2という案もあったが、資料が少なくて挫折。やはりLinuxが楽。

たまたまPlamoのCDが見当たらなかった。

という単純なものです。

インストールに関しては特に注意点はありません。パッケージは個々を選ばないのなら、Networked Work Station とか Dialup Work Station あたりを選んでおいて、あとでいらないもの(sendmailとかパッケージごと捨てたほうが安全)を削除、もしいるもんがあれば追加というのでよいでしょう。ただし、セキュリティ上最小限のインストールにするのが原則です。

最近のインストーラーはえらいです。3枚の(1つはオンボ)NICをちゃんと認識しました。インストール済みのマシンに追加認識させるときはLILOにオプション渡したりめんどーですからこれは嬉しい。ちなみに苦労しないようにNICはコンパチ2枚と3Comにしておきました。あとで設定すりゃいいんですけど、こうしときます。
eth0 --- 設定なし .....PPPoEによって設定されるのでこれでよい(DHCP取得にはしないでね)
eth1 --- IP:192.168.1.1 .....プライベートネットワーク
eth2 --- IP:192.168.2.1 .....結局サーバー用にするのだが、テストするのにとりあえずプライベートネットワークを与えておく。


Xをインストールしないから気楽です。とはいえ、最近のインストーラはXも楽勝か......。

パッケージが少ないからわりと早く終わります. CPU:Pentium166,Mem:64MBですけど、10分くらい。

とりあえずインストール完了。

再起動してパッケージのアップデートを行います。これが一番時間がかかる。情報収集は前々からしときましょう(前過ぎてもダメね)。この作業はこれからもずっとつきまといますので、覚悟。ま、そのためにもインストールするパッケージは最小限に!

私は最新のOpenSSHをソースからコンパイルしてインストールしました。このデーモンの運用はかなり危険ですが、テストに使うためです。通常は起動しません。SSHの設定については別の機会に。

ADSLを利用するために Roaring Penguin さんちの rp-pppoe というツールをダウンロードしてきてインストールします。pppdのバージョンも確かめておいてください。最新にしておきましょう。rp-pppoe の設定はインストール後、 /user/sbin/adsl-setup で対話式に行えます。終わったら /usr/sbin/adsl-start で接続です。結果は /usr/sbin/adsl-status で確認できます。切断は /usr/sbin/adsl-stop です。

起動時に立ち上がるデーモンの設定をします。ルータなのではっきりいってほとんどいりません。少なければ少ないほどよいです。でもkudzu,syslog,cron,networkとかは必要。konからntsysv、あるいは chkconfig で設定。さっきインストールした rp-pppoe の設定も加わっているはずですのでonにしましょう。

ipchainsによるパケットのフィルタリングやフォワードを記述したスクリプトを書きます。これも時間をかけましょう。これに穴があると場合によっては洒落になりません。ipchainsそのものの機能として保存もできますが、シェルスクリプトにしてしまったほうが管理も楽だし、融通が利きます。パケットをフォワードするには /etc/sysctl.conf のnet.ipv4.ip_forward の設定を1にするんですが(スプーフィング対策としてnet.ipv4.conf.all.rp_filterも1にしたほうがよい)、そんなのもまとめてとりあえずのファイアウォール構築スクリプトとして、 /etc/rc.d/rc.local に付け加えておきましょう。あ、IPマスカレードに対処対するモジュールの組み込みもここに書いちゃいましょう。ip_masq_hoge といった名前のものがそうですので、探して下さい。modprobe で組み込みます。

さらにtcp_wrapperでアクセス制限をしますが、ちゃんと不要なやつらを削除していればやることはありません。しかし、どうしても FTPサーバー兼用にするんだー!という命知らずなヒトは /etc/hosts.deny および /etc/hosts.allow を編集します。しかし、telnet, bind, wu-ftpd のような方々はこの制限をかけてもバッファオーバーフロー攻撃に対するセキュリティーホールがよく見つかるので意味がないです。私はどうなっても知りません。

Windows にすっかり毒された私たちは気前よくリブートしてしまいましょう。Unix系ユーザーだったあなたならこんなにあっけなくリブートしてしまう自分にうっとりしてしまうかも.....。

起動後、ログインして、/usr/sbin/adsl-status で確認。接続されていればOK、めでたしめでたし、あとは内部ネットワークからいろいろとやってみて、ファイアウォールの調整をします。ただし、慎重に!ほぼ落ち着いたらログの管理などやるべきことはまだまだありますが、とてもお勉強になります、がんばってみてください。



トップページ