UPnPのしくみを使う
パソコンがルーターを制御して
Windows Messengerを通す

 WindowsXPに付属する音声チャットやビデオ・チャットのソフトWindows Messengerも,アドレス変換を介すと動かなくなる。一覧表示された通信相手を選んでも,「接続できません」といったメッセージが表示されるだけである。この原因もFTP通信と似ていて,送受信パケットのデータ部分にIPアドレスなどが入っているためである。

 もちろん,FTP通信のときのように,ルーターがデータ部分を書き換えれば問題は解消できるが,別の方策もある。それがUPnP対応という方法だ。

主導権はアプリケーション

 UPnPでは,ルーターはアドレス変換に関しては特別なことはしない。通常のアドレス変換処理を行うだけである。その代わり,アプリケーションが主導的な役割を果たす。UPnPに対応したアプリケーションが,あらかじめルーターのグローバルIPアドレスを聞いておき,このアドレスを送信パケットのデータ部分に書き込むのである。こうすれば,ルーターがデータ部分を書き換える必要がなくなる。

図7 UPnPによるアドレス変換問題の解決方法
クライアントのアプリケーションがルーターのグローバルIPアドレスを聞いて,それをパケットのデータ部分に書き込む。
 もう少し詳しく見てみよう。UPnPの機能を使うには,パソコンのOSやアプリケーション,ルーターのいずれもが,UPnPに対応していなければならない。そしてUPnP対応アプリケーションが,UPnP対応ルーターを操作して,ルーターが持つグローバルIPアドレスなどの情報をもらう。あとはパケットのデータ部分に,ルーターからもらったアドレス情報を埋め込んで相手に送信するだけである(図7[拡大表示])。

 中継するルーターは,通常のアドレス変換,つまりヘッダー部分だけを書き換えればよい。

汎用的だが対応ソフトが少ない

 このほか,UPnP対応のアプリケーションはルーターを遠隔操作して,インターネット側で相手からの通信を待ち受けるポート番号を指定したり,利用中のポート番号リストを取得したりできる。

 UPnPは,多くのプロトコルに対応できる可能性を秘めた汎用的な技術だ。しかし現時点では,UPnPに対応しているのはWindowsXPとそれに付属するWindows Messengerくらいしかない。ブロードバンド・ルーターの方は,最近になって徐々に増え始めているので,あとは対応アプリケーションが増えるのを期待したいところだ。

静的IPマスカレードで切り抜ける
あらかじめ転送先を登録して
LAN内のサーバーを公開

 FTPやWindows Messengerのような特別なアプリケーションでなくても,アドレス変換を介すと,うまく動かないケースがある。その典型例が,LAN上にサーバーを設置して,インターネットへ公開するときだ。

 NATやIPマスカレードは,LAN側から出たパケットを見て対応表に登録し,この対応表を基にインターネットからLAN側へ返信パケットを転送する。しかし,対応表に登録されていない場合は,インターネットからのパケットを受信しても,LAN側へ転送せずに捨ててしまう。

 一方,サーバーは相手からの接続をいつも待ち受けており,自分から通信を始めないのが普通だ。したがって,IPマスカレードなどをそのまま使ったのでは,LAN側にサーバーを設置してインターネットに公開することができない。

手動登録する静的IPマスカレード

 そこで考え出されたのが,静的IPマスカレードという方法である。現在では,ほとんどのブロードバンド・ルーターが備えている機能の一つだ。

 考え方は簡単で,「変換テーブルに登録されていないなら,ユーザーがあらかじめ登録すればよい」というだけである。つまり,静的IPマスカレードは,IPマスカレードが使う対応表に,ユーザーの手で最初から情報を書き込んでおくのである。例えば,WebサーバーをLAN上に置いてインターネットに公開する場合は,ポート番号が80番あてのパケットをルーターが受信したら,LAN側のWebサーバーへ転送すると登録する。

図8 静的IPマスカレードとDMZホスト
静的IPマスカレードは,特定のポート番号に届いたパケットをあらかじめ指定されているパソコンに転送する。DMZホストはルーターに登録されていないすべてのポート番号あてのパケットを特定のパソコンへ転送する。
 これだけで,LAN内部にあるサーバーへインターネットからアクセスさせられるようになる(図8[拡大表示](a))。

 具体的な設定手順はルーターごとに違うが,待ち受けるポート番号,TCP/UDPなどのプロトコルの種類,LAN側サーバーのIPアドレスを指定することになる。

 ただし,複数のWebサーバーをLAN側に設置してインターネットに公開することは,基本的にできない。ルーターが転送先のサーバー・マシンを区別するためには,それぞれのサーバーごとに異なるポート番号を登録しなければならない。ところが,Webサーバーなら同じポート番号を使う必要があるためである。

全ポートを開放する「DMZホスト」

 1個のポート番号を登録するのではなく,通常のIPマスカレードで自動登録されるポート以外の全ポート番号を一挙に登録してしまおうという考え方が,DMZホストという機能である。静的IPマスカレードをさらに一歩進めた形だ。

 こうすると,IPマスカレードで使っていないポート番号あてに届くインターネットからのパケットは,どんなものでもLAN側の特定のパソコンに転送される(図8[拡大表示](b))。

 こちらは,サーバーをインターネットに公開する用途ではなく,ネットワーク対戦型のゲーム・ソフトなどを動かす際に使うことが多い。こうしたソフトは,外部から不特定のポート番号あてにパケットが送られてくる場合があるからだ。

 ただし,DMZホストは指定したLAN側パソコンの全ポートを開放したようなもの。不正アクセスの恰好の的になる可能性がある。DMZホストに指定したパソコンからはLAN内部へのアクセスを制限するなど,セキュリティ上の対策を施しておく必要があるだろう。

 なお,DMZホスト機能はLAN側パソコンの1台だけを登録することになる。したがって,同時に複数のパソコンがDMZホスト機能を利用することはできない。