« 世銀が中国の圧力に屈した訳 | トップページ | アメリカ人の電力使用に見る環境意識 »

2007年7月31日 (火)

Mac OS XからVMwareクライアントへのポートフォワード

Mac OS X でポートフォワードを実現するには、通常のUnix/Linuxの方法が使えないようだ。

ネット上を検索すると、一つには、OS X の「インターネット共有」として稼働している natd を一度終了させ、新たに作成した設定ファイル (nat.conf) を読み込ませて natd を再起動する方法が用いられている。他には、/usr/libexe/InternetSharing  というコンパイル済みのファイルの可読部分を変更している例もあったが、これは他の手段がある以上、避けるべきだろう。 

これらの方法は、あくまで OS X の NAT の設定を変えるためのものだ。よって、フォワード先が Parallels Desktop や VMware Fusion (以下、VMware)のバーチャルマシンである場合は、バーチャルマシンはそれぞれのアプリケーションに付属する DHCP/NAT の下にあるため、同じ方法を使うことが出来ない。

VMwareの場合はどうすれば良いか。VMwareのNATは、vmnet-natd というプログラムによって動いているのだが、私はこの設定ファイルを変更することで、port forward を実現することが出来た。

まず、動いているプログラムと引数を調べる。ターミナルで ps -ax | grep  natd を実行すると、

/Library/Application Support/VMware Fusion/vmnet-natd -c /Library/Application Support/VMware Fusion/vmnet8/nat.conf -m /Library/Application Support/VMware Fusion/vmnet8/nat.mac -d /var/run/vmnet-natd-vmnet8.pid vmnet8

の一行が表示され、設定に使われている nat.conf が特定できた(VMwareで別のネットワーク形式を選択している場合は、'vmnet8' に相当する部分が異なる)。このファイルを開くと、カスタマイズ例がコメントアウトした状態で書き込まれており、実はカスタマイズを想定していることが伺える。このファイルの [incomingtcp] のセクションに、例えば

8080 =  172.16.226.128:8080

と書けば、port foward の設定が完了である。この例では、インターネットからのポート8080へのパケットは、natdによって172...のIPアドレスを持つバーチャルマシンへと宛先を書き換えられ、転送される。逆向きのパケットも同様に処理される。

NATの設定が終了したら、ファイアーフォールの設定も忘れずに行っておく。システム環境設定から先程指定したポートを開放しておく。私は ipfw を使って、より細かく設定したファイアーウォールを敷いているので、ipfw のルールに次のような行を加えた。

ipfw add allow tcp from any to me dst-port 8080 in

これにより、インターネットからen0 を経由してOS Xに入って来るパケット(これは後にNATに拾われ、バーチャルマシンに転送される)と、バーチャルマシンからvmnet8 を経由して OS X に入ってくるパケット(後にインターネットに向けて転送される)の両方が、ポート8080に限って許可される。

括弧内に記述した、OS X から外に出て行くパケットについては、別の行で他の通信と一括して許可しているのでここでは触れない。

なお、一般的に、ipfw と nat を用いた port forward には、ipfw の divert という命令を使うことも出来るようだが、同時に実行する natd に転送先IPアドレスを指定しなければならない。VMwareの場合に出来たとしても、vmnet-natd に何らかの設定が必要になるので、手間は変わらない。私が試した通り、vmnet-natd に想定された使い方をするのが最善だろう。

追記:VMwareの新しいバージョンをインストールすると、今回変更した設定ファイル nat.conf が上書きされていた。同じディレクトリにバックアップファイルは置かれているので、アップグレードの都度、設定を復元する必要がある。

|

« 世銀が中国の圧力に屈した訳 | トップページ | アメリカ人の電力使用に見る環境意識 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: Mac OS XからVMwareクライアントへのポートフォワード:

« 世銀が中国の圧力に屈した訳 | トップページ | アメリカ人の電力使用に見る環境意識 »