プライベートネットワーク上に重要な情報がある場合には、 IP マスカレードを実装する前に、セキュリティの観点から慎重に検討して ください。 これを怠ると、 IP マスカレードはあなたがインターネットへ出て行く ゲートウェイになりますが、これと共に外側の世界にいる誰かがあなたの ネットワークに侵入するゲートウェイともなってしまうのです。ひとたび IP マスカレード機能を設定するならば、強力な IPFWADM/IPCHAINS によるファイアウォールのルールセットを実装することを強くお薦めします。 詳細は後述の 強い IPFWADM のルールセット 及び 強い IPCHAINS のルールセット の章をご覧ください。
お使いの Linux ディストリビューションが、既に下記の必要な機能の全て をサポートしていて… -そして全ての MASQ に関係するモジュールがコンパイルされている (多くの モジュラーカーネルは必要とされる全てが含まれていることでしょう) なら、 カーネルを再コンパイルする必要はありません。 あなたの使用する Linux ディストリビューションが MASQ 機能を装備して いると自信が持てないなら、 マスカレードサポート済みディストリビューション の章を参照してください。 このリストが信用できないか、あなたの使用するディストリビューションが リストにないなら、以下のテストを試してみてください -
- IPFWADM/IPCHAINS
- IP フォワーディング
- IP マスカレーディング
- IP ファイアウォーリング
- その他
これらがあれば、あなたのカーネルにはマスカレード機能が実装されています。
- Linux box にログインして、コマンド "ls /proc/sys/net/ipv4" を 実行してみてください。
- コマンドの表示結果の中に "ip_forward", "ip_masq_debug", "ip_masq_udp_dloose"(任意), 及び "ip_always_defrag"(任意) 等があるか確認してください。
あなたの使用するディストリビューションが標準で IP マスカレーディング をサポートしているにもかかわらず上記ファイルが見つからない場合、 マスカレード機能はサポートされていないと推測せざるを得ません。 その場合…カーネルをコンパイルしなければなりません。 でも、ご心配無く。難しくないですから。
標準でサポートされているか否かにかかわらず、この章は他の有用な情報を 含んでいますので、読むことを強くお薦めします。
必要とされるソフトウェアやパッチ等は 2.2.x カーネルの必要条件 の章をご覧ください。
注意 #1 - 2.2.16 より以前の Linux 2.2.x カーネルには、 TCP 接続において ルート権限が搾取される弱点があり、 2.2.11 以前のバージョンには IPCHAINS のフラグメンテーションにバグがあります。 このため、強力な IPCHAINS のルールセットを動作させようとする人は、 これら攻撃に対して無防備です。 あなたのカーネルを修正済みバージョンへアップグレードしてください。
注意 #2 - 2.2.x カーネルが整備され続けられた結果、コンパイル時の オプションが変貌し続けています。 今回のバージョンの文書において、この章はカーネル 2.2.15 の設定内容 を反映しています。 もしもお使いのカーネルがもっと古いバージョンの場合ですと、ダイアログ の表示は違って見えるでしょう。 新機能や安定性をもたらす最新バージョンのカーネルへのアップグレード をお薦めします。
/usr/src/
ディレクトリ
へ展開してください - tar xvzf linux-2.2.x.tar.gz -C /usr/src
ここで、2.2.x の "x" は Linux 2.2 カーネルの現在のバージョンナンバー
です。
完了しましたら、 /usr/src/linux/
というディレクトリがあるか、
またはシンボリックリンクが張られていることを確認してください。
以下の YES or NO の選択 に注意してください。 全てのオプションはこの HOWTO にて後述する正しいカーネルパッチなくして、 有効とは限りません。
* 開発中や不完全なコード/ドライバも表示 (CONFIG_EXPERIMENTAL) [Y/n/?]
- YES: IP MASQ 自体では必要ないけれども、このオプションで MASQ
モジュールの作成とポートフォワーディングが実現されます。
-- マスカレードに無関係のオプションを飛ばします --
* ローダブル・モジュールを使用可能にします (CONFIG_MODULES) [Y/n/?]
- YES: これでカーネルの IP MASQ のモジュールが使えるようになります。
-- マスカレードに無関係のオプションを飛ばします --
* ネットワークのサポート (CONFIG_NET) [Y/n/?]
- YES: ネットワークサブシステムを有効にします。
-- マスカレードに無関係のオプションを飛ばします --
* Sysctl サポート (CONFIG_SYSCTL) [Y/n/?]
- YES: フォワーディング、ダイナミック IP 、ルーズ UDP 等のオプション
を有効/無効にします。
-- マスカレードに無関係のオプションを飛ばします --
* パケット・ソケット (CONFIG_PACKET) [Y/m/n/?]
- YES: これは任意ですが、IP MASQ に纏わるあらゆる問題をデバッグ
するために TCP DUMP を使えるようにする際に必要な機能です。
* カーネル/ユーザ ネットワーク・リンク・ソケット (CONFIG_NETLINK) [Y/n/?]
- YES: これは任意ですが、経路情報等の高度なファイアウォールの
問題点の記録を取るのに役立ちます。
【訳注: この部分は、実際は「カーネル/ユーザ ネットワーク・リンク・ドライバ
(Kernel/User network link driver) 」となっています。】
* ルーティング・メッセージ (CONFIG_RTNETLINK) [Y/n/?]
- NO: このオプションはパケットファイアウォールの記録を取ることとは
無関係です。
-- マスカレードに無関係のオプションを飛ばします --
* ファイアウォール機能 (CONFIG_FIREWALL) [Y/n/?]
- YES: カーネルに IPCHAINS ファイアウォールツールによる設定ができる
ようにします。
* ソケットでの分別 (CONFIG_FILTER) [Y/n/?]
- 任意: これは IPMASQ と無関係ですが、内部ネットワークに DHCP サーバ
を実装するなら、このオプションが必要になります。
* Unix ドメイン・ソケット (CONFIG_UNIX) [Y/m/n/?]
- YES: これで UNIX TCP/IP ソケット機構を有効にします。
* TCP/IP ネットワーキング (CONFIG_INET) [Y/n/?]
- YES: TCP/IP プロトコルを有効にします。
-- マスカレードに無関係のオプションを飛ばします --
* IP: 高機能ルータ (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]
- YES: これ以降の高機能 MASQ オプションの設定が有効になります。
* IP: ポリシールーティング (CONFIG_IP_MULTIPLE_TABLES) [N/y/?]
- NO: MASQ では不要ですが、 TCP/IP 発信元アドレスを用いるか、
或は TOS (Type-Of-Service) 値を用いるルーティング等の高機能
を必要とする人はこのオプションが必要です。
* IP: 等価コスト多重パス (CONFIG_IP_ROUTE_MULTIPATH) [N/y/?]
- NO: 通常の MASQ 機能には不要です。
* IP: 経路決定基準として TOS 値を使用する (CONFIG_IP_ROUTE_TOS) [N/y/?]
- NO: 通常の MASQ 機能には不要です。
* IP: 冗長な経路監視 (CONFIG_IP_ROUTE_VERBOSE) [Y/n/?]
- YES:
IP アドレスを詐称したパケットを破棄し、ログ記録するルーティング
コードを使う際には便利です (強くお薦めします) 。
* IP: 大きなルーティングテーブル (CONFIG_IP_ROUTE_LARGE_TABLES) [N/y/?]
- NO: 通常の MASQ 機能には不要です。
* IP: カーネルレベルの自動構成 (CONFIG_IP_PNP) [N/y/?] ?
- NO: 通常の MASQ 機能には不要です。
* IP: ファイアウォール (CONFIG_IP_FIREWALL) [Y/n/?]
- YES: ファイアウォール機能を有効にします。
* IP: ファイアーウォールのパケット・ネットリンク・デバイス (CONFIG_IP_FIREWALL_NETLINK) [Y/n/?]
- 任意: 任意ですが、この機能は IPCHAINS からコピーしたパケット
をユーザ空間のプログラムに渡してチェックすることを実現します。
* IP: 透過プロキシのサポート (CONFIG_IP_TRANSPARENT_PROXY) [N/y/?]
- NO: 通常の MASQ 機能には不要です。
【訳注: この部分は、実際は「等価プロキシ (IP: transparent proxying)」
となっています。】
* IP: マスカレーディング (CONFIG_IP_MASQUERADE) [Y/n/?]
- YES: 内部ネットワークの TCP/IP パケットを外部ネットワークの
ものに書き換える、 IP マスカレードを有効にします。
* IP: ICMP マスカレーディング (CONFIG_IP_MASQUERADE_ICMP) [Y/n/?]
- YES: ICMP ping パケットのマスカレーディングを実現します
(ICMP のエラーコードは、このオプションの設定に関係なくマスカレード
されます)。
接続のトラブルシューティングに必須の機能です。
* IP: マスカレーディング用特殊モジュールのサポート (CONFIG_IP_MASQUERADE_MOD) [Y/n/?]
- YES: でも任意です。
このオプションは、これ以降のオプションで外側のネットワーク上の
コンピュータと MASQ された内部ネットワーク上のマシン同士を直接的
に接続する TCP/IP ポートフォワーディングを有効にするものです。
* IP: ipautofw マスカレードのサポート(EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPAUTOFW) [N/y/m/?]
- NO: IPautofw は ポートフォワーディングの古い方法です。
殆どが古いコードで占められ、幾つかの問題点も見つかっております。
お薦め*しません*。
【訳注: 原文は ipautofw masq support となっていますが、実際は
ipautofw masquerade support となっています。】
* IP: ipportfw マスカレード・サポート (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW) [Y/m/n/?]
- YES:
外側のネットワーク上のコンピュータと MASQ された内部ネットワーク
上のマシン同士を直接的に接続する IPPORTFW を有効にします。
大概、この機能は内部の SMTP, TELNET, 及び WWW サーバへのアクセス
に用いられます。
FTP ポートフォワーディングはこの MASQ HOWTO の FAQ の章に詳述
されている追加のパッチが必要です。
ポートフォワーディングに関するより詳細な情報は、この HOWTO の
フォワードの章にあります。
【訳注: 原文では EXPERIMENTAL ですが、実際はカーネル 2.2.0 以降、
EXPERIMENTAL が取れています。】
* IP: ip fwmark マスカレード・フォワーディング・サポート (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_MFW) [Y/m/n/?]
- 任意: これは PORTFW の新しい方法です。
このオプションによって、 IPCHAINS は更なる働きが有効になり、
パケットに印を付けられるようになります。
IPMASQADM や IPPORFW 等のユーザ空間ツールを用いて、IPCHAINS
は自動的にパケットのアドレスを書き換えます。
現状では、 PORTFW よりはテストされていませんが、信頼できるでしょう。
現在、 IPMASQADM 及び IPPORTFW の使用が推奨されています。
この MFW に考えがおありでしたら、メールをお願いします。
【訳注: 実際は IP: ipmarkfw masquerade support と、 forwarding が
取れています。】
* IP: ホストではなくルータとして最適化する (CONFIG_IP_ROUTER) [Y/n/?]
- YES: これはカーネルをネットワークサブシステムの為に最適化
しますが、これによってパフォーマンスに重大な影響を及ぼすとは
認められません。
* IP: トンネリング (CONFIG_NET_IPIP) [N/y/m/?]
- NO: この任意の選択は IP マスカレードを通じる IPIP トンネル
の為にあります。
トンネリング/VPN 機能をお望みなら、 GRE 或は IPSEC トンネルの
使用をお薦めします。
* IP: IP 越しの GRE トンネル (CONFIG_NET_IPGRE) [N/y/m/?]
- NO: この任意の選択は、 IP MASQ ボックスを通じる PPTPと GRE
トンネルを実現させる為にあります。
-- マスカレードに無関係のオプションを飛ばします --
* IP: TCP syn クッキーのサポート (デフォルトでは無効) (CONFIG_SYN_COOKIES) [Y/n/?]
- YES: 基本的な TCP/IP ネットワークセキュリティの為に強くお薦めします。
【訳注: 実際は SYN flood protection (SYN 攻撃からの防御)
という名称になっています。】
-- マスカレードに無関係のオプションを飛ばします --
* IP: ウィンドウを大きくします (メモリが 16 MB 未満の場合は勧めません) (CONFIG_SKB_LARGE) [Y/n/?]
- YES: Linux の TCP ウィンドウを最適化する為にお薦めします。
-- マスカレードに無関係のオプションを飛ばします --
* ネットワークデバイスのサポート (CONFIG_NETDEVICES) [Y/n/?]
- YES: Linux ネットワークデバイス層を有効にします。
-- マスカレードに無関係のオプションを飛ばします --
* ネットワーク用ダミードライバのサポート (CONFIG_DUMMY) [M/n/y/?]
- YES: 任意ですが、このオプションは問題のデバッグを助けます。
== ネットワークカードのサポートをコンパイルし忘れないでください!! ==
-- マスカレードに無関係のオプションを飛ばします --
== モデム或は PPPoE DSL モデムをお持ちの方は PPP/SLIP のサポートを
コンパイルし忘れないでください。 ==
-- マスカレードに無関係のオプションを飛ばします --
* /proc ファイルシステムのサポート (CONFIG_PROC_FS) [Y/n/?]
- YES: Linux ネットワークフォワーディングを有効にする為に必要です。
注意 - これらは IP マスカレードの為だけに必要な要素です。 あなたのシステムに特有な、他の設定項目も選択する必要があります。
make modules; make modules_install
/etc/rc.d/rc.local
に
何行か追加します -
.
.
.
#rc.firewall script - Start IPMASQ and the firewall
/etc/rc.d/rc.firewall
.
.
.
必要とされるソフトウェアやパッチ等は 2.0.x カーネルの必要条件 の章をご覧ください。
/usr/src/
ディレクトリへ
展開してください - tar xvzf linux-2.0.x.tar.gz -C /usr/src
ここで、2.0.x の "x" は Linux 2.0 カーネルの現在のバージョンナンバー
です。
完了しましたら、 /usr/src/linux/
というディレクトリがあるか、
またはシンボリックリンクが張られていることを確認してください。
以下の YES or NO の選択 に注意してください。 全てのオプションはこの HOWTO にて後述する正しいカーネルパッチなくして、 有効とは限りません。
* 開発中や不完全なコード/ドライバも表示 (CONFIG_EXPERIMENTAL) [Y/n/?]
- YES: このオプションで IP マスカレード機能のコードが選択
できるようになります。
* ローダブル・モジュールを使用可能にします (CONFIG_MODULES) [Y/n/?]
- YES: これでカーネルの IP MASQ のモジュールが使えるようになります。
* ネットワークのサポート (CONFIG_NET) [Y/n/?]
- YES: ネットワークサブシステムを有効にします。
* ファイアウォール機能 (CONFIG_FIREWALL) [Y/n/?]
- YES: IPFWADM ファイアウォールツールを有効にします。
* TCP/IP ネットワーキング (CONFIG_INET)
- YES: TCP/IP プロトコルを有効にします。
* IP: フォワーディング/ゲートウェイング (CONFIG_IP_FORWARD)
- YES: IPFWADM にて制御される Linux ネットワークのパケット転送と
ルーティングを有効にします。
* IP: syn クッキー (CONFIG_SYN_COOKIES) [Y/n/?]
- YES: 基本的なネットワークセキュリティの為に強くお薦めします。
* IP: ファイアウォーリング (CONFIG_IP_FIREWALL) [Y/n/?]
- YES: ファイアウォール機能を有効にします。
* IP: ファイアウォールのパケット記録 (CONFIG_IP_FIREWALL_VERBOSE) [Y/n/?]
- YES: (任意ですが強くお薦めします) - ファイアウォールに引っかかった
パケットをログに記録します。
* IP: マスカレーディング (CONFIG_IP_MASQUERADE [Y/n/?]
- YES: 内部ネットワークの TCP/IP パケットを外部ネットワークのものに
書き換える、 IP マスカレードを有効にします。
* IP: ipautofw マスカレードのサポート (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPAUTOFW) [Y/n/?]
- NO: IPautofw は ポートフォワーディングの古い方法です。
動作はしますが、 IPPORTFW の方が良い方法ですので、 IPAUTOFW は
お薦めしません。
* IP: ipportfw マスカレード・サポート (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW) [Y/n/?]
- YES: このオプションは 2.0.x カーネルのパッチでのみ有効です。
このオプションで、インターネット上の外側のコンピュータと MASQ
された内部ネットワーク上のマシン同士が直接的に接続できるように
なります。
大概、この機能は内部の SMTP, TELNET, 及び WWW サーバへのアクセスに
用いられます。
FTP ポートフォワーディングはこの FAQ の章に詳述されている追加の
パッチが必要になるでしょう。
ポートフォワーディングに関するより詳細な情報は、この HOWTO の
フォワードの章にあります。
* IP: ICMP マスカレーディング (CONFIG_IP_MASQUERADE_ICMP) [Y/n/?]
- YES: ICMP ping パケットのマスカレーディングを実現します。
任意と思われますが、多くのプログラムが ICMP サポートなくして
完全には機能し得ないでしょう。
* IP: loose UDP ポートフォワーディング (EXPERIMENTAL) (CONFIG_IP_MASQ_LOOSE_UDP) [Y/n/?]
- YES: このオプションは 2.0.x カーネルにパッチを適用することに
よってのみ有効です。
このオプションで、インターネットを経由する、 NAT を用いるような
ネットワーク対戦型ゲームが、マスカレードされた内部ネットワーク上の
コンピュータで出来るようになります。
詳細についてはこの HOWTO の FAQ の章に掲載しています。
* IP: 常にデフラグメントする (CONFIG_IP_ALWAYS_DEFRAG) [Y/n/?]
- YES: この機能は IP MASQ 接続を最適化します。- 強くお薦めします。
* IP: ホストとしてではなくルータとして最適化する (CONFIG_IP_ROUTER) [Y/n/?]
- YES: これによってカーネルをネットワークサブシステムとして
最適化します。
* IP: 発信元アドレスで経路付けされたフレームを破棄する (CONFIG_IP_NOSR) [Y/n/?]
- YES: 基本的なネットワークセキュリティの為に強くお薦めします。
* ネットワーク用ダミードライバのサポート (CONFIG_DUMMY) [M/n/y/?]
- YES: 任意ですが、このオプションは問題をデバッグする際の
助けになります。
* /proc ファイルシステムのサポート (CONFIG_PROC_FS) [Y/n/?]
- YES: Linux カーネルがネットワーク上でパケットを転送する
機能を有効にする為に必要です。
注意 - これらは IP マスカレードの為だけに必要な要素です。 あなたのネットワークやハードウェアに特有な他の設定項目も選択する 必要があります。
make modules; make modules_install
/etc/rc.d/rc.local
に何行か
追加します -
.
.
.
#rc.firewall script - Start IPMASQ and the firewall
/etc/rc.d/rc.firewall
.
.
.
この HOWTO では 2.3.x と 2.4.x カーネルは未だ取り扱っていません。 2.3.x/2.4.x カーネルの必要条件 の章に記される URL を参照するか、それらを取り扱っている新しい HOWTO を参照してください。
全ての 内部ネットワーク上で MASQ された マシンは、 インターネットで公式に割り当てられたアドレスを持つべき*ではありません*。 ですので、インターネット上のアドレスとぶつからずに、内部ネットワークの マシンにアドレスを確保する為の、特殊で適切な方法が存在しなければ なりません。
>オリジナルの IP マスカレード FAQ より -
RFC 1918 はインターネットへ直接接続されないか、または "プライベート" ネットワークに用いられる IP アドレスに関する公式文書です。 この用途の為に特別に割り当てられた 3つの IP アドレスのブロック があります。
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 ネットワーク番号の集合であることに
注意してください。
参考の為に、私は 192.168.0.0 のネットワークアドレスと 255.255.255.0
の Class-C サブネットマスクを選択しており、この HOWTO においてもこれを
反映しています。
でも、上記のプライベートネットワークは全て有効ですけれども、必ず正しい
サブネットマスクを用いてください。
ですので、もし Class-C のネットワークを使うなら、あなたのネットワーク
上の TCP/IP プロトコルが機能しているマシンに割り当てられる番号は、
192.168.0.1, 192.168.0.2, 192.168.0.3, ..., 192.168.0.x となります。
192.168.0.1 は多くの場合、外部ネットワークへ出て行く為の 内部ゲートウェイ或は Linux MASQ マシンとなります。 192.168.0.0 と 192.168.0.255 はそれぞれネットワーク及び ブロードキャストアドレスであることに注意してください (これらのアドレスは*予約済み*です) 。 これらのアドレスをマシンに割り当てないでください、さもなくば あなたのマシンやネットワークは正常に動作しません。
この点に関しては、カーネルとその他必要なパッケージがインストール されているべきです。 全てのネットワークの IP アドレス、ゲートウェイ、そして DNS アドレスは Linux MASQ サーバ上でも同様に設定されているべきです。 もし Linux ネットワークカードの設定方法を知らないなら、この HOWTO の 2.0.x カーネルの必要条件 或は 2.2.x カーネルの必要条件 の章を参照してください。
さて、最後にやり残したことは、指定されたマシンに適切にパケットを 転送 (FORWARD) 及び マスカレード (MASQUERADE) する為の、 IP ファイアウォーリングツールを設定することです。
** この実現には色々と違う方法が沢山あり得ます。 これから示す提案と実例は私の所で動作していますが、あなたなりの違う アイディアや必要性があることでしょう。
この章は IP マスカレード機能が動作し得る為の、素の最低限の ファイアウォールのルールセットを紹介する*だけ*です。 一旦 (この HOWTO にて後述する) IP MASQ のテストが成功したら、 より安全なファイアウォールのルールセットの為に 強い IPFWADM のルールセット と 強い IPCHAINS のルールセット の章を参照してください。 更に、詳細については IPFWADM (2.0.x) 及び/又は IPCHAINS (2.2.x) のオンラインマニュアルを参照してください。
2.1.x と 2.2.x カーネルの両方にて IP マスカレーディングのルールを 操作する為に、 IPFWADM はもはやファイアウォールツールとしては 使えない ことに注意してください。 今、これら新しいカーネルでは IPCHAINS ツールを使います。 この変更に関する詳細については、 よくある質問 (FAQ) の章を参照してください。
初歩的で単純なルールセットにて、 以下に記すように /etc/rc.d/rc.firewall を作成します -
#!/bin/sh
#
# rc.firewall - IPCHAINS を用いた、 2.1.x 及び 2.2.x カーネルの為の、
# 初歩的で単純な IP マスカレードのテスト
#
#
# 必要な IP MASQ モジュールを全て読み込みます。
#
# 注意 - 必要とする IP MASQ モジュールだけをロードしてください。
# 現在の IP MASQ モジュールの全てが以下に記されていますが、
# コメントアウトすればロードを抑止できます。
# モジュールのロードの初期段階に必要です。
#
/sbin/depmod -a
# PORT メソッドを用いた FTP ファイル転送の適切なマスカレーディングを
# サポートします。
# 【訳注: PORT メソッドはパッシブモードでない、通常の FTP 接続を指します。
# 接続後、データポートを使用する際に、 FTP サーバ側からクライアント側に
# 対して TCP 接続を確立しようとします。
# このモジュールは FTP クライアントをパッシブモードで使用する際には不要
# です。】
#
/sbin/modprobe ip_masq_ftp
# UDP 上で RealAudio のマスカレーディングをサポートします。
# このモジュールがないと、 RealAudio は機能しますが、 TCP モードで動作
# し、その結果として音質の劣化をひき起こします。
#
#/sbin/modprobe ip_masq_raudio
# IRC における DCC ファイル転送のマスカレーディングをサポートします。
#
#/sbin/modprobe ip_masq_irc
【訳注: DCC (Direct Client Connection) とは、client 同士が IRC server を
介さずに直接 connection を張ってファイルを送受したり、会話をしたりする
しくみを指します。
DCC の詳細については
irchat-micro-howto や、
irchat-jp パッケージ
に添付されている FAQ-about-jp24.txt 等を参照してください。】
# デフォルトで Quake 及び QuakeWorld のマスカレーディングをサポートします。
# このモジュールは Linux MASQ サーバの後ろ側にいる複数のユーザの為にあり
# ます。
# Quake I, II, 及び III をプレイするつもりなら、 2番目の例を用いてください。
#
# 注意 - もし QUAKE モジュールのロードに失敗して ERROR が表示されたら、
# ----- それはバグが含まれた古いカーネルです。最新のカーネルに更新して
# ください。
#
#Quake I / QuakeWorld (26000 及び 27000 番ポート)
#/sbin/modprobe ip_masq_quake
#
#Quake I/II/III / QuakeWorld (26000, 27000, 27910, 27960 番ポート)
#/sbin/modprobe ip_masq_quake 26000,27000,27910,27960
# CuSeeme ビデオ会議ソフトウェアのマスカレーディングをサポートします。
#
#/sbin/modprobe ip_masq_cuseeme
# VDO-live ビデオ会議ソフトウェアのマスカレーディングをサポートします。
#
#/sbin/modprobe ip_masq_vdolive
#重要 - デフォルトで無効になっている IP フォワーディングを有効にします。
#
# Redhat ユーザへ - /etc/sysconfig/network を以下のように
# 書き換えて、このオプションを変更できる
# 筈ですので、試してみてください。
#
# FORWARD_IPV4=false
# ↓
# FORWARD_IPV4=true
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#重要 - 2.2.x カーネルのデフォルトで無効になっている IP デフラグメント
# (最適化)を有効にします。
# これはコンパイル時のオプションで有効でしたが、 2.2.12 の時に
# その動作が変更されてしまいました。
#
echo "1" > /proc/sys/net/ipv4/ip_always_defrag
# 動的 IP ユーザへ -
#
# もし SLIP, PPP, 或は DHCP で動的に IP アドレスを得ているなら、ここに
# 記す以下のオプションを有効にしてください。
# これによって IP MASQ において動的 IP アドレスのハッキングを実現し、
# 容易に Diald や同様のプログラムの稼働時間を伸ばします。
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
【訳注: このオプションを有効にすると、 ppp 等の再接続時、インターフェースの
IP アドレスが変わっても、以前のマスカレードテーブルを破棄せず、 IP アドレス
を書き換えて再利用します。】
# 幾つかのインターネット対応ゲームが要求する、ルーズ UDP パッチを
# 有効にします。
#
# IP マスカレードボックス越しにインターネット対応ゲームをやりたくて、
# そのゲームを立ち上げて再設定することなく楽しみたいなら、このオプションを
# 有効にしてみてください ("#" によるコメントアウトを削除します) 。
# 内部マシンが UDP ポートスキャンで攻撃されやすくなる可能性があるので、
# このオプションはデフォルトでは無効になっています。
#
#echo "1" > /proc/sys/net/ipv4/ip_masq_udp_dloose
# MASQ タイムアウト値
#
# TCP セッションにおいて 2 時間のタイムアウト値を、
# TCP/IP "FIN" パケットを受信後のトラフィックにおいて 10 秒のタイムアウト
# 値を、
# UDP トラフィックにおいて 160 秒のタイムアウト値(MASQ された ICQ ユーザ
# の為に重要です) を設定します。
#
/sbin/ipchains -M -S 7200 10 160
# DHCP - ADSL や ケーブルモデムのユーザのような、DHCP 或は BOOTP の
# いずれかから外部 IP アドレスを取得する人は、この後に記述される
# ipchains の deny コマンドの前にこの行を必要とします。
# "bootp_client_net_if_name" には DHCP/BOOTP サーバがアドレスを
# 割り当てるインターフェース名に書き換えてください。
# 恐らく "eth0", "eth1" 等になることでしょう。
#
# この例は今の所コメントアウトしています。
#
#/sbin/ipchains -A input -j ACCEPT -i bootp_clients_net_if_name -s 0/0 67 -d 0/0 68 -p udp
# 単純な IP フォワーディング及びマスカレーディングを有効にします。
#
# 注意 - 以下の例は 192.168.0.x の内部 LAN アドレスで 255.255.255.0 又は
# "24" ビットのサブネットマスクよりなるネットワークが、 eth0
# インターフェースを通じてインターネットへ接続される場合を記して
# います。
#
# ** あなたの内部 LAN の設定に合うように、ネットワーク番号、
# ** サブネットマスク及びインターネット接続のインターフェース名
# ** を変更してください。
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -i eth0 -s 192.168.0.0/24 -j MASQ
一旦 /etc/rc.d/rc.firewall のルールセットを編集し終えたら、実行可能に
するように chmod 700 /etc/rc.d/rc.firewall
を入力し、実行して
ください。
さて、ファイアウォールのルールセットの準備が整いました。 これをリブート後に実行させる必要があります。 実行には、毎回手で行う方法 (苦痛です) か、ブートスクリプトに追加する方法 があります。 以下に 2つの方法を記しておきました -
この手法の問題点は、強固なファイアウォールのルールセットを動作させようと する際に、ファイアウォールはブート終了に至るまで実行されない、という点に あります。 好ましい手法としては、ネットワークサブシステムの設定がロードされた直後に、 ファイアウォールの設定がロードされるようにすることです。 今の所、この HOWTO は /etc/rc.d/rc.local の設定のみを扱っています。 より強固なシステムをお望みなら、 この HOWTO の最後の章にリンクがある TrinityOS の10章を参照することをお薦め します。
/etc/rc.d/rc.firewall
この手法の問題点は、強固なファイアウォールのルールセットを動作させようと する際に、ファイアウォールはブート終了に至るまで実行されない、という点に あります。 好ましい手法としては、ネットワークサブシステムの設定がロードされた直後に、 ファイアウォールの設定がロードされるようにすることです。 今の所、この HOWTO は /etc/rc.d/rc.local の設定のみを扱っています。 より強固なシステムをお望みなら、この HOWTO の最後の章にリンクがある TrinityOS の10章を参照することをお薦めします。
上述のファイアウォールのルールセットを変更したいユーザへの注意 -
完全な TCP/IP ネットワークを実現する上述の方法の代わりに、*単体のマシン だけ*の IP マスカレーディングを実現したいと思う方もいることでしょう。 例えば、私は 192.168.0.2 と 192.168.0.8 のホストだけをインターネットへ 接続させたいとします。この時内部ネットワーク上に他のマシンは存在しません。 私は (上述の) "単純な IP フォワーディング及びマスカレーディングを実現する" の章の、 /etc/rc.d/rc.firewall のルールセットを、以下のように書き換えます。
#!/bin/sh
#
# 単純な IP フォワーディング及びマスカレーディングを有効にします。
#
# 注意 - 以下の例は 192.168.0.x の内部 LAN アドレスで 255.255.255.0 又は
# "24" ビットのサブネットマスクよりなるネットワークが、 eth0
# インターフェースを通じてインターネットへ接続される場合を記して
# います。
#
# ** あなたの内部 LAN の設定に合うように、ネットワーク番号、
# ** サブネットマスク及びインターネット接続のインターフェース名
# ** を変更してください。
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -i eth0 -s 192.168.0.2/32 -j MASQ
/sbin/ipchains -A forward -i eth0 -s 192.168.0.8/32 -j MASQ
よくある間違い -
初期段階の IP Masq ユーザが犯しがちなよくある間違いとして、 以下のようなコマンドがあります -
/sbin/ipchains -P forward masquerade
決して、デフォルトポリシーをマスカレーディングにしてはいけません。 さもなくば、経路テーブルを操作できる誰かがあなたのゲートウェイマシンに 穴を開け、自身の身元をマスカレードしてしまうかも知れないからです!
繰り返します、これらの行は /etc/rc.d/rc.firewall
ファイルか、
あなたが選択する他の rc ファイルのうちの一つに追加できるか、
IP マスカレードを必要とする度毎に手作業で実行できます。
IPCHAINS と強固な IPCHAINS のルールセットの例の詳細な手引に関しては、 強い IPFWADM のルールセット と 強い IPCHAINS のルールセット の章を参照してください。 更に詳細な IPCHAINS の使い方に関しては、プライマリ IPCHAINS サイトである http://netfilter.filewatcher.org/ipchains/ か、 Linux IP CHAINS HOWTO Backup を参照してください。
初歩的で単純なルールセットにて、 以下に記すように /etc/rc.d/rc.firewall を作成します -
# rc.firewall - IPFWADM を用いた、 2.0.x カーネルの為の、
# 初歩的で単純な IP マスカレードの設定
#
# 必要な IP MASQ モジュールを全て読み込みます。
#
# 注意 - 必要とする IP MASQ モジュールだけをロードしてください。
# 現在の IP MASQ モジュールの全てが以下に記されていますが、
# コメントアウトすることでロードを抑止することができます。
# モジュールのロードの初期段階に必要です。
#
#
/sbin/depmod -a
# Supports the proper masquerading of FTP file transfers using the PORT method
# PORT メソッドを用いた FTP ファイル転送の適切なマスカレーディングを
# サポートします。
# 【訳注: PORT メソッドはパッシブモードでない、通常の FTP 接続を指します。
# 接続後、データポートを使用する際に、 FTP サーバ側からクライアント側に
# 対して TCP 接続を確立しようとします。
# このモジュールは FTP クライアントをパッシブモードで使用する際には不要
# です。】
#
/sbin/modprobe ip_masq_ftp
# UDP 上で RealAudio のマスカレーディングをサポートします。
# このモジュールがないと、 RealAudio は機能しますが、 TCP モードで動作
# し、その結果として音質の劣化をひき起こします。
#
#/sbin/modprobe ip_masq_raudio
# IRC における DCC ファイル転送のマスカレーディングをサポートします。
【訳注: DCC (Direct Client Connection) とは、client 同士が IRC server を
介さずに直接 connection を張ってファイルを送受したり、会話をしたりする
しくみを指します。
DCC の詳細については
irchat-micro-howto や、
irchat-jp パッケージ に添付されている FAQ-about-jp24.txt 等を参照してください。】
#
#/sbin/modprobe ip_masq_irc
# デフォルトで Quake 及び QuakeWorld のマスカレーディングをサポートします。
# このモジュールは Linux MASQ サーバの後ろ側にいる複数のユーザの為にあり
# ます。
# Quake I, II, 及び III をプレイするつもりなら、 2番目の例を用いてください。
#
# 注意 - もし QUAKE モジュールのロードに失敗して ERROR が表示されたら、
# ----- それはバグが含まれた古いカーネルです。最新のカーネルに更新して
# ください。
#
#Quake I / QuakeWorld (ports 26000 and 27000)
#/sbin/modprobe ip_masq_quake
#
#Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake 26000,27000,27910,27960
# CuSeeme ビデオ会議ソフトウェアのマスカレーディングをサポートします。
#
#/sbin/modprobe ip_masq_cuseeme
# VDO-live ビデオ会議ソフトウェアのマスカレーディングをサポートします。
#
#/sbin/modprobe ip_masq_vdolive
#致命的 - デフォルトで無効になっている IP フォワーディングを有効にします。
#
# Redhat ユーザへ - /etc/sysconfig/network を以下のように
# 書き換えて、このオプションを変更させる
# ことができるでしょう。
#
# FORWARD_IPV4=false
# to
# FORWARD_IPV4=true
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#致命的 - デフォルトで無効になっている IP デフラグメント(最適化)を有効に
# します。
# これはコンパイル時のオプションで有効でしたが、 2.2.12 の時に
# その動作が変更されてしまいました。
# このオプションは 2.0 及び 2.2 カーネルの両方に必要です。
#
echo "1" > /proc/sys/net/ipv4/ip_always_defrag
# 動的 IP ユーザへ -
#
# もし SLIP, PPP, 或は DHCP で動的に IP アドレスを得ているなら、ここに
# 記す以下のオプションを有効にしてください。
# これによって IP MASQ において動的 IP アドレスのハッキングを実現し、
# 容易に Diald や同様のプログラムの稼働時間を伸ばします。
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# MASQ タイムアウト値
#
# TCP セッションにおいて 2 時間のタイムアウト値を、
# TCP/IP "FIN" パケットを受信後のトラフィックにおいて 10 秒のタイムアウト
# 値を、
# UDP トラフィックにおいて 160 秒のタイムアウト値(MASQ された ICQ ユーザ
# の為に重要です) を設定します。
#
/sbin/ipfwadm -M -s 7200 10 160
# DHCP - ADSL や ケーブルモデムのユーザのような、DHCP 或は BOOTP の
# いずれかから、外部 IP アドレスを取得する人は、この後に記述される
# ipchains の deny コマンドの前にこの行を必要とします。
# "bootp_client_net_if_name" には DHCP/BOOTP サーバがアドレスを
# 割り当てるインターフェース名に書き換えてください。
# 恐らく "eth0", "eth1" 等になることでしょう。
#
# この例は今の所コメントアウトしています。
#
#
#/sbin/ipfwadm -I -a accept -S 0/0 67 -D 0/0 68 -W bootp_clients_net_if_name -P udp
# 単純な IP フォワーディング及びマスカレーディングを有効にします。
#
# 注意 - 以下の例は 192.168.0.x の内部 LAN アドレスで 255.255.255.0 又は
# "24" ビットのサブネットマスクよりなるネットワークが、 eth0
# インターフェースを通じてインターネットへ接続される場合を記して
# います。
#
# ** あなたの内部 LAN の設定に合うように、ネットワーク番号、
# ** サブネットマスク及びインターネット接続のインターフェース名
# ** を変更してください。
#
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm -F -a m -W eth0 -S 192.168.0.0/24 -D 0.0.0.0/0
一旦 /etc/rc.d/rc.firewall のルールセットを編集し終えたら、実行可能に
するように chmod 700 /etc/rc.d/rc.firewall
を入力し、実行して
ください。
さて、ファイアウォールのルールセットの準備が整いました。 これをリブート後に実行させる必要があります。 実行には、毎回手で行う方法 (苦痛です) か、ブートスクリプトに追加する方法 があります。 以下に 2つの方法を記しておきました -
この手法の問題点は、強固なファイアウォールのルールセットを動作させようと する際に、ファイアウォールはブート終了に至るまで実行されない、という点に あります。 好ましい手法としては、ネットワークサブシステムの設定がロードされた直後に、 ファイアウォールの設定がロードされるようにすることです。 今の所、この HOWTO は /etc/rc.d/rc.local の設定のみを扱っています。 より強固なシステムをお望みなら、この HOWTO の最後の章にリンクがある TrinityOS の10章を参照することをお薦めします。
/etc/rc.d/rc.firewall
この手法の問題点は、強固なファイアウォールのルールセットを動作させようと する際に、ファイアウォールはブート終了に至るまで実行されない、という点に あります。 好ましい手法としては、ネットワークサブシステムの設定がロードされた直後に、 ファイアウォールの設定がロードされるようにすることです。 今の所、この HOWTO は /etc/rc.d/rc.local の設定のみを扱っています。 より強固なシステムをお望みなら、この HOWTO の最後の章にリンクがある TrinityOS の10章を参照することをお薦めします。
上述のファイアウォールのルールセットを変更したいユーザへの注意 -
完全な TCP/IP ネットワークを実現する上述の方法の代わりに、*単体のマシン だけ*の IP マスカレーディングを実現したいと思う方もいることでしょう。 例えば、私は 192.168.0.2 と 192.168.0.8 のホストだけをインターネットへ 接続させたいとします。この時内部ネットワーク上に他のマシンは存在しません。 私は (上述の) "単純な IP フォワーディング及びマスカレーディングを実現する" の章の、 /etc/rc.d/rc.firewall のルールセットを、以下のように書き換えます。
#!/bin/sh
#
# 単純な IP フォワーディング及びマスカレーディングを有効にします。
#
# 注意 - 以下の例は 192.168.0.x の内部 LAN アドレスで 255.255.255.0 又は
# "24" ビットのサブネットマスクよりなるネットワークが、 eth0
# インターフェースを通じてインターネットへ接続される場合を記して
# います。
#
# ** あなたの内部 LAN の設定に合うように、ネットワーク番号、
# ** サブネットマスク及びインターネット接続のインターフェース名
# ** を変更してください。
#
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm -F -a m -W eth0 -S 192.168.0.2/32 -D 0.0.0.0/0
/sbin/ipfwadm -F -a m -W eth0 -S 192.168.0.8/32 -D 0.0.0.0/0
よくある間違い -
初期段階の IP Masq ユーザが犯しがちなよくある間違いとして、 以下のようなコマンドがあります -
ipfwadm -F -p masquerade
決して、デフォルトポリシーをマスカレーディングにしてはいけません。 さもなくば、経路テーブルを操作できる誰かがあなたのゲートウェイマシンに 穴を開け、自身の身元をマスカレードしてしまうかも知れないからです!
繰り返します、これらの行は /etc/rc.d/rc.firewall
ファイルか、
あなたが選択する他の rc ファイルのうちの一つに追加できるか、
IP マスカレードを必要とする度毎に手作業で実行できます。
より強固な IPCHAINS と IPFWADM のルールセットの例の詳細な手引に関しては、 強い IPCHAINS のルールセット と 強い IPFWADM のルールセット の 章を参照してください。