IPnuts

軽量な1FD Linux でHDD レスを実現した実用性の高い堅牢なルーターです。CD-ROM や コンパクトフラッシュIDE での起動も可能です。低スペックパソコンでラクラク動作します。
更新日 2016-02-13

IPnuts の概要

低スペックパソコンでルーター専用機を実現する為に作られたOSです。特にHDD レスを実現しており 実稼動時の負荷を減らせます。CD-ROM やコンパクトフラッシュからブートでき、保存もUSB フラッシュ メモリに行うので、停電といった不意の再起動時にも障害無く復旧できます。
市販のルーターにある機能はほとんど実装されてます。さらにきめ細かいポートフォワードが設定でき、 複数のサーバーと複数のインターネット回線で結び、冗長性を高める事ができます。ラウンドロビン といったロードバランサー実装されています。通常の設定作業は全てWeb でビジュアルに 操作できます。
ファイアーウォールとしても十分に機能します。VPN を実現する機能も多分によういされています。
実運用においてはディスプレイもキーボードもマウスも要りません。LAN が二つあればOK です。ハブを 介すもよし、LAN カードを挿せるだけ挿しても良し(LAN カードの安い事!)。なんとでも設定できます。 ただし最初はディスプレイとキーボードを繋げて設定する必要はあるかもしれません。LAN カードの種類に よっては自動認識に失敗しますので。

ダウンロード

ダウンロードはコチラから。FDD 版は無料ですが2枚組みとなるため、再起動時にディスク差し替えの手間がいります。つまり 実運用時の自動復旧は望めないという事です。ただIPnuts 自体は十分に安定してますので、十分つかえます。 気に入ったらCD-ROM 版を購入しても良いでしょう。コチラは2980円がかかります。

起動設定

マニュアルはコチラ参照できます。商用を意識してるだけあって出来のいいマニュアルです。
起動設定はIPnuts4.0 User マニュアルの Chapter4.0 起動と初期設定を参考にしてください。

ログオン画面が出ない場合

IPnuts の起動が失敗してるか、利用中のマシンのIP アドレスに問題と思われます。既存の市販ルーターをハブ代わりに 使ってる場合、それに搭載されているDHCP が動いているとマズイかもしれません。

初期設定

最低でも2つのLAN ポートが必要になります。一つはLAN、もう一つはWAN に繋がります。

LAN カードの認識

ドライバを読み込ませて認識させます。デフォルトでNE2000 コンパチブルや8139 は認識するようです。それ以外の場合は 別のドライバを読み込ませます。具体的には/etc/modules に読み込ませたいモジュール名を書きます。モジュールは /lib/modules/2.4.24/kernel/drivers/net の中にあるものから選びます。insmod コマンドにモジュール名を渡すと 再起動せずにドライバを適用してくれますので、ip link show でデバイスを新たに確認できればそれが適切なモジュールであると 確認できます。
IPnuts にはvi は入っていない代わりに軽量なエディタe3 が入っています。alt + H でヘルプが確認でき、コマンドはctrl キー を添えて発行します。例えば終了ならCTRL + Q。その際に保存するかどうかも問われます。
ちなみにDCiのFNW-9803-T はモジュール名tulip でいけます。

運用設定

実際に起動したら、LAN 経由で設定を行います。具体的にはネットワーク上の別のマシンからブラウザを使って 192.168.0.1 にアクセスします。ログオン画面が出たらID: webadmin PW: free で入ります。
左のメニューから選び、右の画面で設定し、設定を保存し、設定を適用するという流れになります。適用を行わないと 反映されない事をお忘れなく。

インターネットへの接続

IPnuts のマシンにLAN ポートが2つ以上あれば、その一つを光ケーブルからのLAN に繋ぎます。LAN ポート毎にDevice Port Number という論理値を割り当てます。ネットワーク - デバイスのPPPoE より接続に使うデバイスとログインID・パスワードを設定します。 一つの光ケーブルで複数の接続(マルチセッション)を行う場合は、その数だけ設定を施します。

ブリッジ

LAN 向けのポートが一つだけで外部ハブで分岐する場合は、そのLAN ポートにIPnuts のアドレス(192.168.0.1 等)を設定すればよいの ですが、複数のLAN ポートを装備すると別のIP アドレスを割り当てなければならずクライアントから見てややこしくなります。そこで 仮想のLAN ポートを一つ作ってそれに複数のLAN ポートを関連付けるブリッジというのを施します。そうするとどのクライアントからも 192.168.0.1が LAN のIP アドレスと見立てる事ができます。外部ハブを使えば良い話ですが、LAN カードを無駄にしたくない場合には これを用います。

パケット制御

パケットを通すかどうかのフィルタリング設定を行います。外部インターネットからのIPnuts 本体に向けたパケットなら受信フィルタ。 IPnuts 本体から外部インターネットに向けたパケットなら送信フィルタ。それ以外のフィルタは全てフォワードフィルタとなります。
外部インターネットに向けてサーバー公開を行っている場合は、外部からのリクエストパケットは常にIPnuts 本体に向けてのものな訳ですが、 それはIP マスカレードで内部向けに変換される為、フォワードフィルタにおいて設定します。

アドレス変換

アドレス変換とはIP マスカレード(フォワーディング)の事です。外部インターネットから来たパケットの宛て先はIPnuts が持っている グローバルIP アドレスですので、これを内部にある任意のローカルIP アドレスに変換します。ポート毎に設定できます。変換履歴はIPnuts が記憶していて、レスポンス パケットは同じようにアドレス変換を施されて外部インターネットに送出されます。
複数のサーバーで負荷分散を行いたい場合はLVS (ロードバランサー)を利用します。LVS はアドレス変換より優先される機能です。

DNS マスカレード

LAN 上にあるPC からの名前解決の問い合わせを外部向けにIP マスカレードする機能です。また任意のドメイン名とローカルIP の組み合わせを設定して おけば名前解決を偽装する事もできます。IPnuts はセキュリティの関係上、名前ベースの仮想ホストに対してLAN 内からドメイン名でアクセスできませんが、 このドメイン名と対応するローカルIP を設定する事で正常にアクセスする事ができます。
特に外部公開していないローカルサーバーをテストする際に重宝します。

LVS

公開サーバーの負荷を複数のDMZ サーバーに分散させるロードバランサーです。ラウンドロビンの他、自由な重み付け、接続数に合わせたバランス調整が可能です。 特にローカルサーバーの生死チェックも備えていて、反応の無いサーバーを回避でき、耐障害性が高いといえます。