NAT およびファイアウォールの VoIP による通過 目次 概要 NAT - Cisco

NAT およびファイアウォールの VoIP による通過
目次
概要
NAT と PAT
NAT の制約
ファイアウォールの基本情報
VoIP プロトコルのプロトコル スタックと信号フロー
VoIP が NAT を通過するための課題
VoIP がファイアウォールを通過するための課題
暗号化された VoIP が ALG を利用している NAT/ファイアウォールを通過す
るための課題
Cisco ソリューション
VoIP に使用される UDP/TCP ポート
関連情報
概要
この文書は、ファイアウォールまたは. Network Address Translation(NAT; ネットワー
ク アドレス変換)を使用している場合に、すべてのプロトコル(H.323、Media Gateway
Control Protocol(MGCP; メディア ゲートウェイ コントロール プロトコル)、Session
Initiation Protocol(SIP)、Skinny Client Control Protocol(SCCP)、Real-Time
Transport Protocol(RTP)、および RTP Control Protocol(RTCP))にわたって VoIP
が抱える課題の基本知識について説明しています。また、VoIP が NAT またはファイ
アウォールを通過できるようにするためのさまざまな提案を行っています。VoIP トラフ
ィックは、コール シグナリング、コール制御、およびメディア通信の 3 種類に分類でき
ます。使用されている VoIP プロトコルに応じて、2 台のデバイス間の通信には、1 つ
のチャネルまたは多数の異なるチャネルが使用されます。2 台のネットワーク デバイ
ス間の通信に使用されるチャネルは、Transmission Control Protocol(TCP; 伝送制御
プロトコル)ポートと User Datagram Protocol(UDP; ユーザ データグラム プロトコル)
ポートです。そのため、すべての VoIP プロトコルがダイナミック シグナリングと、IP ア
ドレスおよびポートの組み合せで構成され、ユーザはコールの発信と受信をどちらも
行える必要があるので、すべてのプロトコルは本質的に NAT との相性が悪くなりま
す。
NAT と PAT
NAT(RFC1631) は、ある IP アドレスを別の IP アドレスに変換するために使用する
プロセスです。NAT は一般に、企業が非公式または社内のプライベート IP アドレス
(RFC1918) をパブリック(インターネット)IP アドレスに変換する際に使用されます。
ほとんどの企業が社内ネットワークではプライベート IP アドレスを使用していますが、
プライベート IP アドレスはパブリック ドメイン(インターネット)内ではルーティングでき
ず、同じ範囲の IP アドレスを使用している他のプライベート ネットワークと競合する
可能性があります。
NAT 対応のデバイスを使用すると、IP アドレスがネットワークを出入りするときに、デ
ータグラム内の IP アドレスとポートを書き換えることができます。NAT 機能の設定に
応じて、多数の社内デバイスで、比較的少ないパブリックまたは登録済みのインター
ネット IP アドレスを有効に共有できます。スタティック アドレス変換とダイナミック アド
レス変換はどちらも、Cisco IOS NAT だけ、あるいは他の機能との連携によってサポ
ートされます。スタティック アドレス変換は、管理者が明示的に外部アドレスを内部ア
ドレスにマップするアドレス変換です。これは、未登録の IP アドレスを登録済みの IP
アドレスに 1 対 1 でマップします。この機能は、あるデバイスがネットワークの外側か
ら、メール サーバ、Web サーバ、DNS サーバなどにアクセスできなければならない場
合に特に役立ちます。ダイナミック アドレス変換は、プールが割り当てられ、変換対
象の新しい IP アドレスをプールの他の IP アドレスにラウンドロビン方式で動的にマッ
プするアドレス変換方式です。スタティック変換は一般に、NAT を通じて特定のデバイ
スにアクセスできるようにするために使用されます。スタティック変換に使用するアドレ
スは、ダイナミック変換のプールから明示的に除外しておく必要があります。NAT を
通過した IP パケットは、変換された送信元アドレスと宛先アドレスを持つことができま
す。
Port Address Translation(PAT; ポート アドレス変換)は NAT の拡張機能です。他に
PAT を指す言葉として、「オーバーロード」がよく使用されます。PAT は、関連付けら
れた IP アドレスと TCP/UDP ポートを、別の IP アドレスとポートに変換します。これ
によって、NAT プロセスで使用される外部アドレスを 1 つまたは少ない数にできます。
PAT は複数の内部アドレスを 1 つまたは複数の外部アドレスにマップする際に使用
する NAT 機能のサブセットで、様々なアドレス変換を区別するために外部 IP アドレ
スの固有のポート番号を使用します。TCP/UDP ポート番号が 16 ビット フィールドで
符号化されているため、1 つの外部 IP アドレスにつき 65,536 個までのアドレス変換
が可能です。
NAT 機能にはいくつかの異なるタイプがあります。
•
完全な円錐型 - NAT の背後にあるホストが {A:B}(アドレスが A でポートが
B)からパケットを送信する場合、NAT プロセスは {A:B} を {X:Y} に変換して
{A:B} を {X:Y} にバインドします。{X:Y} 宛ての着信パケットは(どのアドレスから
のものでも)、{A:B} に変換されます。
•
•
部分的/制限付き円錐型 - NAT の背後にあるホストが {A:B}(アドレスが A で
ポートが B)からパケットを送信する場合、NAT プロセスは {A:B} を {X:Y} に変
換して {A:B} を {X:Y} にバインドします。{X:Y} 宛ての着信パケットは(どのアドレ
スからのものでも)、{A:B} に変換されます。ただし、最初のパケットが入ってく
ると、バインディングは完全な 4 コンポーネント バインディングに変更されます。
これ以降は、この送信元からのパケットだけが受け入れられ、NAT 変換され
ます。
対称的円錐型 - NAT の背後にあるホストが {A:B}(アドレスが A でポートが
B)から {C:D} にパケットを送信する場合、NAT プロセスは送信元の {A:B} を
{X:Y} に変換して、{A:B} と {C:D} と {X:Y} をバインドします。逆方向では {C:D} か
ら {X:Y} へのパケットだけが受け入れられ、{A:B} に NAT 変換されます。
A、C、および X が IP アドレスで、B、D、および Y が TCP/UDP ポートであることに注
意してください。また、Cisco NAT および PAT 機能は、次の図に示されているように、
これらのすべての設定とトラフィック タイプをサポートします。
NAT と PAT の詳細については、次の文書を参照してください。
•
•
•
NAT の動作の仕組み
製品速報 - Cisco IOS NAT
NAT に関する Technical Assistance Center(TAC)のページ
NAT の制約
VoIP によって NAT の問題点が提示されます。それは、IP Phone またはルータが
VoIP のコール シグナリング、コール制御、メディア通信を確立する場合、IP アドレス
およびポート番号が IP パケットのデータ ペイロードに埋め込まれるという問題です。
埋め込まれた IP アドレスがプライベート IP アドレスの場合は、エンドポイント間でエ
ンドツーエンドのルーティング問題が生じます。
次に NAT の制約を示します。
•
•
•
•
•
NAT はレイヤ 3(IP レイヤ)で動作します。
NAT は送信元および宛先 IP アドレスを変更します。
NAT は IP ペイロードに埋め込まれたレイヤ 4、レイヤ 5、レイヤ 6、およびレ
イヤ 7 のアドレスを変更しません。
多くのアプリケーションがレイヤ 4 から レイヤ 7 に IP アドレスを埋め込んで
います。
レイヤ 4 から レイヤ 7 に埋め込まれたアドレスが原因で、NAT はルーティン
グ機能や暗号化などに関する IP のエンドツーエンド モデルを崩壊させます。
こうした NAT 機能の制約は、NAT にインテリジェンスを追加することで克服できます。
Cisco IOS NAT および PIX は、FTP、HTTP、H.323、Simple Mail Transfer Protocol
(SMTP; シンプル メール転送プロトコル)などのさまざまなアプリケーション用に、
Native Support または Fixup Protocol と呼ばれる機能をサポートします。
ファイアウォールの基本情報
インターネットへの関心が急速に高まるにつれて、ネットワーク セキュリティは世界中
の企業にとっての大きな関心事となっています。プライベート ネットワークをインター
ネットに接続すると、そのネットワークは莫大な数の未知のネットワークとその全ユー
ザに物理的に接続されます。こうした接続を行うことで多くの有用なアプリケーション
への道が開かれ、情報を共有するチャンスが増えますが、ほとんどのプライベート ネ
ットワークには、インターネット上の外部ユーザとは共有すべきでない情報が含まれ
ています。
ファイアウォールは 2 つのネットワーク間の防御点で、あるネットワークを他のネット
ワークから保護します。通常ファイアウォールは、企業のプライベート ネットワークを、
接続しているパブリック ネットワークや共有ネットワークから保護します。ファイアウォ
ールには、パケットをフィルタに掛けるルータのような単純な役割だけを与えることが
できます。また、パケット フィルタリングとアプリケーション レベルのプロキシ サービ
スを組み合せたマルチ コンピュータ ソリューションやマルチ ルータ ソリューションの
ような複雑な役割を与えることもできます。ファイアウォールは基本的に、ピアツーピ
ア通信の変換に対してセキュリティ規則を施行します。ファイアウォールは各ネットワ
ーク パケットをネットワーク セキュリティ ポリシーに基づいて評価します。ネットワー
ク セキュリティ ポリシーとは、ネットワークに出入りする通信を管理するセキュリティ
の規則、規定、および手順を集めたものです。
次に PIX ファイアウォールの基本概念を示します。
•
•
•
•
•
ファイアウォールはネットワークを内部または外部として識別します。
デフォルトでは、パケットは内部から外部へ送信されます。
デフォルトでは、内部から発信された接続に関連付けられた外部からのパケッ
トは、内部に戻ることができます。
デフォルトでは、外部から発信されたパケットは内部には入れません。
多くのファイアウォールは、外部トラフィックのすべてが既知のソケットから発
信されている場合のみ機能します。
最後の 2 つのポイントは、VoIP を扱ううえで重要な注意事項です。VoIP の発信者は、
コールを受信および発信できる必要があります。また、RTP/UDP の音声メディア トラ
フィックは非対称で、ランダムな UDP ポート番号(16384∼32767)が使用されます。通
常これらはすべてファイアウォール上で上書きできます。ただし、システム管理者がセ
キュリティの意味合いを理解していることが前提になります。
次の図は、VoIP とファイアウォールが RTP 音声メディア ストリームをブロックしてい
るようすを示しています。
要約すると、VoIP と NAT/ファイアウォールについての重要なポイントは次のようにな
ります。
•
•
•
•
ファイアウォールと NAT はレイヤ 3 でネイティブに動作します。
VoIP およびその他のアプリケーションはレイヤ 5 以上で動作します。
Cisco IOS Firewall フィーチャ セット、NAT、および PIX には、これらの問題の
解決に役立つ、Application Layer GW(ALG)または Fixup Protocol と呼ばれ
るアプリケーション機能があります。
VoIP アプリケーションは、複数のプロトコルのダイナミックな組み合せで構成
されています。
シグナリングについては SIP、MGCP、H.323、および SCCP
o 機能交換については SDP、H.225、および H.245
o 制御および音声メディアについては RTP/RTCP
RTP および RTCP はどちらも、すべての Cisco 製品で音声メディア用に
16384 から 32767 までのダイナミック ポートを使用します。
o
•
VoIP プロトコルのプロトコル スタックと信号フロー
次の図は、H.323 のプロトコル スタックを示しています。
次の図は、H.323 のコール シグナリング フローを示しています。
次の図は、IP アドレスとポート番号が埋め込まれた H.323 のメッセージ タイプを示し
ています。
次の図は、SIP のプロトコル スタックを示しています。
次の図は、SIP のシグナリング フローを示しています。
次の図は、IP アドレスとポート番号が埋め込まれた SIP のメッセージ タイプを示して
います。
次の図は、MGCP のプロトコル スタックを示しています。
次の図は、MGCP および SS7 の信号フローを示しています。
次の図は、IP アドレスとポート番号が埋め込まれた MGCP のメッセージ タイプを示し
ています。
次の図は、SCCP コールを示しています。
次の図は、SCCP のコール フローを示しています。
次に SCCP のデバッグ例を示します。
!--- SCCP から Cisco CallManager への登録メッセージ
{StationMessageID 0x0001;
StationIdentifier sid;
UINT32 stationIpAddr;
DeviceType deviceType; };
!--- RTP 音声メディアに使用する UDP を Cisco CallManager
に通知します。
{ StationMessageID 0x0002;
UINT32 rtpMediaPort; };
!--- このメッセージは SCCP から Cisco CallManager へのもの
です。
{ StationMessageID messageID;
OpenReceiveChanStatus orcStatus;
UINT32 ipAddr;
UINT32 portNumber; };
VoIP が NAT を通過するための課題
次の事柄を考慮しながら、下の図を見てください。
•
•
•
NAT はレイヤ 3 アドレッシングだけを見ます。
VoIP のシグナリング プロトコルは、レイヤ 5 に IP アドレスを埋め込みます。
RTP/RTCP はレイヤ 5 で動作します。
問題:従来の NAT はレイヤ 5 アドレスを NAT 変換しません。そのため、IP ペイロー
ド内に埋め込まれた IP アドレスおよびポートが原因で、NAT 変換された後は VoIP
シグナリングおよび RTP/RTCP は到達不能になります(単方向シグナリングおよび
音声)。
例として、VoIP シグナリング プロトコルとして SIP を取り上げます。
注:他のすべての VoIP プロトコルにも同様の問題があります。
1. ユーザ A がユーザ B に INVITE を送信します。
2. NAT はレイヤ 3 アドレスを変換しますが、レイヤ 5(SIP や Session Definition
Protocol(SDP))アドレスは変換しません。
3. ユーザ B は INVITE を受信し、NAT アドレスに応答します。シグナリングは完
了します(たとえば、200 OK)。
4. ユーザ A はユーザ B の SDP c= / m= address:port に RTP を送信します。
5. 問題:ユーザ B はユーザ A の c= / m= address:port に RTP を送信しようとし
ますが、ユーザ A にルーティングできないため失敗し(SDP アドレスとポート
は NAT 変換されませんでした)、単方向音声が発生します。
6. ユーザ A が電話を切ると(単方向音声のため)、BYE がユーザ B に正しく送
信されます。
7. 問題:ユーザ B が電話を切っても、BYE はユーザ A に到達しません。これは
ヘッダー アドレスが NAT 変換されていないためです。そのため、ユーザ A が
電話を切るまで、そのセッションでのユーザ A の状態はアップ(接続中)のま
まになります。
注:
インターネット上の VoIP デバイスは、プライベート アドレスにコールを
発信することはできません(送信先がわからないため)。
o インターネット上の VoIP デバイスは、使用されている NAT のタイプ
(円錐型や対称型など)がわからないため、どのバインディングを使用
すべきかがわかりません。
o インターネット上の VoIP デバイスは、バインディングがまだ空いている
かどうかがわかりません。
o
VoIP がファイアウォールを通過するための課題
次の事柄を考慮しながら、下の図を見てください。
•
•
•
•
ファイアウォールはレイヤ 3 アドレッシングだけを見ます。
VoIP のシグナリング プロトコルは、レイヤ 5 に IP アドレスを埋め込みます。
RTP/RTCP はレイヤ 5 で動作します。
デフォルトでは、ファイアウォールは外部から内部へのトラフィックを許可しま
せん。
問題:外部から内部へのトラフィックの通過を許可しないというファイアウォールのデフ
ォルトの性質が原因で、VoIP コールは失敗します。さらに、エンドポイントで使用され
るダイナミック RTP/RTCP ポートは、セキュリティ ポリシーを変更しなければ自動的
にはオープンせず、また許可もされません。
次に例を示します。
1. ファイアウォールは内部から外部へのセッションを許可しているため(デフォル
ト)、ユーザ A はユーザ B にコールできます。
2. ユーザ B は VoIP シグナリング レイヤで ユーザ A に応答できます。
3. 問題:ユーザ B が外部から内部へ RTP/RTCP トラフィックを送信しようとした
場合、VoIP シグナリングとは異なるソケット(送信元アドレス:ポート、宛先アド
レス:ポート、プロトコル)が使用されるため、この送信は失敗します。
4. 問題:ユーザ B がユーザ A へのコールを開始しようとした場合、ファイアウォ
ールは外部から内部へのコールを許可しない(デフォルト)ため、コールは失
敗します。
5. 問題:対称的な RTP が使用されていない場合、RTP は内部に戻れません。
6. 問題:ファイアウォールは特定の(または特定の範囲の)外部アドレスからであ
れば、外部から内部へのコールを許可できますが、Cisco では GKRCS を使
用していないため(外部 IP アドレスのリストが膨大になる可能性があります)、
これは H.323 に関する管理上の問題となります。SIP でこの問題を解決する
には、両側にプロキシを置くか、またはファイアウォールに Record-Route と
Via を追加します。
暗号化された VoIP が ALG を利用している NAT/ファイアウォールを通過
するための課題
ファイアウォール/NAT で ALG または Fixup protocol を有効にすれば、IP ペイロード
内のレイヤ 4 からレイヤ 7 の情報を参照して、埋め込まれた IP アドレスとポートに必
要な変更を加えることが可能となります。これにより、VoIP と NAT/ファイアウォール
に関係する問題のほとんどが解決されます。しかし、IPSec や Transport Layer
Security(TLS)などの暗号化が使用されていて、メディアまたはシグナリング(または
その両方)が暗号化されている場合、ALG 機能でレイヤ 4 からレイヤ 7 の情報を参
照することはできず、埋め込まれた IP アドレスとポートに必要な変更を加えることが
できません。この場合は実質的に ALG が無効であるときと同じように動作し、VoIP
は機能しません。
Cisco ソリューション
次に、PIX ファイアウォール、IOS Firewall フィーチャ セット、および IOS NAT の要約
を一覧で示します。
PIX ファイアウォール(VoIP ALG または Fixup protocol を使用)
•
バージョン 5.2:H.323 バージョン 2、Registration and Status
(RAS)、および NAT(PAT 不可)をサポートします。
•
•
バージョン 6.0 および 6.1:NAT(PAT 不可)を使用した SIP と、
NAT(PAT 不可)を使用した SCCP は追加されていますが、
MGCP はサポートしません。
バージョン 6.2:H.323 バージョン 2 および SIP について PAT を
サポートします。
IOS Firewall(VoIP ALG または Fixup protocol を使用)
•
•
Cisco IOS(R) ソフトウェア リリース 12.1(5)T で H.323 バージョン
2 をサポートします。
SIP および MGCP はまだサポートされていません。
IOS NAT(VoIP ALG または Fixup protocol を使用)
•
•
•
•
H.323 バージョン 2:Cisco IOS ソフトウェア リリース 12.1(5)T
(RAS なし)および Cisco IOS ソフトウェア リリース 12.2(2)T
(RAS あり)。
SIP:NAT および PAT は近日中に使用可能になります。
Skinny:Cisco IOS ソフトウェア リリース 12.1(5)T 以降で使用可
能。
MGCP:まだサポートされていません。
VoIP で NAT やファイアウォールを通過するために、次のような方法も使用されてい
ます。
•
•
•
•
•
•
VoIP デバイスに、NAT のパブリック IP アドレス(または DNS 名)を認識させ
ます。
NAT がダイナミック バインディングを使用しないように設定します。
NAT がパブリック ソケットをプライベート ソケットに静的にマップするよう設定
します。
VoIP デバイスでレイヤ 5 の SIP/SDP アドレスの NAT 変換を行い、それらが
パブリック アドレス側にあるように見せます。
h323-gateway voip bind srcaddr x.x.x.x コマンドを使用して、シグナリングとメ
ディア トラフィックの送信元 IP アドレスをバインドします。これにより、ダウンス
トリームのファイアウォールに、送信元シグナリングがどこから送られているか
を認識させることができるため、ファイアウォール経由の VoIP に対して信頼で
きる関連付けやポリシーを設定できます。さらに、シグナリングおよびメディア
トラフィックの送信元 IP アドレスが明確に定義され、ルータがいずれのインタ
ーフェイスからも IP アドレスをランダムに選択できないようになります。
Cisco IOS ソフトウェア リリース 12.2(2)XB では、bind all source-interface
y.y.y.y コマンドで SIP バインド アドレスがサポートされています。
NAT の設定の詳細については、「ネットワーク アドレス変換の設定:スタートアップ ガ
イド」を参照してください。
注:これらの方法の欠点は、システム管理者が VoIP デバイスと、パブリック アドレス
への変更の設定と管理を行わなければならない点です。
VoIP で使用される UDP/TCP ポート
VoIP で H.323、SIP、および MGCP 用に使用される UDP/TCP ポートを次に示します。
H.323
•
•
•
•
•
•
ユニキャスト GK ディスカバリ:UDP ポート 1718
マルチキャスト GK ディスカバリ:224.0.1.41 UDP ポート 1718
RAS:UDP ポート 1719
H.225(ホスト用コール シグナリング):TCP ポート 1720
H.245(機能交換):TCP ポート 11000∼65535 の範囲でのネゴ
シエーション
RTP 音声ストリーム:16384∼32767 の UDP ポート
SIP
•
•
•
シグナリング:UDP または TCP のいずれかのポート 5060
RTP 音声ストリーム:16384∼32767 の UDP ポート
ユーザ エージェントは、REGISTER 要求を IP アドレス
224.0.1.175(すべての SIP サーバのマルチキャスト アドレス、
sip.mcast.net)に送信することで、起動時にローカル サーバに
登録できます。
MGCP バージョン 0.1
•
•
MG および CA シグナリング:UDP ポート 2427
RTP 音声ストリーム:16384∼32767 の UDP ポート
MGCP バージョン 1.0
•
MG および CA シグナリング:MG は UDP ポート 2427、CA は
UDP ポート 2727
注:これは、一部の CA に MG 機能が組み込まれているためで
す。
•
RTP 音声ストリーム:16384∼32767 の UDP ポート
注:RTP のポート選択は MG によって変わります。MG の音声
ポートの番号に応じて、RTP のポート範囲が選択されます。ポ
ート番号は最大で 32767、最小で 256 です。
関連情報
•
•
•
•
音声、テレフォニー、およびメッセージング テクノロジー
音声、テレフォニー、およびメッセージング デバイス
音声、テレフォニー、およびメッセージング ソフトウェア
音声、テレフォニー、およびメッセージングに関する TAC eLearning ソリューシ
ョン
All contents copyright (C) 1992--2003 Cisco Systems K.K.