末尾へ

Linux で家庭内 LAN をやってみました2
IPマスカレード編


Since 4/22'98

To MENU ペンギン君

1.サーバー環境

2.インターネット接続環境

(2001.5.5)

現在、Debian GNU/Linux で

等々と各サーバーがフル稼働していますが、ここでは、各クライアント・マシンからプライベートIPアドレスのままインターネットに接続するための環境についてお話します。

1.サーバー環境

 LAN-インターネット環境を図解します。
                                        PPxP で接続
           +---------------------------+     +-------------------------+
           | Host1(Server)192.168.0.11 |=====| NEC AtermIT65ProDSU:TA |----→Internet
           | Gateway2000 P5-133        |     +----------------+--------+
           | Celeron 562MHz            |    +--------------+  l(ターミナルアダプタ)
        +--| Debian GNU/Linux (Server) |====| ALPS MD-5000 |  l
        |  +---------------------------+    +--------------+  l Sバスケーブル
        |  +---------------------------+    (プリンター)     l
        |  | Host3        192.168.0.13 |     +----------------+------------+
        |+-| Gateway GP6-450           |=====| OMRON MT128-NET 192.168.0.1 |----→Internet
        || | PentiumIII 550MHz         |     +--+--------------------------+
   HUB  || | Windows2000 /Debian /Vine |        |(ダイアルアップルータ)
  +-----++ +---------------------------+        |
  |Corega|                                      |
  |FSW-8L|--------------------------------------+
  +---++++
      |||| +---------------------------+
      |||| | Host2        192.168.0.12 |
      |||+-| Skeleton                  |
      |||  | PentiumII 450MHz          |    +---------------+
      |||  | Windows98                 |====| ALPS MD-4000J |
      |||  +---------------------------+    +---------------+
      |||  +---------------------------+    (プリンター)
      |||  | Mac1         192.168.0.14 |
      ||+--| iMac                      |
      ||   | PowerPC G3 500MHz         |
      ||   | MacOS J1-9.1              |
      ||   +---------------------------+
      ||   +---------------------------+
      ||   | Mac2                 DHCP |
      |+---| Performa 5260             |
      |    | PowerPC 100MHz            |
      |    | MaOS 8.6                  |
      |    +---------------------------+
      |    +---------------------------+
      |    | Host6        192.168.0.15 |
      +----| PC-9801 DS2               |
           | Cx486SRx2 16x2MHz         |
           | FreeBSD 2.2.2 RELEASE     |
           +---------------------------+

OS が Win98 の Host2 に接続した MD-4000J(プリンター)は、OS が Win2k の Host3 としか共有できないが、OS が Linux の Host1 に接続した MD-5000 は、Samba と Netatalk, Ghostscript により、全てのパソコンで共有しています。

Host6 の FreeBSD はバージョンも古く、インターネットからアプリケーションの追加を試みたが、古すぎて対応するパッケージがもうありません。CD-ROM から再インストールという方法もあるが、CD-ROM ドライブも不調のため、これも出来ません。やろうと思えば、他のホストの CD-ROM ドライブをマウントする方法もあるが、不精しています。

MT128-NET は、Linux によるルーター機能を持った Host1 と TA をあわせもった機能を持っています。従って、Host1 + TA(Aterm) からも、MT128-NET からのどちらを通しても各パソコンからインターネットに接続できる環境としています。ただし、設定の変更が必要なため、どちらからも同時に利用するというわけには行かない。

これは、MT128-NET の利用から Linux サーバーだけでインターネットに接続できる環境へ移行するための準備としています。何故なら、適用地域が拡大しつつある ADSL への移行を想定して、ADSL に移行するには、ISDN回線からアナログ回線に戻す必要があり、TA が使えなくなってしまうためです。
(同時に利用する方法もありますが、毎月の費用が大きくなってしまいます。)

Host1 は AtermIT65 にシリアルケーブルで接続されていますが、このケーブルを通してインターネットに飛んでいます。
Host3 はLANケーブルで HUB を介して Host1 + AtermIT65 または MT128-NET を通してインターネットに飛びます。
Host3 から MT128-NET に接続されているシリアルケーブルは、mncon という MT128-NET を便利にするためソフトが使っています。

AtermIT65 と MT128-NET は Sバスケーブルで接続していますが、LAN とは直接関係なく、電話機能の拡張として接続しています。
それまで寝ていた AtermIT65 を接続し電話ポートが増えたことにより、そのポートに FAXモデムを接続しています。

Mac2 が DHCP になっていますが、MT128−NET からでも LinuxサーバーからでもIPアドレスが取得できるようにしています。

2.インターネット接続環境

ダイアルアップ・ルータは IPマスカレード機能によって、個々のパソコンに設定されたプライベートIPアドレスをプロバイダーから割り振られたひとつのグローバルIPアドレスに変換して個々のパソコンからインターネットに接続します。

この機能によって個々のパソコンはそれぞれグローバルIPアドレスを割り振られたかのように振舞います。その仕組みはプライベートIPアドレスにポート番号を付加することで実現します。
他のパソコンとは違うポート番号によって区別されるわけです。このことから推測が付くのはパソコン側からインターネットに接続した場合には相手のコンピューターと交信できますが、インターネット側からの接続要求にはパソコンを特定できないので交信できません。

IPマスカレードがファイアフォールと同じように扱われたりするのはこのためです。もちろん、IPマスカレードとファイアウォールは別物です。

では、プライベートIPアドレスしか持たないパソコンを WWWサーバーや FTPサーバーにしたとき、このままではインターネット側から接続しようと思ってもサーバーとなっているパソコンを特定できません。
この接続要求も可能にします。
WWWサーバーはポート 80 です。ポート 80 への要求があれば、WWWサーバーとなっているパソコンに要求が届くようにすればいいわけです。

こうした機能をダイアルアップ・ルーターに任せるのではなく、Linux で実現しようというのが今回の試みです。

といっても、いつものことですが、全てが初めての経験で、実現できた方法を再現するだけですので、間違いがあったり、もっとよい方法があるのかもしれません。

IPマスカレードを設定するために先ずカーネルの再構築をします。
実施した環境は Kernel ver. 2.2.19 ですが、v. 2.2.x ならほとんどいっしょでしょう。
カーネル設定の Networking option から

を全て y にしていますが、このうち必須なのは、Network firewalls、IP:firewalling、IP:masquerading だけらしいのですが、残りはあった方がいいものとあってもなくてもいいものがあるのかもしれません。

ここで IP:masquerading を有効にしてカーネルをコンパイルすると

などのモジュールが生成されます。必要に応じて、/etc/modules で有効にしておきます。
/etc/ipmasq/modules もあるのでサンプルのコメントを外して all としておきました。

これだけでは何もしてくれません。
/etc/network/options を書き換えます。

ここには spoofprotect や syncookies などの設定もあります。 で変更を反映します。

/etc/network/interfaces に次の行を追加します。

1行目は IPforward の基本ポリシーと呼ぶらしいのですが、-P オプションで forward を拒否します。
2行目以下で新しいルールを -A オプションで追加します。192.168.0.0/24 ネットワークにあるパソコンからゲートウェイの外に出ることを許可します。
その他、ここで目的に応じた forward 設定を追加していきます。

以上の設定で再起動すれば、IPマスカレードも正しく動作するはずなんですが、いろいろ問題も出てきました。
今までダイアルアップルータがお守りしていたせいか、特に問題化されなかったのですが、DNS 設定の不備が顕在化しました。
基本的には正しく動作していたのですが、/etc/bind/named.conf の options - forwards に ISP の IPアドレス以外にルータのアドレスを記入していましたが、ルーターのアドレスが動作不安定の原因でした。 それだけで音信不通になってしまいます。

先に説明したモジュールの設定で /etc/ipmasq/modules には、ftp に関するサンプルもあるのですが、ほおっておいたところ外部の ISP に対しては ftp 接続でストレスはなかったのですが、ローカルのサーバーでの ftp 接続でかなり待たされてからなんとか接続されるという症状が現れました。
これは /etc/ipmasq/modules のコメントを外して、ftp pors=21,2100 という行を有効にして再起動することで、すっかり解決し瞬時に接続するようになりました。

ここまでで、なんとか満足の行く環境となっていますが、まだまだどんな問題が現れるか分かりません。その都度、気が付いたことは追加していこうと思います。

この時点で余っていた NIC を差して2枚差しとしていますが、PPxP(実際には tkppxp) で接続する現環境では不要な1枚で差したまま遊んでいます。
このカードの利用は、今後の問題です。

現況では30数時間連続稼動中に問題が起こることもなく動作しています。

以上、まだまだ実験中であり、今後環境は変更されていく仮の姿ですが、一応、希望の動作をした現時点での報告とします。

(なお、既記載分も予告なく訂正、削除、追加する場合があります。)


Linux で家庭内 LAN をやってみました3

Linux で家庭内 LAN をやってみました

FreeBSD で家庭内 LAN をやってみました

Router で家庭内 LAN をやってみました

先頭へ

To MENU

メインメニューへ