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

2. 予備知識

2.1 IP マスカレードとは

IP マスカレードは、 Linux におけるネットワーキング機能であり、多くの 商用のファイアウォールやネットワークルータに見受けられる 1対多の NAT (Network Address Translation: ネットワークアドレス変換) と似ています。 例として、 Linux ホストが PPP やイーサネット等にてインターネットに接続 されているとしましょう。 IP マスカレードの特徴は Linux ボックスに (PPP やイーサネット等にて) 接続される "内部の" コンピュータにも等しくインターネットを 利用できるようにします。 Linux の IP マスカレーディングは、内部マシンが公式に割り当てられた IP アドレスを持たなくても、内部マシンがインターネットに 接続できるようにします。

マスカレードは、 マスカレードゲートウェイを経由して、全てのマシンを 隠してインターネットにアクセスできるようにします。 インターネット上の他のマシンからは、発生する全てのトラフィックは あたかも IP マスカレード Linux サーバ自身からのものであるように 見えます。 その追加機能に加えて、 IP マスカレードは非常に安全なネットワーキング 環境を作るための土台を提供します。 しっかり作られたファイアウォールを伴えば、しっかり設定された マスカレードシステムと内部の LAN のセキュリティを壊すことはかなり 難しくなるでしょう。

マスカレードが 1対1 の NAT やプロキシによる問題解決方法とどのように 違うのか、もっと知りたい方は、 FAQ の章 の IP マスカレードは、プロキシや NAT サービスとどう違うのでしょうか? をご覧ください。

2.2 現在の状態

IP マスカレードは何年もの間使われ続けており、Linux カーネル 2.2.x の段階にある現在、とても成熟した状態にあります。 Linux カーネル 1.3.x から、MASQ サポートが組み込まれています。 今日、多くの個人や商業ベースのビジネスにおいて使われ、優秀な結果を おさめています。

Web ブラウジング、 TELNET, FTP, PING, TRACEROUTE 等の一般的な ネットワークの利用は、 IP マスカレード上でうまく動作します。 FTP, IRC とリアルオーディオ (Real Audio) のような他の コミュニケーションは適切な IP MASQ モジュールをロードすればうまく 動作します。 ストリーミングオーディオのような他のネットワークに特有のプログラム ( MP3, True Speech など) も同様に動作します。 メーリングリストの何人かの優秀なユーザはビデオ会議ソフトウェアに おいても良い結果を出しました。

内部と外部のイーサネットネットワークの間を 1 つだけのネットワークカード (NIC) にて IP マスカレードを動作させることはお薦めできません。 詳細については FAQ の章の IP マスカレードは1枚だけのイーサネットネットワークカードで動作しますか? にある解説をご覧ください。

ともかく、より完全なサポート済みソフトウェアの一覧は サポートしているクライアントソフトウエアとその他の設定情報 の章をご覧になってください。

IP マスカレードは、他の様々な異なる OS やハードウェアプラットフォーム にて稼働する 'クライアントマシン' に対し、サーバとして良好に動作します。

以下に内部の MASQ されたシステム上での成功例を示します -

  • Unix: Sun Solaris, *BSD, Linux, Digital UNIX, 等.
  • Microsoft Windows 2000, NT (3.x と 4.x), 95/98/ME, Windows for Workgroups (TCP/IP パッケージを含む)
  • IBM OS/2
  • MacTCP 或は Open Transport のいずれかが稼働する Apple Macintosh MacOS マシン
  • パケットドライバと NCSA Telnet パッケージを含む DOS ベースのシステム
  • VAXen
  • Linux と NT が稼働する Compaq/Digital Alpha
  • AmiTCP 或は AS225-stack を含む Amiga コンピュータ

このリストはまだまだ続きます。要するに、 TCP/IP を喋れる OS プラットフォームであれば、 IP マスカレードと一緒に使えるはずなのです。

2.3 IP マスカレードが有用な場合

  • インターネットに接続された Linux ホストがあり、
  • その Linux box にローカルサブネット上で TCP/IP 接続された コンピュータがあるか、
  • Linux ホストにモデムが接続されていて、他のコンピュータに接続する PPP 或は SLIP サーバとして動作し、
  • それら 他の マシンは公式或は公共に割り当てられた IP アドレスを 持たず (すなわち、プライベート TCP/IP 番号が割り当てられている)、
  • そして勿論、あなたが追加の公式/公共の TCP/IP アドレスを ISP から入手し、 Linux をルータとして設定するか或は外部ルータを購入 する為の余分なお金を使うことなく、それら 他の マシンが インターネットに接続できるようにしたいのならば。

2.4 IP マスカレードが無用な場合

  • インターネットに接続されているマシンがスタンドアロンの Linux ホストの場合。 (しかしながらファイアウォールを構築するのは良い考えです) あるいは、
  • 既に 【訳注: サーバだけでなく】 クライアントマシンの為にも 公式な IP アドレスを複数割り当てている場合、IP マスカレードは必要 ありません。
  • そしてもちろん、 Linux を使って 'タダ乗り' する考えが好きで なく、全く同じことをする高価な商用ツールを使うことをより快適だと 感じる場合。

2.5 どのようにして IP マスカレードは動作するか

Ken Eves 氏によるオリジナルの IP マスカレード FAQ から引用します -

これはもっとも簡単な構成図です - 

   SLIP/PPP         +------------+                         +-------------+
   ISP へ           |  Linux     |         SLIP/PPP        | Anybox      |
  <---------- modem1|    #1      |modem2 ----------- modem3|             |
    111.222.121.212 |            |           192.168.0.100 |             |
                    +------------+                         +-------------+

上図において、 IP_MASQUERADING を伴う Linux box が Linux #1 として
インストールされており、 modem1 を使った SLIP 或は PPP 接続にて、
インターネットに接続されています。
このマシンにはパブリック IP アドレスとして 111.222.121.212 が割り当て
られています。
更に発信側のダイヤルインと SLIP 或は PPP 接続を受け入れるための
modem2 が接続されています。
第2 のシステム ( Linux が稼働している必要はありません) は
Linux #1 box へ発呼し、 SLIP 或は PPP 接続を開始します。
このマシンはインターネットからパブリックな IP アドレスが
*割り当てられません*ので、プライベートアドレスの 192.168.0.100 を
用います。(下記参照。)

マスカレードとルーティングの設定が適切であれば、マシン "Anybox" は
あたかもインターネットに直接接続されたかのように振る舞うことができます
(いくつかの例外はありますが)。

Pauline Middelink 氏からの引用 - 

Linux #1 box は "ANYBOX" マシンのゲートウェイとして設定されていなければ
ならないことを忘れてはなりません。 (ここで、それがデフォルトルートなのか、
或は単なるサブネットであるのかは問題ではありません。)

もし "ANYBOX" がそのようにできないのであれば、 Linux マシンは全ての
ルーティングされたアドレスに対して代理 arp をサポートするよう
設定されるべきです。

けれども、代理 arp のセットアップと設定はこの文書の扱う範囲外です。

次にあげるのは comp.os.linux.networking からの過去の投稿からの
引用で、上記例に合致するように名前を書き換え、編集したものです - 

   o ANYBOX に Linux マシンがゲートウェイだと教えておきます。
   o マシン ANYBOX に、 PPP 或は SLIP 接続される Linux box が
     ゲートウェイであることを教えておきます。
   o ANYBOX から Linux box にパケットが 届いた時、 Linux box は
     パケットに対して新しい TCP/IP ソースポート番号を割り当てて、
     パケットヘッダに自分の IP アドレスを書き込んで、元の IP
     アドレスを保存しておきます。
     MASQ サーバはこうして修正したパケットを SLIP/PPP 
     インターフェースを通じてインターネットへ送信します。
   o パケットがインターネット から Linux box に帰って来たら、
     Linux はポート番号が先に割り当てたものの一つであるか調べます。
     もしそうなら、 MASQ サーバは元のポートと IP アドレスを得て、
     戻って来たパケットヘッダにそれを復元し、そのパケットを
     ANYBOX へ送ります。
   o パケットを送られたホストは、その違いに全く気付かないでしょう。

もう一つの IP マスカレーディングの例 -

典型的な例を下図に示します -


    +----------+
    |          |  イーサネット
    | A-box    |::::::
    |          |.2   : 192.168.0.x
    +----------+     :
                     :      +----------+   PPP   
    +----------+     :   .1 |  Linux   |   link
    |          |     :::::::| Masq-Gate|:::::::::::::::::::// インターネット
    | B-box    |::::::      |          |  111.222.121.212
    |          |.3   :      +----------+
    +----------+     :      (マスカレード
                     :       ゲートウェイ)
    +----------+     :
    |          |     :
    | C-box    |::::::
    |          |.4    
    +----------+  
                
    |                       |          |
    | <-内部ネットワーク--> |          | <- 外部ネットワーク ---->
    |                       |          |

この例では、4台のコンピュータシステムが接続されています。 またおそらくその他に、図のもっと右側にインターネットへの PPP 接続 を提供するホストが、そしてさらにその右側にはあなたが情報をやり取り したいと思うインターネット上のリモートホストが存在することでしょう。 Linux システム masq-gate は IP マスカレードを行う ゲートウェイで、マシン A-boxB-box 及び C-box から構成される内部ネットワークから インターネットへの接続を行います。 内部ネットワークは RFC-1918 にて割り当てられた幾つかのプライベートネットワークアドレス の一つ (この例では 192.168.0.0) を使います。 Linux box は TCP/IP アドレス 192.168.0.1 を持ち、その他のホストは 以下のアドレスを持っています -

  • A-Box: 192.168.0.2
  • B-Box: 192.168.0.3
  • C-Box: 192.168.0.4

3台のマシン A-boxB-box 及び C-boxは TCP/IP を話すことができればどんなオペレーティングシステムが動作して いても構いません。 OS は Windows 95Macintosh MacTCP 或は OpenTransport 或は別の Linux box など、インターネット上の他のマシンに接続 できるものです。 動作中、マスカレーディングシステム或は MASQ-gate はこれら 内部接続の全てを masq-gate 自身から発生するように見えるように 変換します。 次にマスカレードは、マスカレードされた接続へ戻ってくるデータが中継されて、 発信元のシステムへ戻されるように処理します。 これにより、内部ネットワーク上のシステムからはインターネットへの直接 経路があるように見え、データがマスカレードされていることは意識しません。 これを "透過的な" 接続と呼びます。

注意 - 以下に示すトピックの詳細については よくある質問 (FAQ) をご覧ください -

  • NAT, MASQ とプロキシサーバとの相違点
  • パケットファイアウォールの動作

2.6 IP マスカレードを Linux 2.2.x で使うための必要条件

** 最新の情報については IP マスカレードの情報源 を参照してください。 **

2.7 IP マスカレードを Linux 2.3.x 及び 2.4.x で使うための必要条件

** 最新情報については IP マスカレードの情報源 を参照してください。 **

  • 現在、最新の 2.3.x 及び 2.4.x カーネルは NetFilter と呼ばれる 全く新しいシステムが導入されています ( 2.2.x カーネルにおける IPCHAINS に似ています)。 幸い、 IPCHAINS への移行の時とは異なり、新しい NetFilter ツールは、現状の IPCHAINS と IPFWADM の文法に*完全に*適合できる カーネルモジュールを持っているので、古いスクリプトを書き換える必要は ありません。 さて、どれほどあなたがご自身の古いルールセットの良さに依存していたと しても、それを書き換えることによる幾つかの利点 (スピード、新しい 機能等) があります。 ユーザーに多くの柔軟性と将来の機能等を提供する、多くの 基本設計的な変更が、新しいコードによりもたらされました。

    新しい機能の中にはこんな賛否両論を含んでいるものもあります -

    賛成意見 -

    • TCP/IP サブネットに真の 1:1 NAT 機能を提供します。
    • ビルトインタイプのポートフォワーディングはもはや IPMASQADM を必要としません。
    • 新しいビルトインタイプのポートフォワーディング機能は、外部と 内部のトラフィックの両方に対して動作します。 このことは外部トラフィックに PORTFW を使い、内部リダイレクションに REDIR を使っていたユーザーにとって、もはやこの二つのツールを使う 必要がないことを意味します。
    • 完全にポリシーベースのルーティング機能 (ソースベースの TCP/IP アドレスルーティング) 。
    • より高速なパケットフォワーディングを表す Linuxの FastRoute 機能との互換性 ( Linux ネットワークスイッチングとして知られています) 。
    • TCP/IP v4, v6, そして DECnet でさえも完全にサポートします。
    • PPP0, PPP1, 等を指す ppp* のようなワイルドカード インターフェースをサポートします。
    • input と output の両方のインターフェースに対してフィルタリング をサポートします。
    • イーサネットの MAC フィルタリング。
    • サービス不能攻撃 (DoS: Denial of Service) パケットレートの 制限。
    • とてもシンプルで汎用的な状態検査機能
    • パケット REJECT は現在ユーザーが選択可能な ICMP メッセージの 返答をサポートします。
    • 変更可能なロギングレベル (異なるパケットが異なる SYSLOG レベル に到達できます)

    反対意見 -

    • Netfilter は全く新しいアーキテクチャだから、殆ど全ての古い MASQ カーネルモジュールは書き換える必要が生じます。 すなわち、 FTP モジュールはアップデートされましたが、以下のモジュール は書き換えが済んでいません:

      ip_masq_cuseeme.o ip_masq_icq.o ip_masq_quake.o ip_masq_user.o ip_masq_irc.o ip_masq_raudio.o ip_masq_vdolive.o

      この移植をどうするかについての文書は http://netfilter.kernelnotes.org/unreliable-guides/netfilter-hacking-HOWTO-5.html にあります。 時間がありましたら、これらを早く移植することであなたの才能は高く評価 されることでしょう。

    このバージョンの HOWTO では、 Netfilter はカバーしていません。 一旦 Netfilter の特徴が固定されれば、 -この- HOWTO に追加されるか、 新たな HOWTO に書かれるでしょう。 それまでは、以下に示す Netfilter の文書へのリンクを参照してください。 現状では、新しい Netfilter コードは、今日 IPCHAINS ユーザが用いる 設定とトラブルシューティングの 95% 同じものを共有できています。 ですので、この HOWTO は未だ Netfilter によるファイアウォールと NAT ユーザーにとっても非常に適切です。

    http://netfilter.filewatcher.org/unreliable-guides/index.html そしてより詳細には http://netfilter.filewatcher.org/unreliable-guides/NAT-HOWTO.html をどうぞ。

詳細な情報とその他パッチ等は IP マスカレードの情報源 をご覧ください。

2.8 IP マスカレードを Linux 2.0.x で使うための必要条件

** 最新情報は IP マスカレードの情報源 を参照してください。 **


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

[