NAT設定に関して-2.NATの場合どうなるか

NAT設定に関して-1.まず基本的な動作」の続きの記事になりますので、まずはそちらをお読みください。
NAT
で、上図の様な非常にシンプルなNAT環境を想定して通信の動きを見ていきます。


前提条件は下記とします。
「ポリコム端末A」のIP設定は下記とします。
IPアドレス: 192.168.1.100
サブネットマスク: 255.255.255.0
デフォルトゲートウェイ: 192.168.1.254

「ルーターの設定」は下記とします。
固定のグローバルIPを取得している: 130.xxx.xxx.10
NATの設定は特に何も設定していない、IPマスカレードの設定がされているので、プライベートIPからのインターネットに出ていく通信は130.xxx.xxx.10に置き換えられて出ていく。

「ポリコム端末B」の設定は下記とします。
IPアドレス: 140.242.250.204 という固定のグローバルアドレスが設定されている(このIPは実際のポリコムの接続テスト用の番号です)
※ポリコムのVideo Test Numbers http://support.polycom.com/PolycomService/support/us/support/documentation/video_test_numbers.html

①接続
「ポリコム端末B」から「ポリコム端末A」へ接続を試み、130.xxx.xxx.10へコールしたとします。
インターネット側からルーターの固定IPである130.xxx.xxx.10へ、TCP:1720番の接続が来ますが、ルーターにNAT設定していない場合、ここで破棄されて終わりです。
当然接続はできません。
では、逆方向に接続したとします。
「ポリコム端末A」から「ポリコム端末B」へ接続を試み、140.242.250.204へコールしたとします。
中から外への通信ですので、TCP:1720番のパケットは140.242.250.204へ到達します。
IPマスカレードがかかっているので、「ポリコム端末B」が受け取ったこのパケットに対する返信先は130.xxx.xxx.10になり、返信されます。
返信パケットは「戻りパケット」になるので、130.xxx.xxx.10のルーターで処理され、192.168.1.100へ届けられます。
TCPの通信なのでここまではうまくいきます。
呼び出された側(140.242.250.204)も、コール音がなり、接続がきていることがわかります。

②H.225.0処理
H.225.0の処理は上記TCP:1720の接続内で行われますので、問題なく完了します。

③H.245処理
論理チャネルの処理が行われます、先の「NAT設定に関して-1.まず基本的な動作」の処理を思い出して下さい。
この処理の中で、「ポリコム端末B(140.242.250.204)」は「ポリコム端末A(192.168.1.100)」に対し、「私がデータを待ちうけるのは IPアドレス:140.242.250.204 ポート番号:xxxx」ですよ、と通知します。
「ポリコム端末A(192.168.1.100)」は「ポリコム端末B(140.242.250.204)」に対し、「私がデータを待ちうけるのは IPアドレス:192.168.1.100 ポート番号:xxxx」ですよ、と通知します。

④RTP/RTCP処理
さて、上記H.245のやり取りの後、映像/音声データはどこに向けて送信されるでしょうか。
「ポリコム端末A」は言われた通り、140.242.250.204の指定されたポートに対し映像/音声を送信します。
このデータは「ポリコム端末B」へ届きます。
「ポリコム端末B」は言われた通り、192.168.1.100の指定されたポートに対し映像/音声を送信しますが、インターネット環境ではプライベートアドレスにデータが届きません。
このデータは「ポリコム端末A」へ届きません。
現象としては、「ポリコム端末B」では相手の映像/音声が見える/聞こえるのに「ポリコム端末A」では見えない(黒画面)/聞こえないという現象になります。
nat失敗


では次に前提条件を変えて、「ルーターにNAT設定」を行ってるとしましょう。
「ポリコム端末A」のIP設定は下記とします。
IPアドレス: 192.168.1.100
サブネットマスク: 255.255.255.0
デフォルトゲートウェイ: 192.168.1.254
システム>管理者設定>IPネットワーク>ファイアーウォール内にある「固定ポート」のチェックをONにし、下記のポートで待ちうけを行うようにしている。
TCP:3230~3235
UDP:3230~3280

「ルーターの設定」は下記とします。
固定のグローバルIPを取得している: 130.xxx.xxx.10
NATの設定を行っている。(192.168.1.100 と 130.xxx.xxx.10 を結びつけている)
ポートの設定も行っており、TCP:1720(呼制御)とポリコム端末Aで固定設定をしているTCP:3230~3235 UDP:3230~3280の範囲をポートフォワードしている。

「ポリコム端末B」の設定は下記とします。
IPアドレス: 140.242.250.204 という固定のグローバルアドレスが設定されている

①接続
「ポリコム端末B」から「ポリコム端末A」へ接続を試み、130.xxx.xxx.10へコールしたとします。
「ポリコム端末B」から来たTCP:1720番のパケットは130.xxx.xxx.10へ到達します。
ルーターにはNATの設定やポートフォワードの設定がされている為、このパケットは192.168.1.100へ届きます。
つまりインターネット側からの着信に成功します。(逆方向のコールももちろん成功するでしょう)

②H.225.0処理
H.225.0の処理は上記TCP:1720の接続内で行われますので、問題なく完了します。

③H.245処理
この処理の中で、「ポリコム端末B(140.242.250.204)」は「ポリコム端末A(192.168.1.100)」に対し、「私がデータを待ちうけるのは IPアドレス:140.242.250.204 ポート番号:xxxx」ですよ、と通知します。
「ポリコム端末A(192.168.1.100)」は「ポリコム端末B(140.242.250.204)」に対し、「私がデータを待ちうけるのは IPアドレス:192.168.1.100 ポート番号:xxxx」ですよ、と通知します。
結局、ルーターにNATの設定(&ポートフォワードの設定)を行っただけでは、相手に通知するIPアドレスがプライベートアドレスになるため、やはり先と同じ現象になってしまします。
現象としては、「ポリコム端末B」では相手の映像/音声が見える/聞こえるのに「ポリコム端末A」では見えない(黒画面)/聞こえないという現象になります。

ポリコムのマニュアル等を参照し、「通信ポート」だけを意識してルーターの設定を行った場合、この状態に陥り、はまる可能性があります。

つまり、「ポリコム端末A」側で、データを待ちうけるIPを明示的に「ポリコム端末B」へ伝える必要があります。
この設定が「端末側のNAT設定」の項目になります。


つながるシナリオの前提条件です
「ポリコム端末A」のIP設定は下記とします。
IPアドレス: 192.168.1.100
サブネットマスク: 255.255.255.0
デフォルトゲートウェイ: 192.168.1.254
システム>管理者設定>IPネットワーク>ファイアーウォール内にある「固定ポート」のチェックをONにし、下記のポートで待ちうけを行うようにしている。
TCP:3230~3235
UDP:3230~3280
NAT構成: 手動
NATのパブリック(WAN)アドレス: 130.xxx.xxx.10
NAT設定

「ルーターの設定」は下記とします。
固定のグローバルIPを取得している: 130.xxx.xxx.10
NATの設定を行っている。(192.168.1.100 と 130.xxx.xxx.10 を結びつけている)
ポートの設定も行っており、TCP:1720(呼制御)とポリコム端末Aで固定設定をしているTCP:3230~3235 UDP:3230~3280の範囲をポートフォワードしている。

「ポリコム端末B」の設定は下記とします。
IPアドレス: 140.242.250.204 という固定のグローバルアドレスが設定されている

①接続
「ポリコム端末B」から「ポリコム端末A」へ接続を試み、130.xxx.xxx.10へコールしたとします。
「ポリコム端末B」から来たTCP:1720番のパケットは130.xxx.xxx.10へ到達します。
ルーターにはNATの設定やポートフォワードの設定がされている為、このパケットは192.168.1.100へ届きます。
つまりインターネット側からの着信に成功します。(逆方向のコールももちろん成功するでしょう)

②H.225.0処理
H.225.0の処理は上記TCP:1720の接続内で行われますので、問題なく完了します。

③H.245処理
この処理の中で、「ポリコム端末B(140.242.250.204)」は「ポリコム端末A(192.168.1.100)」に対し、「私がデータを待ちうけるのは IPアドレス:140.242.250.204 ポート番号:xxxx」ですよ、と通知します。
「ポリコム端末A(192.168.1.100)」は「ポリコム端末B(140.242.250.204)」に対し、「私がデータを待ちうけるのは IPアドレス:130.xxx.xxx.10 ポート番号:xxxx」ですよ、と通知します。
ルーターには「ポリコム端末B」からRTPデータが届きます。
届いたUDPデータの宛先ポート番号が3230~3280の範囲内であれば、ポートフォワードの設定でこのパケットは192.168.1.100へ転送されます。
nat成功

これで双方向の通信が可能になります。

HDXにNAT設定をすることにより、H.245セッションでグローバルIPを通知していることがわかります。
133アドレス

が、
NATを行う機器によっては、この状態でもつながらない事があったりするのです・・・・

・それでもつながらない
・H.460ファイアーウォール超えが可 とは?
・NATはH.323対応 とは?

ということで 「NAT設定に関して-3.それでもつながらない-1」に続きます。

関連リンク
NAT設定に関して-1.まず基本的な動作
NAT設定に関して-2.NATの場合どうなるか
NAT設定に関して-3.それでもつながらない-1
NAT設定に関して-3.それでもつながらない-2