次のページ 前のページ 目次へ

3. IP マスカレードの設定

プライベートネットワーク上に重要な情報がある場合には、 IP マスカレードを実装する前に、セキュリティの観点から慎重に検討して ください。 これを怠ると、 IP マスカレードはあなたがインターネットへ出て行く ゲートウェイになりますが、これと共に外側の世界にいる誰かがあなたの ネットワークに侵入するゲートウェイともなってしまうのです。

ひとたび IP マスカレード機能を設定するならば、強力な IPFWADM/IPCHAINS によるファイアウォールのルールセットを実装することを強くお薦めします。 詳細は後述の 強い IPFWADM のルールセット 及び 強い IPCHAINS のルールセット の章をご覧ください。

3.1 IP マスカレードを組み込んだカーネルのコンパイル

お使いの Linux ディストリビューションが、既に下記の必要な機能の全て をサポートしていて… - そして全ての MASQ に関係するモジュールがコンパイルされている (多くの モジュラーカーネルは必要とされる全てが含まれていることでしょう) なら、 カーネルを再コンパイルする必要はありません。 あなたの使用する Linux ディストリビューションが MASQ 機能を装備して いると自信が持てないなら、 マスカレードサポート済みディストリビューション の章を参照してください。 このリストが信用できないか、あなたの使用するディストリビューションが リストにないなら、以下のテストを試してみてください -

これらがあれば、あなたのカーネルにはマスカレード機能が実装されています。

あなたの使用するディストリビューションが標準で IP マスカレーディング をサポートしているにもかかわらず上記ファイルが見つからない場合、 マスカレード機能はサポートされていないと推測せざるを得ません。 その場合…カーネルをコンパイルしなければなりません。 でも、ご心配無く。難しくないですから。

標準でサポートされているか否かにかかわらず、この章は他の有用な情報を 含んでいますので、読むことを強くお薦めします。

Linux 2.2.x カーネル

必要とされるソフトウェアやパッチ等は 2.2.x カーネルの必要条件 の章をご覧ください。

  * 開発中や不完全なコード/ドライバも表示 (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 マスカレードの為だけに必要な要素です。 あなたのシステムに特有な、他の設定項目も選択する必要があります。

Linux 2.0.x カーネル

必要とされるソフトウェアやパッチ等は 2.0.x カーネルの必要条件 の章をご覧ください。

  * 開発中や不完全なコード/ドライバも表示 (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 マスカレードの為だけに必要な要素です。 あなたのネットワークやハードウェアに特有な他の設定項目も選択する 必要があります。

Linux 2.3.x / 2.4.x カーネル

この HOWTO では 2.3.x と 2.4.x カーネルは未だ取り扱っていません。 2.3.x/2.4.x カーネルの必要条件 の章に記される URL を参照するか、それらを取り扱っている新しい HOWTO を参照してください。

3.2 プライベートネットワーク IP アドレスを内部 LAN に割り当てる

全ての 内部ネットワーク上で 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 はそれぞれネットワーク及び ブロードキャストアドレスであることに注意してください (これらのアドレスは*予約済み*です) 。 これらのアドレスをマシンに割り当てないでください、さもなくば あなたのマシンやネットワークは正常に動作しません。

3.3 IP フォワーディングポリシーを設定する

この点に関しては、カーネルとその他必要なパッケージがインストール されているべきです。 全てのネットワークの 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) のオンラインマニュアルを参照してください。

Linux 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つの方法を記しておきました -

上述のファイアウォールのルールセットを変更したいユーザへの注意 -

完全な 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 を参照してください。

Linux 2.0.x カーネル

初歩的で単純なルールセットにて、 以下に記すように /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つの方法を記しておきました -

上述のファイアウォールのルールセットを変更したいユーザへの注意 -

完全な 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 のルールセット の 章を参照してください。


次のページ 前のページ 目次へ