プライベートネットワーク上に重要な情報がある場合には、IP マスカレードを 使う前にもう一度考え直して下さい。IP マスカレードはあなたがインターネットへ 出てゆくゲートウェイともなりますが、逆に外側の世界にいる誰かがあなたの ネットワークに侵入するゲートウェイともなるのです。
/usr/src/
に
展開します。tar xvzf linux-2.0.x.tar.gz -C /usr/src
、ここで
x は 2.0 以降のパッチレベルです。linux
というディレクトリあるいはシンボリックリンクがある
ことを確認して下さい) tar xvzf linux-2.0.6.tar.gz -C /usr/src
とします。tar の引数の
x はカーネルのバージョンとは関係なく、そのままです。
- このパッチは、2.0.1 以上のカーネルには必要ありません。
- これは通常の diff パッチではありません。このファイルを
Linux ソースディレクトリ/net/ipv4/ip_masq_app.c
にコピーして下さい。
- このパッチファイルを
/usr/src/
にコピーし、それからgunzip ip_masq_ftpalive.patch.gz
とします。- 次のように入力し、パッチを当てます。
patch < ip_masq_ftpalive.patch
以下の質問には YES と答えて下さい。
* Prompt for development and/or incomplete code/drivers
CONFIG_EXPERIMENTAL
- これによって実験段階の IP マスカレードのコードをカーネルに組み込む
という選択が可能になります。
* Enable loadable module support
CONFIG_MODULES
- ロードモジュールが使えるようになります。
* Networking support
CONFIG_NET
* Network firewalls
CONFIG_FIREWALL
* TCP/IP networking
CONFIG_INET
* IP: forwarding/gatewaying
CONFIG_IP_FORWARD
* IP: firewalling
CONFIG_IP_FIREWALL
* IP: masquerading (EXPERIMENTAL)
CONFIG_IP_MASQUERADE
- 実験段階ですが、必要です。
* IP: always defragment
CONFIG_IP_ALWAYS_DEFRAG
- 強く推奨します。
* Dummy net driver support
CONFIG_DUMMY
- 推奨します。
原注: 上に示したのは IP マスカレードに必要なものだけです。 その他のオプションは、必要に応じて指定して下さい。
make modules; make modules_install
/lib/modules/2.0.x/ipv4/
中の必要な
モジュールをロードするために、/etc/rc.d/rc.local
ファイル (あるいは
それ以外の適当と思われるファイル) に、以下の行を追加しなければなりません。
.
.
.
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp.o
/sbin/modprobe ip_masq_raudio.o
/sbin/modprobe ip_masq_irc.o
.
.
.
クライアントマシンには公式にはアドレスが割り当てられていないわけですから、 これらのマシンに適切な方法でアドレスを割り当てなければなりません。
IP マスカレード FAQ からの引用:
外部に接続されていないネットワークでどのような IP アドレスを使うべきかに ついて、RFC (#1597) が発行されています。 この目的のために、3つのブロックが予約されています。 私が使っているのは、この中の 192.168.1.n から 192.168.255.n までの255個の クラス C サブネットです。
RFC 1597 からの引用:
Section 3: プライベートアドレス空間
Internet Assigned Numbers Authority (IANA) は、IP アドレス空間のうち
以下の3つのブロックをプライベートネットワーク用に予約しています。
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
最初のブロックは「24ビットブロック」、2番目のブロックは「20ビット
ブロック」、3番目のブロックは「16ビット」ブロックと呼ばれます。
最初のブロックは単一のクラス A ネットワーク番号以外のなにものでもなく、
2番目のブロックは連続する16個のクラス B ネットワーク番号の集合であり、
3番目のブロックは連続する255個のクラス C ネットワーク番号の集合であることに
注意して下さい。
従って、クラス C ネットワークを使っている場合、マシンのアドレスは
192.158.1.1、192.168.1.2、192.168.1.3、…、192.168.1.x と割り当てる
ことになります。
192.168.1.1 は通常ゲートウェイマシン、つまりインターネットに接続された Linux ホストとなります。 192.168.1.0 と 192.168.1.255 はネットワークアドレスとブロードキャストアドレス として予約されています。これらのアドレスをマシンに割り当てることは避けて 下さい。
適切な IP アドレスを設定したら、次は適切なゲートウェイを設定しなければ なりません。普通はそう難しいことではありません。Linux ホストのアドレス (普通は 192.168.1.1)をゲートウェイとして入力すればいいのです。
DNS には任意のサーバーを指定することができますが、
Linux マシンと同じサーバーを指定するのが分かりやすいでしょう。
また、サーチサフィックスとして、任意のドメインを追加することもできます。
訳注: Linux マシンが 0.0.0.0 または 127.0.0.1 (どちらも自分自身を
示すアドレスです) を DNS サーバーとして指定している場合、これをこのまま
クライアントマシンに指定してはいけません!
この場合には、Linux マシンの IP アドレス(この例では 192.168.1.1)を指定
します。
IP アドレスを設定し直した後、適切なサービスを再起動するか、リブートする ことを忘れないで下さい。
以下の設定方法は、クラス C ネットワークを使い、Linux ホストのアドレスが 192.168.1.1 であると仮定しています。192.168.1.0 と 192.168.1.255 は予約 されていることに注意して下さい。
/etc/resolv.conf
にあり
ます)。必要に応じて「ドメインサフィックスの検索順」を追加する。
Ping
し、ネットワーク接続をテストする。
「ファイル名を指定して実行」 を選択し、ping 192.168.1.1
と
入力する。ping
することはできません。)
HOSTS
ファイルを windows ディレクトリに作成すれば、
LAN 上のマシンをホスト名で参照できるようになります。
windows ディレクトリには、HOSTS.SAM
という名前のサンプルファイルが
あります。訳注: 日本語版の Windows for Workgroup 3.11 は、発売されていません。
ping
し、ネットワーク接続をテストする。
「Start/Run」 を選択し、 ping 192.168.1.1
と入力する。ping
することはできません。)
[1]Novell NE2000 Adapter
。
IP アドレスを 192.168.1.x (1 < x < 255) に、サブネットマスクを
255.255.255.0 に、デフォルトゲートウェイを 192.168.1.1 に設定する。
Ping
し、ネットワーク接続をテストする。
「ファイル/ファイル名を指定して実行」 を選択し、
ping 192.168.1.1
と入力する。ping
することはできません。)
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集するか、
コントロールパネルを使って上の設定を行ないます。/etc/resolv.conf
に DNS サーバーと
ドメインサーチサフィックスを追加する。
/etc/networks
ファイルを更新する。
ping
コマンドを発行し、ゲートウェイマシンへの接続をテストする。
ping 192.168.1.1
ping
することはできません。)
nwpd 0x60 10 0x300
を実行する。
pkunzip tel2308b.zip
config.tel
ファイルをオープンする。
myip=192.168.1.x
(1 < x < 255)、netmask=255.255.255.0 と
設定する。
hardware=packet, interrupt=10, ioaddr=60
と
設定する。
name=default
host=yourlinuxhostname
hostip=192.168.1.1
gateway=1
name=dns.domain.com ; hostip=123.123.123.123; nameserver=1
原注: Linux ホストが使用している DNS 情報で置き換えて下さい。
config.tel
ファイルをセーブする。
telnet 192.168.1.1
上で説明したのと同様な設定を行ないます。 これらのシステムの設定について書いてみようと思う方は、 詳細な設定方法を achau@wwonline.com に メールして下さい。
この時点で、カーネルと必要なパッケージがインストールされ、モジュールが ロードされているはずです。また、クライアントマシンの IP アドレス、 ゲートウェイ、それに DNS 設定もすべてできているはずです。
あと残っているのは、ipfwadm を使って適切なパケットを適切なマシンに 転送することだけです。
ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0
ipfwadm -F -p deny
ここで x はサブネットのクラスによって決まる数(次の表を参照して下さい)、
また yyy.yyy.yyy.yyy はネットワークアドレスです。
ネットマスク | x | サブネット
~~~~~~~~~~~~~~~~|~~~~|~~~~~~~~~~~~~~~
255.0.0.0 | 8 | Class A
255.255.0.0 | 16 | Class B
255.255.255.0 | 24 | Class C
255.255.255.255 | 32 | Point-to-point
例えば、クラス C サブネットを使っている場合には、次のように入力します。
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
ipfwadm -F -p deny
セキュリティを強化するために、-V
オプションを追加することが
できます。
マシンごとに設定することもできます。 例えば、192.168.1.2 と 192.168.1.8 にインターネットへのアクセスを許可し、 他のマシンには禁止したい場合には、次のように入力します。
ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0
ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0
ipfwadm -F -p deny
これらのコマンドを /etc/rc.local
ファイル(あるいは適当と思われる
ファイル)に追加しておくのが良いでしょう。
そうでなければ、IP マスカレードが必要になるたびに実行する必要があります。
設定お疲れ様でした。いよいよ試運転です。 Linux ホストとインターネットの接続に問題がないことを確認しておいて下さい。
クライアントマシンから「インターネット上の!!!」ウェブサイトに アクセスして、うまくつながるかどうか見てみましょう。 DNS の設定が間違っているかもしれないので、 最初はホスト名ではなく IP アドレスを使うことをおすすめします。
例えば、Netscape のサイト、http://home.netscape.com にアクセスするには http://198.95.249.78 を使います。
ヨットが見えましたね?
おめでとうございます!
IP マスカレードはちゃんと動いています!
次の段階としてホスト名でのアクセスや、
telnet、ftp、Real Audio、True Speech などのクライアントを
試してみることができます。
でも PING
はまだダメだということは忘れないで下さい!
私自身、ここまでは何のトラブルもなく設定できました。 この素晴らしい機能を実現してくれた人たちに感謝します。