IPマスカレードを設定する(Vine2.1.5)
First Edition 2001.7.31 DHCPサーバーにするで、以下の図の構成を想定し、設定しました。 しかし、このままではLinux BOXしかインターネットに接続できません。Client Box をインターネット 接続させるためには、Linux BOX内でIPマスカレードを設定する必要があります。 IPマスカレードとは、Client Boxtからインターネットへの要求をすべてLinux BOXからの要求だと 見せかける仕掛けです。これにより、インターネットに接続するコンピュータは1つですみます。 すなわち、現在枯渇しつつあるグローバルIPアドレスを有効に活用することができるわけです。 ネットワークカードによるインターネット接続に限らず、PPP接続でもOKです。 ![]()
コマンドを実行するいままでは、IPマスカレードを使用するには、カーネルの再構築が必要でしたが、Vine Linux2.1ではデフォルトでモジュール化されているので、必要なくなりました。ネットワークカードの2枚挿しをしたあと、IPマスカレードを設定するためには、ルートになって以下を実行します。 # /sbin/modprobe ip_masq_ftp # /sbin/modprobe ip_masq_irc # /sbin/modprobe ip_masq_quake # /sbin/modprobe ip_masq_raudio # /sbin/ipchains -P forward DENY # /sbin/ipchains -A forward -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQ # echo 1 > /proc/sys/net/ipv4/ip_forward最初の4行の意味は、パケットをゲートウェイ(ここでは、Linux BOX)を通して外部(Internet)に出すか どうかを指定します。どのようなパケットが指定できるかは、/lib/modules/2.2.14-1vl6/ipv4 ディレクトリを見てください。ちなみに上から、FTP、IRC、QUAKE(ゲーム)、realaudioです。 5行目の意味は、パケットフォワードポリシー(-P forward)を拒否する(DENY)する事を示しています。 まず最初にパケットフォワーディングを全て拒否するのです。その後、必要なルールだけを追加していきます。 6行目の意味はこうです。 ipchainsコマンドにより、フォワードルールを追加(-A forward部分)する。ソースアドレス192.168.1.0 (-s 192.168.1.0部分)のネットワークパケットを他の場所に転送するチェインを指定し、デスティネーション アドレスとして自分自身0.0.0.0(-d 0.0.0.0/0部分)を指定し、パケットをマスカレードする (-j MASQ部分)という意味です。ディスティネーションアドレスを自分自身にすることにより、 自分のルーティング設定にしたがってマスカレードされたパケットの配送を行うことを示しています。 詳しくは、man ipchainsをご覧ください。 簡単にいうと、設定したい家庭内LANのネットワーククラスを[192.168.1.0/24]の部分に設定すれば動きます。 クラスCのプライベートアドレスであれば、192.168.1.0/24、192.168.0.0/24などと指定します。 最後の行は、カーネルにパケットのフォワーディングを許可することを知らせます。 ルーティングテーブルを確認するIPマスカレードにおいて、パケットを正しく配送するためにルーティングの情報を確認する必要があります。 私の家では以下のように出力されました。$ netstat -r カーネルIP経路テーブル 受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インターフェース 192.168.1.0 * 255.255.255.0 U 0 0 0 eth1 aaa.bbb.ccc.0 * 255.255.248.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default hogehoge 0.0.0.0 UG 0 0 0 eth01行目:192.168.1.0/255.255.255.0宛のパケットはeth1へ送る 2行目:aaa.bbb.ccc.0/255.255.248.0宛のパケットはeth0へ送る 3行目:127.0.0.0/255.0.0.0宛のパケットはloへ送る 4行目:1,2,3行目以外の宛先のパケットはeth0へ送る となっています。これらのルーティングテーブルはネットワークカードを設定して動作させると自動的に 追加されたものです。その他細かい経路を設定したい場合は、routeコマンドを使って行います。 しかし、このテーブルだけ見ると、eth1に届いたパケットはeth0へは届かないように思えますが、 IPマスカレードを使用するとeth1からeth0の間でパケットの宛先を変換してくれます。eth1からeth0へ、eth0から eth1へ変換してくれますので、内部LANから外部へ、外部から内部LANへパケットが行き来 できるわけです。 コンピュータ起動時に自動的にIPマスカレードを実行させる起動するたびに先ほどのコマンドを打ち込むのは面倒なので、以下のファイルを編集することにより 自動的にIPマスカレードを実行させることができます。/etc/rc.d/rc.localの最後に以下を追記する
/etc/sysctl.confの赤字部分を編集する
以上で、いちいちコマンドを打ち込む必要がなくなりました。 クライアント(Client Box)の設定クライアントとしては、Windowsマシン、Linuxマシンなどがあります。DHCPサーバーにする で、ネットワークカードeth1にサーバーを設定していますので、上の図のClient Boxの設定は簡単です。 Windowsマシンの設定 コントロールパネル-ネットワークで、ネットワークカードのTCP/IPのプロパティを開き、 IPアドレスタブをクリックし、IPアドレスを自動的に取得するをチェックします。これだけです。 ![]() Linux BoxをDHCPサーバーにしていない場合は、固定プライベートアドレスとネットマスクとゲートウェイと DNSを設定して下さい。 Linuxマシンの設定 DHCPクライアントにするを見てください クライアントPCをDHCPクライアントにしていない場合は、IPアドレスとしてプライベートアドレス、 ネットマスク、DNSサーバーのホスト名とアドレス、ゲートウェイアドレスを設定すれば、同様に IPマスカレードによりアクセスできます。でもどうせならLinux BOXに DHCPサーバーを立てましょう。 [HOME] since 2001.4.22 |