2011年5月14日土曜日

NAT/ファイアウォール透過技術

参考:http://www.ms.u-tokyo.ac.jp/lecture/2006/901-35/2007-01-25.pdf

↑てかこいつは俺と同じ文献読んでるのがまるわかり。せめて文章表現ぐらい少しは変えろよw

 

NAT越え

 

NATファイアウォール越えとは簡単に言うものの、しかしながらP2Pオーバレイネットワークとはかなり大まかな概念でしかありません。

なので、現実にはルータやファイアウォールなどの障壁を乗り越えなくてはなりません。

今後はこの具体的な技術を見ていくことにしましょう。

 

逆向き接続

スライド2

 

Napster、GnutellaなどのP2Pアプリケーションでは当然のテクニックとして採用されている。

 

リレー通信

スライド3

今度は上で、もう片方のノードもファイアウォールで保護されている場合。その場合は両者以外のノードを中継として利用することでファイアウォール越えを実現している。

 

UPnP

スライド4

そもそもNATの静的ポートフォワーディングが出来れば必要ない技術。

いわゆるポート開放をしなくてもP2Pソフトウェアが利用出来るようにするための技術。

Torrentのクライアントのほとんどは導入している。故にTorrentが初心者に優しいP2Pソフトの代表になっているのはそのため。

しかしながら、これはルーターがUPnPに対応していることが条件。

 

UDP Hole PunchingとSTUM

スライド5

AとBというホストが、それぞれのプライベートネットワークにあるとする。N1とN2はそれぞれのNATデバイスである。SはグローバルIPアドレスを持つパブリックサーバである。

  1. A と B は S との UDP 通信を開始する。NATデバイス N1 と N2 は UDP 変換状態を作成し、一時的な外部ポート番号を割り当てる。
  2. S はそれらのポート番号を A と B にリレーして通知する。
  3. A と B は相手のNATデバイスと通知されたポート番号で直接通信する。NAT デバイスはそれ以前に生成されていた変換状態を使い、A および B の間でパケットの送受信が可能になる。

STUN(Simple Traversal of UDP through NATs)は、音声、映像、文章などの双方向リアルタイムIP通信を行うアプリケーションにおいて、NAT traversal(NAT通過)の方法の1つとして使われる標準化された(standards-based)インターネットプロトコルである。 STUNプロトコルは、アプリケーションがNATの存在と種類とを発見し、リモートホストへのUDP(User Datagram Protocol)接続にNATが割り当てたグローバルIPアドレスとポート番号とを得ることを許す。 STUNプロトコルが動作するには、インターネット上にSTUNサーバが存在する必要がある。 STUNプロトコルは、RFC(Request for Comments) 3489に定められる。

STUNはNATゲートウェイとファイアウォールとの存在を発見するために、RFC 3489から構成される下図のアルゴリズムを使用する。

図を通る経路が赤い箱で終わる所ではUDP通信は可能でない。経路が黄色であるか緑の箱で終わる所で、UDP通信は可能である。

 

HTTPカプセル化

スライド6

ようはHTTP通信であると偽造してP2Pパケットの送受信を行うという手法。



0 件のコメント:

コメントを投稿