タイトルBrowsing Mac OS X》Mac OS XでNAT処理を行う(1)カテゴリーネットワーク管理, ネットワーク, Browsing Mac OS X
作成日2001/8/28 11:11:30作成者新居雅行
IPアドレスの枯渇が…などというグローバルな理由はともかく、インターネットに接続するのに必要なIPアドレスは、あまりたくさんは使えないのが一般的だ。256個(常識的には最大254個だけど…)のアドレスが使えるクラスCをもらうにも大変…なんてのは数年前までの話で、今ではローコストの接続では8個とかのIPアドレスが精一杯だ。そして、ブロードバンドが広がるとは言われながらも個人利用では1個がせいぜいであったりする。
小さな会社だったら8個でも…という理屈もあるだろうけど、一般には8個では足りないことが多い。また、パソコンを何台も持っている人も少なくないので、個人ユーザにとっても1アドレスは足りない。そこでクローズアップされるのがNATという手法である。正確にはNetwork Address Translatorということで、意味的にはアドレス変換ということだ。技術的には完全な説明にはならないけど、現実の世界では、要はNATっていうのは、IPアドレスの数より多くのパソコンをインターネットにつなげる技術であると言える。
こういう状況を想定してほしい。ハブがあって、そこにたとえばパソコンが6台つながっている。これらのパソコンには、ローカルなネットワークにだけ使えるプライベートIPアドレスが割り振られている。具体的には、192.168.1.101〜106としようか。このネットワークを「内部ネットワーク」と呼ぼう。もちろん、これらの6台の間ではそれなりにIP通信はできるけど、インターネットには接続できない。そこで、ハブにもう1台パソコンをつないだとしよう(これをルータマシンと呼ぶことにする)。そのパソコンのIPアドレスは、192.168.1.1だったとする。話が分かりやすいように、その新たに繋いだパソコンには、もう1つEthernetアダプタが取り付けられている。そのアダプタは、ADSLモデムにつながっていて諸設定が正しく行われており、192.168.1.1のパソコンからはインターネット接続ができるとしよう。もちろん、ADSLモデムがつながっているEthernetアダプタはグローバルIPアドレスが、おそらくはプロバイダのDHCPサーバより供給されて設定されているはずだ。仮にそのIPアドレスは、99.88.77.66としよう。
このままだと、192.168.1.101は、192.168.1.1とはIP通信できるけど、それより先とは通信ができないので、インターネット利用はできない。そこで、ルータマシンに細工を行う。192.168.1.101〜106が、たとえば、www.apple.co.jpにアクセスしたとしよう。そのとき、ルータマシンに要求が送られるとする。ルータマシンでは、本当は192.168.1.101からwww.apple.co.jpに対する要求なのだけど、自分自身のグローバルアドレスである99.88.77.66からwww.apple.co.jpに対する要求にすり替える。そして、ADSLモデムを通じてインターネット通信を行う。もちろん、アップルのサイトからWebページの内容が応答としてが99.88.77.66に送られてくる。そうして送られてきたデータを、改めて192.168.1.101に送る。こうすることで、本来はインターネットにはつながっていない192.168.1.101〜106も、ルータマシンを通じてインターネット接続ができてしまう。これを一般にはNATと呼んでいる。実用的には1つのIPアドレスを複数のマシンで共有するような動作を含めたりしたい。こうした機能を実現する有名なのはLinuxでのNAT機能で「IPマスカレード」と呼ばれているものだ。逆に、IPマスカレード自体がこうした機能の代名詞にもなっている。基本的には、IPマスカレードの代表的なものがLinuxでの実装ということである。
一方、FreeBSDにもNATの機能を実現する仕組みが含められている。技術的にはアドレスのエイリアス、つまりアドレスの置き換えのような仕組みを使うのであるが、むしろNATの処理を行うデーモンであるnatdという名前がいちばん有名だろう。実は、後で説明するようにnatdだけでNATをするのではないのだが、名前のこともあって、FreeBSDはnatdだってことになってしまっている。もちろん、BSD系統のMac OS Xでもnatdは含まれていて、Terminalで「man natd」とコマンド入力してマニュアルを参照してもらうと、極めて詳細な情報が得られる。で、今回のテーマであるMac OS XでのNATは結論を先に言えば、natdのマニュアルの情報でほぼすべてと言ってよいのであるが、むしろそこに書いていることをすべて行わないといけないわけではない。
なお、IPマスカレードは、アドレスだけでなくポート変換も行うNAPT(Network Address Port Translation)という動作を行うことが可能だ。さらに、前記のNATの手法だと、内部ネットワークからインターネット利用は可能だけど、インターネット側から内部ネットワークには接続できないのが一般的である。つまり、内部ネットワークは、外部に対してはクライアントとしてしか動作しないのである。こうしたNATを伝統的NAT(Traditional NAT)と呼んでいる。一方、インターネットから内部ネットワークへの接続を可能にする両方向NAT(Bi-directional NAT)という技術もある。

ところで、最近はこうしたNATの処理は、「ブロードバンドルータ」などと呼ばれる単体の製品でも行えるようになった。秋葉原だと、17000円前後から購入できるので、手軽にNATをやりたい人は、こうした製品がお勧めだ。単にEthernet端子と電源を入れ、あとはWebブラウザから設定をするだけでOKというのが一般的だろう。値段と手軽さを加えれば、NATをやりたいときに最初に思い浮かぶのがこうした機器を使うことだ。「NATボックス」などと呼ばれることもある。たとえば、YahooBBでインターネット接続を行って、何台かのパソコンで同時に、あるいは設定をそれぞれ変えずにインターネットをしたいのなら、ブロードバンドルータはいちばん手軽なソリューションである。(などとYahooBBの連絡待ちをしながらこうした例を書くのは、とほほな話でもあるが…)また、伝統的NATの機能だけでなく、インターネット側からWebアクセスがあれば、内部ネットワークの指定したIPアドレスのマシンとのサーバ接続を可能にするような両方向NATの機能も含まれている場合もある。
一方、サーバをすでにたてているのであれば、なるべく機器を増やしたくないなどの理由で、NATの処理をサーバにさせたいと思うこともあるかも知れない。今回の記事では、つまりはMac OS XやMac OS X ServerでNATをしようというわけである。ちなみに、NATの処理を行うマシンってそうした中継処理をするのだから重たくなるのかと思うかも知れないが、数人程度のNAT処理だったら、やっているのは全然分からないくらい軽い。CPUの利用率を見ていても、Internet Explorerの方がよっぽどCPUパワーを食っている。ブロードバンドとは言え、まだまだネットワーク処理というのが低速なのだということだろう。
前の例では、分かりやすいように、ルータマシンに2枚のEthernetカードがあるとして説明した。Mac OS X/ServerでもディアイティのEthernetカードのようにMac OS X対応のものがあれば、たとえばPower Mac G4に接続し、内蔵のEthernetとカードのEthernetの2つのネットワーク端子が装備できる。しかしながら、一方はアナログモデムによる接続でもいいし、ワイアレスLANでもいい。とにかく、ネットワーク接続が可能なものならそれらの間で、NATができる。さらに、Ethernet端子が1つでもNATはできる。Ethernet端子は1つのIPアドレスを割り当てるのが一般的だが、Mac OS Xでは複数のIPアドレスの割り当てが可能だ(というか、UNIX系OSではそれが当たり前の機能)。こうした動作は「マルチホーミング」などと呼ばれている。Mac OS Xで可能なはずだが、残念ながらMac OS X 10.0.xではシステム環境設定では複数のIPアドレス割り当てができない。Terminalからコマンドを入れるか、起動スクリプトで2つ目以降のIPアドレスの割り当てが必要になる。いずれにして、そうした状況だと、Ethernetのポートは1つだけど、考え方としては2つのポートがあるように見ればよい。そうすれば、一方のIPアドレス側から入ってきたリクエストを別のIPアドレスに対してNAT処理をするといったことができるのである。だから、1ポートでもNATは可能だということだ。
(続く)
関連リンク