本資料について 本資料は下記の論文を基にして作成されたものです. 文章の内容の正確さは保障できないため, 正確な知識を求める方は原文を参照して下さい. 著者 :Shiang-Ming Huang,Quincy Wu,Yi-Bing Lin 論文名 :Tunneling IPv6 through NAT with Teredo Mechanism 前半 :Teredo 概要, 後半 :Linux に実装した評価から, 前半だけを参照し, 別の資料と合わせて作成しました.
Tunneling IPv6 through NAT with Teredo Mechanism 名城大学理工学部情報科学科 030432106 宮﨑悠
Introduction インターネット技術における 30 年後の展開として IETF (Internet Engineering Task Force) は IPv6 を次世代インターネットプロトコルとして開発している しかし IP ネットワークは未だに IPv4 しかサポートしていない IPv4 ネットワークの中で IPv6 通信を可能にするためにトンネリング技術が利用できる Teredo 1
Teredo Teredo は IPv4 環境での IPv6 ネットワークの透過的接続を実現 Microsoft を中心に進められている クライアントには Teredo サーバから IPv6 アドレスが与えられ 仮想ネットワーク端末として認識される Teredo を利用した NAT 越え 2
NAT 越え問題 外部端末からすると NAT ルータ内の構造が分からないため プライベートアドレス空間の端末と直接通信を行うことができない G1 G2? Global address : G1,G2 Private address: P1,P2,P3 3
Teredo による NAT 越え Teredo は IPv6 と IPv4 との移行テクノロジであり Teredo による NAT 越えは IPv6 の IPv4 NAT Traversal とも呼ばれる IPv6-v4 間は Teredo Relay Server を中継して通信する IPv4 間では STUN を利用 NAT に制限有り 4
STUN (Simple Traversal of UDP Through NATs) UDP Hole Punching の応用技術 プライベートアドレス空間の端末 (P1) は予め STUN サーバ (G3) に情報登録時に通信をしているため NAT ルータ (G2) は 3 の通信を通すことができる 2 通信開始 3 通信転送 1 端末情報登録 P1 5
UDP Hole Punching の必要条件 NAT は一般的にアドレス ポートペアのマッピングの作成と管理の方法の違いにより以下の 4 種類に分類される Full Cone NAT Restricted cone NAT Port-restricted cone NAT Symmetric NAT UDP Hole Punching に対応 6
Teredo IPv6 address format 3FFE:831F::/32 Teredo サーバの IPv4 アドレス フラグ 外部ポート 外部 IPv4 アドレス 32bits 32bits 16bits 16bits 32bits 3FFE:831F::/32 (Teredo プレフィックス ) Teredo アドレスだということを示す Teredo サーバの IPv4 アドレス フラグ クライアントのルータのタイプ (cone NAT かどうか ) cone NAT:0x8000, それ以外 :0x0000 外部ポート 外部 IPv4 アドレス Teredo サーバが Teredo クライアントにアクセスする為の UDP ソケットアドレス 7
Teredo 構成 Teredo server:teredo client 管理装置 Teredo relay client:nat 越えを実現する装置 IPv6 host:ipアドレスをv6とした端末 NAT: 無着手のNAT(cone NAT) Private IPv4 network IPv4 Internet IPv6 Internet Teredo relay G3v4 G3v6 8
Teredo NAT Traversal 初期設定 Private IPv4 network IPv4 Internet 1 2 Teredo relay G3v4 G3v6 1Teredo アドレス要求 Teredo アドレスと Teredo relay のアドレスを返信 2Hole Punching (NAT テーブルの作成 ) 9
Teredo NAT Traversal 1 IPv6 host は IPv6 パケットを Teredo relay に送信 2Teredo relay は受け取ったパケットを IPv4 UDP でカプセル化し代理送信 3NAT は UDP パケットを受信し 予め作成されている NAT テーブルより Teredo client に転送 Private IPv4 network IPv4 Internet IPv6 Internet 3 2 1 Teredo relay G3v4 G3v6 10
IPv4 Teredo NAT Traversal 1P1 は P5 宛に通信を開始するが 届かない ( この時 P1 G4 の NAT テーブルが作成される ) 23P1 は Teredo server を通して P5 に通信する ( 登録時に各 client と server 間の NAT テーブルは作成されている ) 4 通信を返して通信することができる (1 があった為 ) Private IPv4 network1 IPv4 Internet Private IPv4 network2 2 1 3 NAT G4 P4 4 11
むすび Teredo について説明 IPv4 環境での IPv6 ネットワークの透過的接続を実現するためのプロトコル Teredo を利用した NAT 越えを説明 Teredo server を設置し UDP hole punching を応用して実現 そのため cone NAT のみの対応 12
補足 13
補足 :Teredo アドレスのフラグ判定法 Private IPv4 network IPv4 Internet 1 2 ルータ要請メッセージ (RS:Router Solicitation) ルータ通知メッセージ (RA:Router Advertisement) 1Teredo clientから 予め設定されているTeredo serverにrsメッセージを送信このrsメッセージのteredoアドレスのフラグにはconeフラグ (0x8000) をセット 2Teredo serverからraメッセージを返信 ( この時送信元アドレスを G3v4とする ) Teredo clientが無事受信できた場合はteredo clientがcone NAT を介した接続であることが確定され 初期設定は完了 14
補足 :Teredoアドレスのフラグ判定法 Private IPv4 network IPv4 Internet 3 4 ルータ要請メッセージ (RS:Router Solicitation) ルータ通知メッセージ (RA:Router Advertisement) 2 を受信できなかった場合 cone NAT ではないと判断 3Teredo client は cone フラグをセットせずに (0x0000) 再度メッセージを送る 4RA メッセージを返信する client が受信した場合は Restricted NAT もしくは Symmetric NAT であると判定される 15
補足 :Teredo アドレスのフラグ判定法 Private IPv4 network IPv4 Internet 5 ルータ要請メッセージ (RS:Router Solicitation) 6 ルータ通知メッセージ (RA:Router Advertisement) 5Teredo clientはどちらのnatかの判定のために Teredo relayにrsメッセージを送信 6Teredo relayはrsメッセージを返信し clientは serverからのrsメッセージと比較し 外部ポートとして同一のUDPポートを使っていた場合はRestricted NATと確定され 初期設定は終了する 16
Cone NAT 内部アドレスおよび UDP ポートと外部アドレスおよび UDP ポートのマッピングを作成し ポートがアクティブである限り マッピングを有効に保持する マッピングが有効の間は NAT の WAN 側アドレスの該当 UDP ポートにて受信された UDP パケットは NAT 内部の対応するホストへと転送される 17
Cone NAT の動作 2 1 3 内部ホストAから送信された1のパケットによりマッピングテーブル中にエントリが作成される Cone NATでは対象となる外部ホストの管理は行われないため 同一外部の端末 Bからのパケット2だけでなく 異なる端末 Cのパケット3も NATデバイスにより内部ホストAに転送される 18
Restricted cone NAT 単にアドレスとUDPポートのマッピングを作成および維持するだけではなく 内部ホストからUDPパケットを送信した対象の外部ホストを管理している これにより 内部ホストにより通信が開始された外部ホスト以外からのパケットの受信は拒否される 19
Port-restricted cone NAT Port-restricted cone NAT は Restricted cone NAT による外部からのパケットの受信の制限をさらに強化した NAT Restricted cone NAT が承認された外部ホストだけを管理しているのに対し Port-restricted cone NAT は使用されているポートも管理対象とする 外部からのパケットは内部ホストから通信が開始されたホストからであることとともに そのときに利用されたポート宛であることが要求され それ以外のパケットはすべて拒否される 20
Port-restricted cone NAT の動作 2 ポート :3000 ポート :3000 ポート :3000 ポート :3000 ポート :2000 1 3 パケット 1 と 2 の動作は Restricted cone NAT と同様だが たとえ同一のホストである外部ホスト端末 B あっても 異なるポートからのパケットである 3 は NAT 内部に転送されない 21
Symmetric NAT Symmetric NATは同一の内部アドレスとポートのペアを異なる外部アドレスとポートのペアにマッピングする NAT aaa.bbb.ccc.ddd 内部アドレス : ポート 192.168.0. 1:1026 192.168.0. 1:1026 外部アドレス : ポート aaa.bbb.ccc.ddd:1724 aaa.bbb.ccc.ddd:6428 外部ホスト www.xxx. yyy.zza www.xxx. yyy.zzb symmetric NATでは 内部ポートと外部ポートが違うため hole punchingを対応させることができない 22