マスカレードの基礎知識

マスカレードは、Linux固有のNAT (ネットワークアドレス変換)です。マスカレードを使用すると、小規模LAN (ホストがプライベート範囲のIPアドレスを使用するネットワーク—30.1.2項 「ネットマスクとルーティング」を参照)をインターネット(パブリックIPアドレスを使用するネットワーク)に接続することができます。このLANのホストをインターネットに接続するためには、プライベートアドレスをパブリックアドレスに変換する必要があります。この変換処理は、LANとインターネット間のゲートウェイとして動作するルータで行います。その原理は単純です。ルータには複数のネットワークインタフェースがあります。一般的には、ネットワークカードと、インターネットに接続する個別のインタフェースです。インターネット接続用インタフェースは外部に接続し、その他のインタフェースはLAN上のホストに接続します。ルータのネットワークカード(eth0など)に接続されているローカルネットワーク内のホストは、ローカルネットワーク以外の宛先を持つすべてのパケットをデフォルトゲートウェイ、つまりルータに送信します。

[Important]正しいネットワークマスクの使用

ネットワークを設定する際は、すべてのローカルホストに同じブロードキャストアドレスとネットマスクを設定する必要があります。そうしないと、パケットが正しく転送されません。

前述のように、LAN上のホストがインターネット上のアドレス宛にパケットを送信すると、そのパケットは常にデフォルトルータに送信されます。しかし、そのためには、これらのパケットを転送できるようにルータを設定しておく必要があります。セキュリティ上の理由から、デフォルトのインストールではこれは無効になっています。有効にするには、/etc/sysconfig/sysctlファイルのIP_FORWARD変数をIP_FORWARD=yesに設定します。

宛先ホストからは、ルータは参照できますが、内部ネットワーク内の送信元ホストに関する情報は一切分かりません。この技術がマスカレード(masquerading:「変装」の意)と呼ばれているのは、このためです。アドレス変換が行われているため、あらゆる応答パケットははじめにルータに届きます。ルータはこれらの着信パケットを識別し、宛先アドレスを変換して、ローカルネットワーク内の正しいホストにパケットを転送します。

着信トラフィックのルーティングはマスカレードテーブルによって決まるため、外部から内部ホストへの接続を開く方法はありません。テーブルには、そのような接続に関するエントリがありません。また、確立済みの接続に対してはテーブルでステータスエントリが割り当てられるため、そのエントリは他の接続では使用されません。

このため、マスカレードを使用すると、ICQ、cucme、IRC (DCC、CTCP)、FTP (PORTモード)などいくつかのアプリケーションプロトコルで問題が発生する可能性があります。Web ラウザ、標準のFTPプログラム、および他の多くのプログラムがPASVモードを使用します。PASVモードを使用すれば、パケットフィルタとマスカレードに関する問題が発生する可能性はかなり低くなります。