SIP ALG
SIP(Session Initiation Protocol)は、インターネット上でマルチメディア セッションを開始、変更、終了するためのシグナリング プロトコルです。SIPは、シングルメディアおよびマルチメディアセッションをサポートします。
SIP ALGを理解する
SIP(セッション開始プロトコル)は、インターネットを介したマルチメディア セッションを開始、変更、終了するためのインターネット技術タスクフォース(IETF)標準プロトコルです。このようなセッションには、インスタントメッセージングやネットワーク環境におけるアプリケーションレベルのモビリティなどの機能を備えた会議、テレフォニー、マルチメディアが含まれる場合があります。
Junos OS は SIP をサービスとしてサポートしており、設定したポリシーに基づいて許可または拒否します。SIP は Junos OS で事前に定義されたサービスで、宛先ポートとしてポート 5060 を使用します。
SIP の機能の 1 つは、セッション記述情報を配布し、セッション中にセッションのパラメーターをネゴシエートおよび変更することです。SIP は、マルチメディア セッションの終了、通話確立のシグナル、障害表示の提供、エンドポイント登録方法の提供にも使用されます。
セッション記述情報は、INVITEおよび200-OKメッセージまたは200-OKおよびACKメッセージに含まれ、セッションのマルチメディアタイプを示します。たとえば、音声かビデオかです。SIPはさまざまな記述プロトコルを使用してセッションを記述できますが、ジュニパーネットワークスSIPアプリケーション層ゲートウェイ(ALG)は、セッション記述プロトコル(SDP)のみをサポートします。
SDP は、システムがマルチメディア セッションに参加するために使用できる情報を提供します。SDPには、IPアドレス、ポート番号、時刻、日付などの情報が含まれる場合があります。SDPヘッダーのIPアドレスとポート番号(それぞれc=フィールドとm=フィールド)は、クライアントがメディアストリームを受信したいアドレスとポートであり、SIPリクエストの発信元であるIPアドレスとポート番号ではないことに注意してください(同じでもかまいません)。
SIP メッセージは、クライアントからサーバーへの要求と、セッション (または通話) の確立を目的としたサーバーからクライアントへの要求への応答で構成されています。ユーザーエージェント(UA)は、通話のエンドポイントで実行されるアプリケーションであり、次の2つの部分で構成されています。
-
ユーザーに代わってSIP要求を送信するUAC(ユーザーエージェントクライアント)
-
応答をリッスンし、応答が到着するとユーザーに通知するユーザーエージェントサーバー(UAS)
UACとUASは、交渉において特定のエージェントが果たしている役割に関連して定義されます。
UAの例としては、SIPプロキシサーバーや電話機があります。
このトピックでは、次のセクションについて説明します。
SIP ALG運用
SIPトラフィックには、シグナリングとメディアストリームの2種類があります。SIPシグナリングトラフィックは、クライアントとサーバー間の要求メッセージと応答メッセージで構成され、UDPやTCPなどのトランスポートプロトコルを使用します。メディアストリームは、トランスポートプロトコルを使用してデータ(オーディオデータなど)を伝送します。
Junos OSリリース12.3X48-D25およびJunos OSリリース17.3R1以降、SIP ALGはTCPをサポートしています。SIP ALGを介したTCPサポートにより、サーバーを頻繁に再登録または更新する必要がなくなることで、サーバーへのトラフィックが削減されます。
デフォルトでは、Junos OSはポート5060でSIPシグナリングメッセージをサポートします。SIPサービスを許可するポリシーを作成することでポートを設定でき、ソフトウェアは他のタイプのトラフィックと同様にSIPシグナリングトラフィックをフィルタリングして、許可または拒否します。ただし、メディアストリームでは、通話中に数回変更される可能性のある動的に割り当てられたポート番号が使用されます。ポートが固定されていないと、静的なポリシーを作成してメディアトラフィックを制御することは安全ではありません。この場合、デバイスはSIP ALGを呼び出します。メディアセッションに使用されるデバイストランスポートは事前に不明です。ただし、SIP ネゴシエーションに使用されるポートは既知のポート(または事前定義されたポート)です。ALGは、他のパケットと容易に区別できる制御セッションからのパケットに関心を登録し、メディアセッションに使用されるトランスポート情報(IPアドレスとポートの両方)のネゴシエーションを検査します。
SIP ALGは、ピンホールが開かれた時点で既知の情報で識別される一致するIP、ポート、トランスポートアドレス、プロトコルを決定するとピンホールを作成します。
SIP ALGは、SIPトランザクションを監視し、これらのトランザクションから抽出した情報に基づいてピンホールを動的に作成および管理します。ジュニパーネットワークスSIP ALGは、すべてのSIPメソッドとレスポンスをサポートします。SIPサービスを許可する静的ポリシーを作成することで、SIPトランザクションがジュニパーネットワークスファイアウォールを通過することを許可できます。ポリシーがSIPトラフィックを検査するように設定されている場合(または、より適切には、ポリシーが検査のためにSIP ALGにトラフィックを送信する場合)、許可されるアクションは、トラフィックを許可する(その場合、適切なピンホールが開く)またはトラフィックを拒否することです。
SIP ALGは、SDPを含むSIPメッセージを傍受し、パーサーを使用してピンホールの作成に必要な情報を抽出します。SIP ALGがパケットのSDP部分を調べると、パーサーがIPアドレスやポート番号などの情報を抽出し、SIP ALGはそれをピンホールテーブルに記録します。SIP ALGは、ピンホールテーブルに記録されたIPアドレスとポート番号を使用してピンホールを開き、メディアストリームがデバイスを通過できるようにします。
デバイスが NAT を実行している場合、UA が使用するトランスポートアドレスは正しくありません。SIP ALGは、ネットワークアドレスを変換するデバイスによって割り当てられた変換されたポートとアドレスに基づいて、トランスポートアドレスを変更します。SDPが暗号化されると、デバイスはメッセージの内容を抽出または変更できないため、トランスポートアドレスを修正できません。回避策を提供するために、STUNプロトコルが導入されており(NATデバイスに何らかの形式のコーンNATを実行する必要があります)、クライアントが変換されたアドレスを決定し、SDPメッセージで新たに検出されたアドレスを使用できるようになりました。
NEC SIP製品は条件付きでサポートされます。
SDP セッションの説明
SDP セッション記述は、マルチメディア セッションを発見して参加するのに十分な情報を伝えるために明確に定義された形式です。セッションは、1行に1つずつ、一連の属性と値のペアによって記述されます。属性名は 1 文字で、その後に = と値が続きます。オプションの値は =* で指定します。値は、ASCII文字列、またはスペースで区切られた特定の型のシーケンスです。属性名は、セッション、時間、メディア内など、関連する構文構成内でのみ一意です。
SDP セッションの説明では、メディアレベルの情報は m= フィールドで始まります。
SDP 説明の多くのフィールドのうち、2 つのフィールドにはトランスポート層情報が含まれているため、SIP ALG にとって特に役立ちます。
-
c=接続情報についてはこのフィールドは、セッションレベルまたはメディアレベルで表示できます。次の形式で表示されます。
c=<network-type><address-type><connection-address>
Junos OSは、ネットワークタイプとして「IN」(インターネット用)、アドレスタイプとして「IPv4」、宛先(接続)IPアドレスとしてユニキャストIPアドレスまたはドメイン名のみをサポートしています。Junos OSリリース15.1X49-D40およびJunos OSリリース17.3R1以降では、「IPv6」アドレスタイプもサポートされます。
宛先IPアドレスがユニキャストIPアドレスの場合、SIP ALGはメディア説明フィールドm=で指定されたIPアドレスとポート番号を使用してピンホールを作成します。
-
m=メディア発表用このフィールドはメディアレベルで表示され、メディアの説明が含まれています。次の形式で表示されます。
m=<media><port><transport><fmtリスト>
現在、Junos OSは、アプリケーション層トランスポートプロトコルとして「RTP」をサポートしています。ポート番号は、メディアストリームの宛先ポートを示します(送信元はリモートUAによって割り当てられます)。フォーマットリスト(fmtリスト)は、メディアが使用するアプリケーション層プロトコルに関する情報を提供します。
ソフトウェアは、RTPとRTCP(リアルタイム制御プロトコル)用にのみポートを開きます。すべてのRTPセッションには、対応するRTCPセッションがあります。そのため、メディアストリームがRTPを使用するたびに、SIP ALGはRTPとRTCPの両方のトラフィック用にポートを予約(ピンホールを作成する)必要があります。デフォルトでは、RTCPのポート番号はRTPポート番号より1つ上です。
ピンホールの作成
各ピンホール(1つはRTPトラフィック用、もう1つはRTCPトラフィック用)は、同じ宛先IPアドレスを共有します。IPアドレスは、SDPセッション記述のc=フィールドから取得されます。c= フィールドは、SDP セッション記述のセッション レベルまたはメディア レベルのどちらの部分にも表示できるため、パーサーは(SDP 規則に従って)以下のルールに基づいて IP アドレスを決定します。
-
まず、SIP ALGパーサーは、メディアレベルでIPアドレスを含むc=フィールドを探します。このようなフィールドがある場合、パーサーはそのIPアドレスを抽出し、SIP ALGはそのアドレスを使用してメディアのピンホールを作成します。
-
メディア レベルに c= フィールドがない場合、SIP ALG パーサーはセッション レベルの c= フィールドから IP アドレスを抽出し、SIP ALG はその IP アドレスを使用してメディアのピンホールを作成します。セッションの説明にどちらのレベルにもc=フィールドが含まれていない場合、これはプロトコルスタックにエラーがあることを示しており、デバイスはパケットをドロップしてイベントを記録します。
SIP ALGは、信号トラフィック用のピンホールも開きます。これらの信号ピンホールは、前回の信号セッションのタイムアウト後に有効であり、前回の信号セッションと一致しないサードパーティのアドレスに送信された信号トラフィックにも役立ちます。SIP ALG信号のピンホールは、宛先IPと宛先ポートのみが指定されているRTPやRTCPのピンホールとは異なり、エージングすることはありません。
SIP ALGは、必要に応じて、以下のヘッダー用に信号ピンホールを開きます。
-
ビア
-
お問い合わせ
-
ルート
-
レコードルート
SIP ALGがピンホールを作成するには、以下の情報が必要です。この情報は、SDPセッションの記述またはSIPヘッダー(上記のとおり)から取得されます。
-
プロトコル—UDPまたはTCP。
-
送信元IP—不明。
-
送信元ポート—不明。
-
宛先IP—パーサーは、メディアまたはセッションレベルのc=フィールドから宛先IPアドレスを抽出します。
-
宛先ポート—パーサーは、メディアレベルのm=フィールドからRTPの宛先ポート番号を抽出し、次の式を使用してRTCPの宛先ポート番号を計算します。
RTPポート番号+1
-
ライフタイム—この値は、パケットを通過させるためにピンホールが開いている時間の長さ(秒単位)を示します。ライフタイムが終了する前にパケットはピンホールを通過する必要があります。ライフタイムが終了すると、SIP ALGはピンホールを削除します。
ライフタイム内にパケットがピンホールを通過すると、その直後に SIP ALG はパケットが送信された方向のピンホールを削除します。
図1 は、2つのSIPクライアント間のコール設定と、SIP ALGがピンホールを作成してRTPおよびRTCPトラフィックを許可する方法を示しています。この図は、デバイスに SIP を許可するポリシーがあるため、SIP シグナリング メッセージ用にポート 5060 を開くことを前提としています。
図1:SIP ALGコールセットアップ
SIP ALGは、宛先IPアドレスが0.0.0.0の場合、RTPおよびRTCPトラフィックのピンホールを作成しません。これは、セッションが保留中であることを示しています。例えば、電話通信中にセッションを保留にするために、クライアント A はクライアント B に宛先 IP アドレスが 0.0.0.0 である SIP メッセージを送信します。これを行うと、クライアント B は、追って通知されるまでメディアを送信してはならないことが示されます。クライアントBがメディアを送信すると、デバイスはパケットをドロップします。
- SIP ALGのIPv6サポートについて
- UDPベースのSIP ALGのビジーランプフィールドサポートのスケーリングについて
- SIP ALGリクエスト方法について
- SIP ALG 設定の概要
- SIP ALG DoS攻撃保護について
- SIP ALGの不明なメッセージタイプについて
- SIP ALGコールの持続時間とタイムアウトについて
SIP ALGのIPv6サポートについて
IPv6は、NAT-PTモードおよびNAT64アドレス変換とともに、SIP ALGでサポートされています。
SIP ALGは、IPv4アドレスを処理するのと同じ方法でIPv6アドレスを処理し、ペイロードが設定されている場合NATペイロードを更新し、将来のトラフィックのためにピンホールを開きます。
以下のフォーマットでは、特別な処理が行われます。
-
IPv6 in SIP URIs—SIP URIは、IPv4アドレスを持つURIと同じように見えます。すべてのURIと同様に、IPv6アドレスは角括弧で囲まれています。IPv6アドレスブロックはコロンで区切られています。多くの表記では、コロンがホスト名またはIPアドレスをプロトコルポートから分離します。完全なIPv6アドレスを解析してポートを区切るために、アドレスは角括弧で囲まれます
-
IPv6 in SDP—セッション記述プロトコル(SDP)のIPv6アドレスにはIP6マーカーがあります。
-
IPv6をサポートするSIP ALGには、以下の制限があります。
-
永続的なNATを持つNAT64が実装されている場合、SIP ALGは、アドレスオブレコード(AOR)で設定されている場合、SIP ALG NAT永続的なNATバインディングテーブルにNAT変換を追加します。永続的なNATは設定されたアドレスと重複できないため、同じアドレスに設定されたNAT66とNAT64の共存はサポートされていません。
同じ送信元IPアドレスに対して1つのバインディングのみが作成されます。
-
UDPベースのSIP ALGのビジーランプフィールドサポートのスケーリングについて
ビジーランプフィールド(BLF)は、同じプライベートブランチエクスチェンジ(PBX)に接続されている別の内線番号がビジー状態かどうかを示すIP電話のライトです。Web インターフェイスを使用して、BLF を手動で設定できます。BLF が設定されている場合、電話機は IP PBX で利用可能なリソース リストにサブスクライブし、他の内線番号のステータス情報が通知されます。BLF は SIP(セッション開始プロトコル)を介して動作し、SUBSCRIBE メッセージと NOTIFY メッセージを使用します。通常、電話は加入者で、IP PBXは通知です。
電話機が IP PBX に登録されると、IP PBX はリソース リストの状態を電話機に通知します。例えば、リソース・リストが巨大な場合、NOTIFYメッセージの本文も巨大になります。SIP ALGは3000バイトのSIPメッセージのみをサポートしているため、巨大なNOTIFYメッセージをバイパスします。メッセージ本文に BLF のインスタンスが多すぎると、ペイロードは変更されず、ゲートは開かれません。
Junos OSリリース12.3X48-D15およびJunos OSリリース17.3R1以降、SIP ALGはUDPプロトコルで65,000バイトのSIPメッセージをサポートします。スケーリングBLFアプリケーションでは、すべてのインスタンスが約500バイトの場合、SIP ALGは1つのSIP UDPメッセージで100のインスタンスをサポートします。
UDPベースのSIP ALGのBLFサポートには、以下の機能があります。
-
デバイスは、65,000バイトのSIPメッセージを送受信できます。
-
SIP ALGは、65,000バイトのSIPメッセージを解析し、必要に応じてピンホールを開くことができます。
-
SIP ALGは、NATが設定され、ペイロードが変更された場合、新しいジャンボSIPメッセージを再生成します。
SIP ALGリクエスト方法について
セッション開始プロトコル (SIP) トランザクション・モデルには、多数の要求メッセージと応答メッセージが含まれており、それぞれにメッセージの目的を示す method フィールドが含まれています。
Junos OSは、以下のメソッドタイプとレスポンスコードをサポートしています。
-
INVITE—ユーザーは、別のユーザーをセッションに招待するためにINVITEリクエストを送信します。INVITEリクエストの本文には、セッションの説明を含めることができます。
-
ACK—INVITEを発信したユーザーが、INVITEリクエストに対する最終応答の受信を確認するためにACKリクエストを送信します。元のINVITEリクエストにセッションの説明が含まれていない場合、ACKリクエストにはセッションの説明を含める必要があります。
-
オプション—ユーザーエージェント(UA)は、SIPプロキシの機能に関する情報を取得します。サーバーは、サポートしているメソッド、セッション記述プロトコル、およびメッセージエンコーディングに関する情報を返します。
-
BYE—ユーザーがセッションを放棄するBYEリクエストを送信します。いずれかのユーザーからのBYEリクエストは、自動的にセッションを終了します。
-
CANCEL—ユーザーは保留中のINVITEリクエストをキャンセルするためにCANCELリクエストを送信します。CANCEL を受信する前に、INVITE を処理する SIP サーバーが INVITE の最終応答を送信していた場合、CANCEL 要求は効果がありません。
-
REGISTER—ユーザーはREGISTERリクエストをSIPレジストラサーバーに送信し、ユーザーの現在地を通知します。SIP レジストラー・サーバーは、受信したすべての情報を REGISTER 要求に記録し、ユーザーを見つけようとするすべての SIP サーバーがこの情報を使用できるようにします。
-
情報—コールのシグナリングパスに沿ってセッション中のシグナリング情報を伝達するために使用されます。
-
サブスクライブ—リモートノードから現在の状態と状態の更新をリクエストするために使用します。
-
通知—加入者がサブスクリプションを持っている状態の変化を加入者に通知するために送信されます。
-
参照—リクエストで提供された連絡先情報によって受信者(リクエストURIで識別される)を第三者に紹介するために使用されます。
例えば、プライベートネットワーク内のユーザーAが、パブリックネットワーク内のユーザーBを、同じくプライベートネットワーク内にいるユーザーCに紹介する場合、SIPアプリケーション層ゲートウェイ(ALG)は、ユーザーBがユーザーCに連絡できるように、ユーザーCに新しいIPアドレスとポート番号を割り当てます。ただし、ユーザーCがレジストラに登録されている場合、そのポートマッピングはALGネットワークアドレス変換(NAT)テーブルに保存され、変換の実行に再利用されます。
-
更新—ピンホールを開き、新規または更新されたSDP情報を取得するために使用します。Via:、From:、To:、Call-ID:、Contact:、Route:、および Record-Route:ヘッダーフィールドが変更されます。
-
1xx、202、2xx、3xx、4xx、5xx、6xx 応答コード—トランザクションのステータスを示すために使用します。ヘッダーフィールドが変更されます。
SIP ALG 設定の概要
SRXデバイスでは、セッション開始プロトコルアプリケーション層ゲートウェイ(SIP ALG)はデフォルトで無効になっていますが、必要に応じてCLIを使用して有効にする必要があります。その他のデバイスでは、デフォルトで有効になっています。SIP ALG操作を微調整するには、以下の手順を使用します。
-
SIPコールアクティビティを制御します。手順については、 例:SIP ALG通話期間とタイムアウトの設定を参照してください。
-
SIPプロキシサーバーをサービス拒否(DoS)フラッド攻撃から保護します。手順については、 例:SIP ALG DoS攻撃保護の設定を参照してください。
-
セッションがネットワークアドレス変換(NAT)モードおよびルートモードのときに、不明なメッセージの通過を有効にします。手順については、「 例:不明なSIP ALGメッセージタイプを許可する」を参照してください。
-
独自のSIPコールフローに対応します。手順については、SIP ALGホールドリソースの保持(CLI手順)を参照してください。
SIP ALG DoS攻撃保護について
セッション開始プロトコル(SIP)プロキシサーバーがコールを処理する機能は、SIP INVITEリクエスト(最初に拒否されたリクエスト)が繰り返されることによって影響を受ける可能性があります。サービス拒否(DoS)保護機能により、INVITEリクエストとそれに対するプロキシサーバーの応答を監視するようにデバイスを設定できます。応答に、401、407、487、488以外の3xx, 、4xx、または5xx 応答コードが実際の失敗応答ではない場合、リクエストをブロックしないでください。 SIP、ALGおよびNATについてを参照してください。ALGは、リクエストの送信元IPアドレスとプロキシサーバーのIPアドレスをテーブルに格納します。その後、デバイスはすべてのINVITEリクエストをこのテーブルと照合し、設定可能な秒数(デフォルトは3)の間、テーブル内のエントリーに一致するパケットを破棄します。すべてのプロキシサーバーへの繰り返しのINVITEリクエストを監視および拒否するようにデバイスを設定したり、宛先IPアドレスを指定して特定のプロキシサーバーを保護することができます。SIP攻撃保護はグローバルに設定されます。
SIP ALGの不明なメッセージタイプについて
この機能により、未識別のセッション開始プロトコル(SIP)メッセージをデバイスでどのように処理するかを指定できます。デフォルトでは、不明な(サポートされていない)メッセージをドロップします。
不明なメッセージはセキュリティを侵害する可能性があるため、許可することはお勧めしません。ただし、安全なテスト環境または実稼働環境では、このコマンドは、異種ベンダーの機器との相互運用性の問題を解決するのに役立ちます。不明なSIPメッセージを許可することで、ネットワークを運用できるようになり、後でVoIP(Voice-over-IP)トラフィックを分析して、一部のメッセージがドロップされた理由を特定できます。不明なSIPメッセージタイプ機能により、ネットワークアドレス変換(NAT)モードとルートモードの両方で不明のメッセージタイプを含むSIPトラフィックを受け入れるようにデバイスを設定できます。
このオプションは、サポートされているVoIPパケットとして識別された受信パケットにのみ適用されます。パケットを識別できない場合、常にパケットは破棄されます。パケットがサポートされているプロトコルとして識別され、不明なメッセージタイプを許可するようにデバイスを設定している場合、メッセージは処理なしで転送されます。
SIP ALGコールの持続時間とタイムアウトについて
通話時間とタイムアウト機能により、SIP(Session Initiation Protocol)通話アクティビティを制御し、ネットワークリソースの管理に役立ちます。
通常、クライアントの 1 つが BYE または CANCEL 要求を送信すると、呼び出しは終了します。SIPアプリケーション層ゲートウェイ(ALG)は、BYEまたはCANCELリクエストを傍受し、そのコールのすべてのメディアセッションを削除します。電源障害など、呼び出し中のクライアントが BYE または CANCEL 要求を送信できない理由または問題が考えられます。この場合、通話が無期限に継続され、デバイス上のリソースを消費する可能性があります。
コールには1つ以上の音声チャネルを含めることができます。各音声チャネルには2つのセッション(または2つのメディアストリーム)があり、1つはRTP(リアルタイムトランスポートプロトコル)トラフィック用、もう1つはRTCP(リアルタイム制御プロトコル)シグナリング用です。セッションを管理する際、デバイスは各音声チャネルのセッションを1つのグループと見なします。タイムアウトと通話時間の設定は、各セッションではなくグループに適用されます。
SIPコールアクティビティは、以下のパラメータによって管理されます。
-
inactive-media-timeout—このパラメータは、グループ内のメディア(RTPまたはRTCP)トラフィックなしでコールがアクティブな状態を維持できる最大時間(秒)を示します。通話中にRTPまたはRTCPパケットが発生するたびに、このタイムアウトはリセットされます。非アクティブ期間がこの設定を超えると、SIP ALGがメディア用に開いたファイアウォールの一時的な開口部(ピンホール)が閉じられます。デフォルト設定は120秒で、範囲は10秒から2550秒です。タイムアウトすると、メディア (セッションとピンホール) のリソースが削除され、この呼び出しのすべてのメディア リソースが削除されると、デバイス上の SIP 呼び出しも終了することに注意してください。 -
maximum-call-duration—このパラメータは、コールの絶対最大長を設定します。コールがこのパラメータ設定を超えると、SIP ALGはコールを破棄し、メディアセッションをリリースします。デフォルト設定は720分で、範囲は3〜720分です。 -
t1-interval—このパラメーターは、エンドポイント間のトランザクションの往復時間の推定値を秒単位で指定します。デフォルトは500ミリ秒です。多くのSIPタイマーは(RFC 3261で説明されているとおり)t1インターバルに合わせてスケーリングされるため、t1インターバルタイマーの値を変更すると、これらのSIPタイマーも調整されます。 -
t4-interval—このパラメーターは、メッセージがネットワークに残る最大時間を指定します。デフォルトは 5 秒で、範囲は 5 秒から 10 秒です。多くのSIPタイマーは(RFC 3261で説明されているとおり)t4インターバルに合わせてスケーリングされるため、t4インターバルタイマーの値を変更すると、それらのSIPタイマーも調整されます。 -
c-timeout—このパラメーターは、プロキシでのINVITEトランザクションタイムアウトを分単位で指定します。デフォルトは3です。SIP ALGは真ん中にあるため、INVITEトランザクションタイマー値B((64*T1)=32秒)を使用する代わりに、SIP ALGはプロキシからタイマー値を取得します。
SIP ALGホールドリソースについて
ユーザーが通話を保留にすると、SIP ALG(セッション開始プロトコルアプリケーション層ゲートウェイ)は、ピンホールや変換コンテキストなどのセッション記述プロトコル(SDP)メディアリソースを解放します。ユーザーが通話を再開すると、INVITEリクエストメッセージが新しいSDPのオファーと応答をネゴシエートし、SIP ALGがメディアストリームのリソースを再割り当てします。これにより、メディアディスクリプションが以前のディスクリプションと同じであっても、メディアディスクリプションのIPアドレスとポート番号が新しく変換される可能性があります。これは、 RFC 3264 An Offer/Answer Model with the Session Description Protocol (SDP)に準拠しています。
一部の独自の SIP 実装では、ユーザー エージェント(UA)モジュールが新しい SDP INVITE オファーを無視し、前回のネゴシエーションの SDP オファーを引き続き使用するようにコール フローが設計されています。この機能に対応するには、通話が再開されたときに再利用するために通話が保留になったときに、SDP メディア リソースを保持するようにデバイスを設定する必要があります。
SIP ALGホールドリソースの保持(CLI手順)
独自のSIPコールフローに対応するには:
user@host# set security alg sip retain-hold-resource
SIP、ALGおよびNATについて
ネットワークアドレス変換(NAT)プロトコルを使用すると、プライベートサブネット内の複数のホストが単一のパブリックIPアドレスを共有してインターネットにアクセスできます。発信トラフィックの場合、NATはプライベートサブネット内のホストのプライベートIPアドレスをパブリックIPアドレスに置き換えます。受信トラフィックの場合、パブリックIPアドレスはプライベートアドレスに変換され、メッセージはプライベートサブネット内の適切なホストにルーティングされます。
セッション開始プロトコル(SIP)サービスで NAT を使用すると、SIP メッセージのヘッダーと SIP 本文に IP アドレスが含まれているため、より複雑になります。SIP サービスで NAT を使用する場合、SIP ヘッダーには発信者と受信者に関する情報が含まれており、デバイスはこの情報を変換して外部ネットワークから非表示にします。SIP 本文には、メディア送信用の IP アドレスとポート番号を含む SDP(セッション記述プロトコル)情報が含まれています。デバイスは、メディアを送受信するためのリソースを割り当てるためにSDP情報を変換します。
SIPメッセージのIPアドレスとポート番号の置換方法は、メッセージの方向によって異なります。送信メッセージの場合、クライアントのプライベートIPアドレスとポート番号は、ジュニパーネットワークスファイアウォールのパブリックIPアドレスとポート番号に置き換えられます。受信メッセージの場合、ファイアウォールのパブリックアドレスがクライアントのプライベートアドレスに置き換えられます。
INVITEメッセージがファイアウォールを越えて送信されると、SIPアプリケーション層ゲートウェイ(ALG)は、メッセージヘッダーからコールテーブルに情報を収集し、それを使用して後続のメッセージを正しいエンドポイントに転送します。ACKや200 OKなどの新しいメッセージが到着すると、ALGは「From:、To:、Call-ID:」フィールドをコールテーブルと比較して、メッセージのコールコンテキストを特定します。既存のコールと一致する新しいINVITEメッセージが届くと、ALGはそれをREINVITEとして処理します。
SDP情報を含むメッセージが到着すると、ALGはポートを割り当て、ポートとSDP内のポートの間にNATマッピングを作成します。SDPはRTP(Real-Time Transport Protocol)およびRTCP(Real-Time Control Protocol)チャネル用のシーケンシャルポートを必要とするため、ALGは連続した偶数奇数ポートを提供します。ポートのペアが見つからない場合は、SIPメッセージを破棄します。
IPv6は、NAT-PTモードおよびNAT64アドレス変換とともに、SIP ALGでサポートされています。
このトピックでは、次のセクションについて説明します。
- 発信コール
- 着信
- 転送された通話
- 通話の終了
- コール Re-INVITE メッセージ
- セッションタイマーの呼び出し
- 通話のキャンセル
- フォーク
- SIPメッセージ
- SIPヘッダー
- SIP本文
- SIP NAT のシナリオ
- SIP 応答のクラス
- SIP IPv6 ALGの純粋IPv6モード(NAT66)におけるNATモード
- NAT-PT
- NAT64
- STUNおよびSIP ALG
発信コール
内部ネットワークから外部ネットワークへのSIP要求メッセージでSIPコールが開始されると、NATはSDP内のIPアドレスとポート番号を置き換え、IPアドレスとポート番号をジュニパーネットワークスのファイアウォールにバインドします。Via、Contact、Route、およびRecord-Route SIPヘッダーフィールドも存在する場合、ファイアウォールIPアドレスにバインドされます。ALGは、再送信やSIP応答メッセージに使用するために、これらのマッピングを保存します。
次に、SIP ALGはファイアウォールにピンホールを開き、SDPおよびVia、Contact、Record-Routeヘッダーフィールドの情報に基づいてネゴシエートされた動的に割り当てられたポートでデバイスを通過できるようにします。ピンホールにより、着信パケットが連絡先、経由、記録ルートのIPアドレスとポートに到達することもできます。リターントラフィックを処理する際、ALGは元のContact、Via、Route、Record-Route SIPフィールドをパケットに挿入し直します。
着信
着信コールは、パブリックネットワークからデバイス上のパブリックスタティックNATアドレスまたはインターフェイスIPアドレスに対して開始されます。静的NATは、内部ホストを指す静的に設定されたIPアドレスです。インターフェイスIPアドレスは、内部ホストからSIPレジストラに送信されるREGISTERメッセージを監視する際に、ALGによって動的に記録されます。デバイスが着信SIPパケットを受信すると、セッションを設定し、パケットのペイロードをSIP ALGに転送します。
ALGはSIPリクエストメッセージ(最初はINVITE)を調べ、SDPの情報に基づいて、送信メディアのゲートを開きます。200 OK応答メッセージが到着すると、SIP ALGはIPアドレスとポートに対してNATを実行し、アウトバウンド方向にピンホールを開きます。(開いたゲートは存続時間が短く、200 OK応答メッセージがすぐに受信されないとタイムアウトします。
200 OK応答が到着すると、SIPプロキシはSDP情報を調べ、各メディアセッションのIPアドレスとポート番号を読み取ります。デバイス上のSIP ALGは、アドレスとポート番号に対してNATを実行し、アウトバウンドトラフィックのピンホールを開き、インバウンド方向のゲートのタイムアウトを更新します。
ACKが200 OKに到着すると、SIP ALGも通過します。メッセージにSDP情報が含まれている場合、SIP ALGはIPアドレスとポート番号が前回のINVITEから変更されていないことを確認します。変更されている場合、ALGは古いピンホールを削除し、メディアを通過させるために新しいピンホールを作成します。また、ALGは、Via、Contact、Record-Route SIPフィールドを監視し、これらのフィールドが変更されたと判断した場合は、新しいピンホールを開きます。
転送された通話
転送されたコールとは、例えば、ネットワーク外のユーザ A がネットワーク内のユーザ B にコールを呼び出し、ユーザ B がネットワーク外のユーザ C にコールを転送する場合です。SIP ALGは、ユーザーAからのINVITEを通常の着信コールとして処理します。しかし、ALGがネットワーク外のBからCへの転送されたコールを調べ、BとCが同じインターフェイスを使用して到達していることに気付いた場合、メディアがユーザーAとユーザーCの間で直接流れるため、ファイアウォールにピンホールが開かないことはありません。
通話の終了
BYE メッセージは通話を終了します。デバイスがBYEメッセージを受信すると、他のメッセージの場合と同様にヘッダーフィールドを変換します。しかし、BYE メッセージは受信側が 200 OK で確認する必要があるため、ALG はコールの破棄を 5 秒間遅らせて、200 OK の送信に時間を確保します。
コール Re-INVITE メッセージ
Re-INVITEメッセージは、通話に新しいメディアセッションを追加し、既存のメディアセッションを削除します。新しいメディア セッションが通話に追加されると、ファイアウォールに新しいピンホールが開き、新しいアドレス バインディングが作成されます。このプロセスは、元のコール設定と同じです。すべてのメディア セッションまたはメディア ピンホールがコールから削除されると、BYE メッセージを受信するとコールが削除されます。
セッションタイマーの呼び出し
予防措置として、SIP ALGはハードタイムアウト値を使用して、コールが存在できる最大時間を設定します。これにより、次のいずれかのイベントが発生した場合に、デバイスが保護されます。
-
通話中にエンド システムがクラッシュし、BYE メッセージが受信されない。
-
悪意のあるユーザーが SIP ALG を攻撃しようとして BYE を送信することはありません。
-
SIPプロキシの実装が不十分だと、Record-Routeの処理に失敗し、BYEメッセージが送信されません。
-
ネットワーク障害により、BYE メッセージを受信できません。
通話のキャンセル
どちらの当事者も、CANCELメッセージを送信して通話をキャンセルできます。CANCELメッセージを受信すると、SIP ALGはファイアウォールを通るピンホールを閉じ(開いている場合は)、アドレスバインディングを解除します。リソースを解放する前に、ALGは制御チャネルのエージアウトを約5秒間遅らせて、最後の200のOKが通過する時間を確保します。5 秒のタイムアウトが終了すると、487 または非 200 の応答が到着したかどうかに関係なく、通話は終了します。
フォーク
フォークにより、SIPプロキシは単一のINVITEメッセージを複数の宛先に同時に送信できます。1 つのコールに対して複数の 200 件の OK 応答メッセージが到着すると、SIP ALG は受信した最初の 200 件の OK メッセージでコール情報を解析しますが、更新します。
SIPメッセージ
SIP メッセージ形式は、SIP ヘッダー セクションと SIP 本文で構成されています。リクエストメッセージでは、ヘッダーセクションの最初の行はリクエスト行であり、これにはメソッドタイプ、request-URI、プロトコルバージョンが含まれます。応答メッセージでは、最初の行は状態コードを含む状態行です。SIPヘッダーには、シグナリングに使用されるIPアドレスとポート番号が含まれています。ヘッダー セクションから空白行で区切られた SIP 本文は、セッション記述情報用に予約されており、これはオプションです。Junos OSは現在、SDPのみをサポートしています。SIP 本文には、メディアの伝送に使用される IP アドレスとポート番号が含まれています。
SIPヘッダー
次のサンプルSIPリクエストメッセージでは、NATがヘッダーフィールドのIPアドレスを置き換えて、外部ネットワークから非表示にしています。
INVITE bob@10.150.20.5SIP/2.0 Via: SIP/2.0/UDP10.150.20.3:5434 From: alice@10.150.20.3To: bob@10.150.20.5Call-ID: a12abcde@10.150.20.3Contact: alice@10.150.20.3:5434 Route: <sip:netscreen@10.150.20.3:5060> Record-Route: <sip:netscreen@10.150.20.3:5060>
IPアドレス変換の実行方法は、メッセージのタイプと方向によって異なります。メッセージは次のいずれかです。
-
インバウンドリクエスト
-
アウトバウンド応答
-
アウトバウンドリクエスト
-
インバウンド応答
表1は 、これらの各ケースでNATがどのように実行されるかを示しています。いくつかのヘッダーフィールドについて、ALGが判断するのは、メッセージがネットワークの内部から来たか外部からかということだけではありません。また、どのクライアントが呼び出しを開始したか、メッセージが要求か応答かを判断する必要があります。
|
インバウンドリクエスト (パブリックからプライベートへ) |
変更後: |
ドメインをローカルアドレスに置き換える |
|
From: |
なし |
|
|
Call-ID: |
なし |
|
|
経由: |
なし |
|
|
Request-URI: |
ALGアドレスをローカルアドレスに置き換えます |
|
|
コンタクト: |
なし |
|
|
Record-Route: |
なし |
|
|
ルート: |
なし |
|
|
アウトバウンド応答 (プライベートからパブリックへ) |
変更後: |
ALGアドレスをローカルアドレスに置き換えます |
|
From: |
なし |
|
|
Call-ID: |
なし |
|
|
経由: |
なし |
|
|
Request-URI: |
該当なし |
|
|
コンタクト: |
ローカルアドレスをALGアドレスに置き換えます |
|
|
Record-Route: |
ローカルアドレスをALGアドレスに置き換えます |
|
|
ルート: |
なし |
|
|
アウトバウンドリクエスト (プライベートからパブリックへ) |
変更後: |
なし |
|
From: |
ローカルアドレスをALGアドレスに置き換えます |
|
|
Call-ID: |
なし |
|
|
経由: |
ローカルアドレスをALGアドレスに置き換えます |
|
|
Request-URI: |
なし |
|
|
コンタクト: |
ローカルアドレスをALGアドレスに置き換えます |
|
|
Record-Route: |
ローカルアドレスをALGアドレスに置き換えます |
|
|
ルート: |
ローカルアドレスをALGアドレスに置き換えます |
|
|
アウトバウンド応答 (パブリックからプライベートへ) |
変更後: |
なし |
|
From: |
ALGアドレスをローカルアドレスに置き換えます |
|
|
Call-ID: |
なし |
|
|
経由: |
ALGアドレスをローカルアドレスに置き換えます |
|
|
Request-URI: |
該当なし |
|
|
コンタクト: |
なし |
|
|
Record-Route: |
ALGアドレスをローカルアドレスに置き換えます |
|
|
ルート: |
ALGアドレスをローカルアドレスに置き換えます |
SIP本文
SIP本文のSDP情報には、ALGがメディアストリームのチャネルを作成するために使用するIPアドレスが含まれています。SDPセクションの変換では、リソース、つまりメディアを送受信するためのポート番号も割り当てられます。
次のサンプル SDP セクションからの抜粋は、リソース割り当て用に変換されたフィールドを示しています。
o=user 2344234 55234434 IN IP410.150.20.3c=IN IP410.150.20.3m=audio43249RTP/AVP 0
SIP メッセージには、複数のメディア ストリームを含めることができます。この概念は、電子メール メッセージに複数のファイルを添付するのと似ています。例えば、SIP クライアントから SIP サーバーに送信された INVITE メッセージには、以下のフィールドがある場合があります。
c=IN IP410.123.33.4m=audio33445RTP/AVP 0 c=IN IP410.123.33.4m=audio33447RTP/AVP 0 c=IN IP410.123.33.4m=audio33449RTP/AVP 0
Junos OSは、各方向にネゴシエートされた最大6個のSDPチャネルをサポートし、1つの通話で合計12個のチャネルをサポートします。詳細については、 SIP ALGを理解するを参照してください。
SIP NAT のシナリオ
図 2 と 図 3 は、SIP コール INVITE と 200 OK を示しています。 図2では、ph1はSIP INVITEメッセージをph2に送信しています。ヘッダーフィールドのIPアドレス(太字フォントで表示)がデバイスによってどのように変換されるかに注目してください。
INVITEメッセージのSDPセクションは、発信者がメディアを受信する場所を示しています。メディアピンホールには、RTCPとRTP用の52002と52003の2つのポート番号があることに注意してください。Via/Contact Pinholeは、SIPシグナリング用のポート番号5060を提供します。
図 3 の 200 OK 応答メッセージで、INVITE メッセージで実行された変換がどのように逆になっているかを確認します。このメッセージのIPアドレスは公開されているため変換されませんが、ゲートが開かれてメディアストリームがプライベートネットワークにアクセスできるようにします。
SIP 応答のクラス
SIP 応答は、SIP トランザクションに関する状況情報を提供し、応答コードと理由句を含みます。SIP 応答は、以下のクラスにグループ化されます。
-
情報(100〜199)—リクエストを受信し、リクエストの処理を続行します。
-
成功(200から299)—アクションが正常に受信、理解、受け入れられました。
-
リダイレクト(300から399)—リクエストを完了するために追加のアクションが必要です。
-
クライアントエラー(400〜499)—リクエストに不正な構文が含まれているか、このサーバーで実行できません。
-
サーバーエラー(500〜599)—サーバーは明らかに有効な要求を満たせませんでした。
-
グローバル障害(600〜699)—どのサーバーでもリクエストを実行できません。
表2は 、現在のSIP応答の完全なリストを示しています。
|
情報 |
100 試行中 |
180 リンギング |
181 通話が転送されています |
|
182 キュー |
183 セッションの進行状況 |
|
|
|
成功 |
200 OK |
202 受理済み |
|
|
リダイレクト |
300 複数の選択肢 |
301 恒久的に移動 |
302 一時移動しました |
|
305 プロキシを使用する |
380代替サービス |
|
|
|
クライアントエラー |
400 不正なリクエスト |
401 無許可 |
402 お支払いが必要 |
|
403 禁断 |
404 見つかりません |
405 方法は許可されていません |
|
|
406 容認できません |
407 プロキシ認証が必要 |
408 タイムアウトをリクエスト |
|
|
409 競合 |
410 なくなった |
411 必要な長さ |
|
|
413 リクエストエンティティが大きすぎます |
414 リクエストURLが大きすぎます |
415 サポートされていないメディアタイプ |
|
|
420 不正な拡張子 |
480 一時利用不可 |
481 コールレッグ/トランザクションが存在しません |
|
|
482ループが検出されました |
483 ホップが多すぎます |
484 アドレスが不完全です |
|
|
485 あいまいさ |
486 ここで忙しい |
487 リクエストがキャンセルされました |
|
|
488 ここでは許可されません |
|
|
|
|
サーバーエラー |
500サーバー内部エラー |
501 未実装 |
502 不正なゲートウェイ |
|
502 サービスが利用不可 |
504ゲートウェイのタイムアウト |
505 SIPバージョンはサポートされていません |
|
|
グローバル障害 |
600 どこでも忙しい |
603 衰退 |
604はどこにも存在しません |
|
606 許容できません |
|
|
SIP IPv6 ALGの純粋IPv6モード(NAT66)におけるNATモード
SIP IPv6 ALGは、NAT44と同様にNAT66をサポートします。NAT66(IPv6 NAT)は、NAT44(IPv4 NAT)と同様に、送信元NATと静的NAT機能を提供します。
NAT-PT
ネットワークアドレス変換プロトコル変換(NAT-PT)(RFC 2766)は、IPv4およびIPv6データグラムのプロトコルに依存しない変換を通じて、IPv6のみとIPv4のみのノード間の通信を可能にするプロトコル変換メカニズムであり、セッションの状態情報を必要としません。
NAT-PT は、IPv6 アドレスから IPv4 アドレスへの通常の NAT によって実装されます。SIP ALGは通常のNATでアドレスが処理されるのと同じように、ペイロードでこれらのアドレス変換を処理します。
NAT-PTは、IPv6ネットワーク内のアドレスをIPv4ネットワーク内のアドレスとバインドし、その逆も同様に、アドレスレルム間を通過するデータグラムのルーティングに透過的なルーティングを提供します。
NAT-PTの主な利点は、エンドデバイスとネットワークでIPv4アドレスまたはIPv6アドレスのいずれかを実行でき、トラフィックをどの側からでも開始できることです。
NAT64
NAT64は、IPv6ホストがIPv4サーバーと通信できるようにするメカニズムです。NAT64は、IPv6からIPv4へのアドレスマッピングを維持するために必要です。このようなアドレスマッピングは、システム管理者によって静的に設定される(ステートレス変換)、IPv6ネットワークからの最初のパケットが変換されるNAT64に達すると自動的に作成される(ステートフル)ことがよくあります。
NAT64は、永続的なNATを使用してデバイスに実装されます。最初のSIPリクエストメッセージ(最初のパケットはIPv6からのもののみ)がDUTを横断すると、アドレスバインディングが作成され、パケットを双方向に流すことができます。
NAT64メカニズムは、IPv6パケットをIPv4パケットに、またその逆に変換します。これにより、IPv6クライアントはユニキャストUDP、TCP、またはICMPを使用してIPv4サーバーに接続できます。NAT-PT と NAT64 の動作は似ているように見えますが、これらのメカニズムの実装方法が異なります。
永続的な NAT を備えた NAT64 が実装されている場合、IPv6 をサポートする SIP ALG は、NAT がレコードのアドレスに設定されている場合、永続的な NAT バインディングテーブルに NAT 変換を追加します。永続的なNATは設定されたアドレスと重複できないため、同じアドレスに設定されたNAT66とNAT64の共存はサポートされていません。
同じ送信元IPアドレスに対して1つのバインディングのみが作成されます。
STUNおよびSIP ALG
NAT(STUN)向けセッショントラバーサル公共は、NATとファイアウォールを介してVoIPを動作させるためのソリューションです。
以前は、STUN は SIP ALG なしで動作していました。つまり、永続的NATが設定された場合、SIP ALGは関与していませんでした。
STUNはSIP ALGと共存でき、永続的なNATが設定されている場合はSIP ALGが関与します。
SIPレジストラとNATを使用した着信SIP ALGコールサポートについて
セッション開始プロトコル(SIP)登録は、SIPプロキシとロケーションサーバーが、ユーザーに連絡を希望するロケーションを特定できるディスカバリー機能を提供します。ユーザーは、レジストラに REGISTER メッセージを送信して、1 つ以上の連絡先ロケーションを登録します。下の図に示すように、REGISTERメッセージのToフィールドとContactフィールドには、レコードのアドレスURI(Uniform Resource Identifier)と1つ以上の連絡先URIが含まれています。登録は、レコードのアドレスを連絡先アドレスまたはアドレスに関連付けるバインディングを位置情報サービスに作成します。
デバイスは、送信REGISTERメッセージを監視し、これらのアドレスに対してネットワークアドレス変換(NAT)を実行し、受信NATテーブルに情報を格納します。次に、ネットワークの外部からINVITEメッセージを受信すると、デバイスは受信NATテーブルを使用して、INVITEメッセージをルーティングする内部ホストを識別します。SIPプロキシ登録サービスを利用して、デバイスのエグレスインターフェイスでインターフェイスソースNATまたはNATプールを設定することで、着信コールを許可できます。小規模オフィスでの着信処理にはインターフェイス ソース NAT が適していますが、大規模なネットワークやエンタープライズ環境ではソース NAT プールを設定することをお勧めします。
インターフェイス ソース NAT または送信元 NAT プールを使用した着信コール NAT サポートは、SIP および H.323 サービスでのみサポートされます。着信コールについては、Junos OSは現在UDPとTCPのみをサポートしています。ドメイン名解決も現在サポートされていません。そのため、下の図に示すように、URIにはIPアドレスが含まれている必要があります。
の使用
例:SIP ALGコールの持続時間とタイムアウトの設定
この例では、通話時間とメディアの非アクティブタイムアウトを設定する方法を示しています。
要件
開始する前に、SIP 呼び出しアクティビティの制御に使用される呼び出し時間とタイムアウト機能を確認します。 SIP ALGコールの持続時間とタイムアウトについてを参照してください。
概要
通話時間と非アクティブメディアタイムアウト機能は、ネットワークリソースを節約し、スループットを最大化するのに役立ちます。
maximum-call-duration パラメーターは、コールがアクティブにできる最大許容時間を設定します。時間を超えると、SIP ALGはコールを破棄し、メディアセッションを解除します。デフォルト設定は720分で、範囲は3〜720分です。この設定により、通話が適切に終了できない場合にも帯域幅が解放されます。
inactive-media-timeoutパラメーターは、グループ内のメディア(RTPまたはRTPC)トラフィックなしで、コールがアクティブな状態を維持できる最大時間(秒)を示します。通話中にRTPまたはRTCPパケットが発生するたびに、このタイムアウトはリセットされます。非アクティブ期間がこの設定を超えると、ファイアウォール内のメディア用の SIP ALG の一時的な開口部(ピンホール)が閉じられます。デフォルト設定は120秒で、範囲は10秒から2550秒です。タイムアウト時に、メディアのリソース(セッションとピンホール)が削除されている間は、通話は終了しません。
この例では、通話時間が 36000 秒に設定され、メディアの非アクティブタイムアウトが 90 秒に設定されています。
設定
手順
GUIクイックコンフィグレーション
ステップバイステップの手順
SIP ALGコール期間とメディア非アクティブタイムアウトを設定するには:
-
設定 >セキュリティ >ALGを選択します。
-
SIPタブを選択します。
-
[最大通話時間] フィールドに「
600」と入力します。 -
非アクティブなメディアタイムアウトフィールドに、
90を入力します。 -
OKをクリックして設定を確認し、設定の候補として保存します。
-
デバイスの設定が完了したら、 コミットオプション >コミットをクリックします。
ステップバイステップの手順
SIP ALGコール期間とメディア非アクティブタイムアウトを設定するには:
-
SIP ALGコールの持続時間を設定します。
[edit] user@host# set security alg sip maximum-call-duration 600
-
SIP ALG非アクティブメディアタイムアウトを設定します。
[edit] user@host# set security alg sip inactive-media-timeout 90
-
デバイスの設定が完了したら、設定をコミットします。
[edit] user@host# commit
検証
設定が正常に機能していることを確認するには、 show security alg sip コマンドを入力します。
例:SIP ALG DoS攻撃保護の設定
この例では、DoS攻撃保護機能を設定する方法を示しています。
要件
開始する前に、SIPコールアクティビティの制御に使用されるDoS攻撃保護機能を確認してください。 SIP ALG DoS攻撃保護を理解するを参照してください。
概要
SIP プロキシー サーバーがコールを処理する機能は、SIP INVITE リクエスト(サーバーが最初に拒否したリクエスト)を繰り返すことによって影響を受ける可能性があります。DoS保護機能により、INVITEリクエストとプロキシサーバーの応答を監視するようにデバイスを設定できます。
この例では、デバイスは、すでにサービスを拒否されている繰り返しの INVITE 要求から、単一の SIP プロキシ サーバー(10.1.1.3)を保護するように設定されています。パケットは 5 秒間ドロップされ、その後、デバイスはそれらの送信元からの INVITE リクエストの転送を再開します。
設定
手順
GUIクイックコンフィグレーション
ステップバイステップの手順
SIP ALG DoS攻撃保護を設定するには:
-
設定>セキュリティ>ALGを選択します。
-
SIPタブを選択します。
-
攻撃防御を有効にする領域で、 選択したサーバー オプションをクリックします。
-
宛先IPボックスに
10.1.1.3を入力し、 追加をクリックします。 -
OKをクリックして設定を確認し、設定の候補として保存します。
-
デバイスの設定が完了したら、 コミットオプション>コミットをクリックします。
ステップバイステップの手順
SIP ALG DoS攻撃保護を設定するには:
-
単一のSIPプロキシサーバーを保護するようにデバイスを設定します。
[edit] user@host# set security alg sip application-screen protect deny destination-ip 10.1.1.3
注:IPv6は、NAT-PT(ネットワークアドレス変換プロトコル変換)モードおよびNAT64アドレス変換とともに、SIP ALGでサポートされています。
<destination-ip-address>のタイプがIPv4アドレスからIPプレフィックスに変更され、あらゆる種類のIPアドレスをサポートするようになり、それに応じてプレフィックスもサポートされ、複数のIPアドレスを許可するようにサポートされます。
-
拒否タイムアウト期間にデバイスを設定します。
[edit] user@host# set security alg sip application-screen protect deny timeout 5
-
デバイスの設定が完了したら、設定をコミットします。
[edit] user@host# commit
検証
設定が正常に機能していることを確認するには、 show security alg sip コマンドを入力します。
例:不明なSIP ALGメッセージタイプの許可
この例では、不明なメッセージタイプを許可する方法を示しています。
要件
開始する前に、未識別のSIPメッセージがデバイスによってどのように処理されるかを確認してください。 SIP ALGの不明なメッセージタイプを理解するを参照してください。
概要
この例では、NATモードとルートモードの両方で、SIPトラフィックで不明なメッセージタイプを許可するようにデバイスを設定します。デフォルトでは、不明な(サポートされていない)メッセージをドロップします。
設定
手順
GUIクイックコンフィグレーション
ステップバイステップの手順
不明なSIP ALGメッセージタイプを許可するには:
-
設定>セキュリティ>ALGを選択します。
-
SIPタブを選択します。
-
適用 されたNATの許可を有効にする チェックボックスを選択します。
-
[ Enable Permit routed ]チェックボックスを選択します。
-
OKをクリックして設定を確認し、設定の候補として保存します。
-
デバイスの設定が完了したら、 コミットオプション>コミットをクリックします。
ステップバイステップの手順
不明なSIP ALGメッセージタイプを許可するには:
-
SIPトラフィックで不明なメッセージタイプを許可するようにデバイスを設定します。
[edit] user@host# set security alg sip application-screen unknown-message permit-nat-applied permit-routed
-
デバイスの設定が完了したら、設定をコミットします。
[edit] user@host# commit
検証
設定が正常に機能していることを確認するには、 show security alg sip コマンドを入力します。
例:着信SIPコール用のインターフェイス送信元NATの設定
この例では、着信SIPコールにNATを使用できるように、パブリックゾーンインターフェイス上で送信元NATルールを設定する方法を示しています。
要件
開始する前に、NAT が SIP ALG でどのように動作するかを理解してください。 SIP、ALGおよびNATについてを参照してください。
概要
SIPプロキシサーバーが外部ゾーンにある2ゾーンのシナリオでは、パブリックまたは外部ゾーンのインターフェイスに送信元NATルールを設定することで、着信コールにNATを使用できます。
この例( 図5を参照)では、phone1はプライベートゾーンのge-0/0/0インターフェイス上にあり、phone2とプロキシサーバーはパブリックゾーンのge-0/0/2インターフェイス上にあります。送信元NATルールは、パブリックインターフェイスge-0/0/2.0上に設定します。
トポロジー
図 5 は、着信 SIP コールの送信元 NAT を示しています。
この例では、プライベートとパブリックと呼ばれるゾーンを作成し、インターフェイスに割り当てた後、送信元NATルールセットで使用するアドレス帳を設定します。次に、sip-phonesと呼ばれるルールセットと、送信元アドレス10.1.1.2/32からのパケットに一致するphone1と呼ばれるルールを定義して、ソースNATを設定します。
最後に、プライベート ゾーンとパブリック ゾーン間のすべての SIP トラフィックを許可するセキュリティ ポリシーを作成します。
設定
手順
CLIクイックコンフィグレーション
この例のセクションを迅速に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルでCLIにコピーアンドペーストして、設定モードから commit を入力します。
set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24 set security zones security-zone private address-book address phone1 10.1.1.2/32 set security zones security-zone private interfaces ge-0/0/0.0 set security zones security-zone public address-book address proxy 172.16.1.3/32 set security zones security-zone public address-book address phone2 172.16.1.2/32 set security zones security-zone public interfaces ge-0/0/2.0 set security nat source rule-set sip-phones from zone private set security nat source rule-set sip-phones to zone public set security nat source rule-set sip-phones rule phone1 match source-address 10.1.1.2/32 set security nat source rule-set sip-phones rule phone1 then source-nat interface set security policies from-zone private to-zone public policy outgoing match source-address phone1 set security policies from-zone private to-zone public policy outgoing match destination-address phone2 set security policies from-zone private to-zone public policy outgoing match destination-address proxy set security policies from-zone private to-zone public policy outgoing match application junos-sip set security policies from-zone private to-zone public policy outgoing then permit set security policies from-zone public to-zone private policy incoming match source-address phone2 set security policies from-zone public to-zone private policy incoming match destination-address phone1 set security policies from-zone public to-zone private policy incoming match source-address proxy set security policies from-zone public to-zone private policy incoming match application junos-sip set security policies from-zone public to-zone private policy incoming then permit
ステップバイステップの手順
次の例では、設定階層のさまざまなレベルに移動する必要があります。その方法の詳細については、『CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
パブリックゾーンインターフェイスで送信元NATルールを設定するには:
-
インターフェイスを設定します。
[edit] user@host# set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 user@host# set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24
-
ゾーンを設定し、インターフェイスに割り当てます。
[edit security zones] user@host# set security-zone private interfaces ge-0/0/0.0 user@host# set security-zone public interfaces ge-0/0/2.0
-
アドレス帳を設定し、アドレスを作成します。
[edit security zones] user@host# set security-zone private address-book address phone1 10.1.1.2/32 user@host# set security-zone public address-book address proxy 172.16.1.3/32 user@host# set security-zone public address-book address phone2 172.16.1.2/32
-
送信元NATルールセットを設定します。
[edit security nat source] user@host# set rule-set sip-phones from zone private user@host# set rule-set sip-phones to zone public user@host# set rule-set sip-phones rule phone1 match source-address 10.1.1.2/32 user@host# set rule-set sip-phones rule phone1 then source-nat interface
-
永続的な送信元 NAT 変換を有効にします。
[edit security nat source] user@host# set address-persistent -
発信 SIP トラフィックを許可するセキュリティ ポリシーを設定します。
[edit security policies from-zone private to-zone public policy outgoing] user@host# set match source-address phone1 user@host# set match destination-address phone2 user@host# set match destination-address proxy user@host# set match application junos-sip user@host# set then permit
-
受信SIPトラフィックを許可するセキュリティポリシーを設定します。
[edit security policies from-zone public to-zone private policy incoming] user@host# set match source-address phone2 user@host# set match destination-address phone1 user@host# set match source-address proxy user@host# set match application junos-sip user@host# set then permit
結果
設定モードから、 show interfaces、 show security zones、 show security policies、 show security nat コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の設定手順を繰り返して修正します。
[edit]
user@host# show interfaces
ge-0/0/0 {
unit 0 {
family inet {
address 10.1.1.1/24;
}
}
}
ge-0/0/2 {
unit 0 {
family inet {
address 172.16.1.1/24;
}
}
}
[edit]
user@host# show security zones
security-zone private {
address-book {
address phone1 10.1.1.2/32;
}
interfaces {
ge-0/0/0.0;
}
}
security-zone public {
address-book {
address proxy 172.16.1.3/32;
address phone2 172.16.1.2/32;
}
interfaces {
ge-0/0/2.0;
}
}
[edit]
user@host# show security nat
source {
rule-set sip-phones {
from zone private;
to zone public;
rule phone1 {
match {
source-address 10.1.1.2/32;
}
then {
source-nat {
interface;
}
}
}
}
}
[edit]
user@host# show security policies
from-zone private to-zone public {
policy outgoing {
match {
source-address phone1;
destination-address [ phone2 proxy ];
application junos-sip;
}
then {
permit;
}
}
}
from-zone public to-zone private {
policy incoming {
match {
source-address [ phone2 proxy ];
destination-address phone1 ;
application junos-sip;
}
then {
permit;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
設定が正常に機能していることを確認するには、以下のタスクを実行します。
送信元NATルールの使用状況の確認
目的
送信元NATルールに一致するトラフィックがあることを確認します。
アクション
動作モードから、 show security nat source rule all コマンドを入力します。変換ヒットフィールドを表示して、ルールに一致するトラフィックを確認します。
user@host> show security nat source rule all
source NAT rule: phone1 Rule-set: sip-phones
Rule-Id : 1
Rule position : 1
From zone : private
To zone : public
Match
Source addresses : 0.0.0.0 - 255.255.255.255
Destination port : 0 - 0
Action : interface
Persistent NAT type : N/A
Persistent NAT mapping type : address-port-mapping
Inactivity timeout : 0
Max session number : 0
Translation hits : 0
Successful sessions : 0
Failed sessions : 0
Number of sessions : 0
意味
Translation hitsフィールドは、送信元NATルールに一致するトラフィックがないことを示しています。
SIP ALGステータスの確認
目的
システムで SIP ALG が有効になっていることを確認します。
アクション
動作モードから、 show security alg status コマンドを入力します。
user@host> show security alg status ALG Status : DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Enabled SQL : Enabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled
意味
出力は、SIP ALGステータスを以下のように示しています。
-
有効—SIP ALGが有効であることを示します。
-
無効—SIP ALGが無効であることを示します。
例:着信SIPコール用の送信元NATプールの設定によるネットワークの複雑さの軽減
この例では、着信SIPコールに対してNATを有効にするように外部インターフェイスで送信元NATプールを設定することで、ネットワークの複雑さを軽減NATする方法を示しています。
要件
開始する前に、NAT が SIP ALG でどのように動作するかを理解してください。 SIP、ALGおよびNATについてを参照してください。
概要
SIP プロキシ サーバーが外部またはパブリック ゾーンにある 2 ゾーンのシナリオでは、パブリック ゾーンへのインターフェイスに NAT プールを設定することで、着信コールに NAT を使用できます。
この例( 図 6 を参照)では、phone1 はプライベートゾーンにあり、phone2 とプロキシサーバーはパブリックゾーンにあります。NATを行うには、ソースNATプールを設定します。また、プライベートゾーンからパブリックゾーンへのSIPトラフィックを許可するポリシーも作成します。これにより、プライベートゾーンのphone1がパブリックゾーンのプロキシサーバーに登録できるようになり、パブリックゾーンからプライベートゾーンへの着信も有効になります。
トポロジー
図6 は、着信コール用の送信元NATプールを示しています。
この例では、送信元 NAT を次のように設定します。
-
172.16.1.20/32から172.16.1.40/32までのIPアドレス範囲を含むsip-nat-poolと呼ばれる送信元NATプールを定義します。
-
sip-r1 のルールを使用して sip-nat と呼ばれるソース NAT ルール セットを作成し、送信元 IP アドレスが 10.1.1.3/24 のプライベート ゾーンからパブリック ゾーンへのパケットを照合します。パケットを照合する場合、送信元アドレスはsip-nat-pool内のIPアドレスの1つに変換されます。
-
インターフェイスge-0/0/2.0のアドレス172.16.1.20/32〜172.16.1.40/32のプロキシARPを設定します。これにより、システムはこれらのアドレスに対してインターフェイスで受信したARP要求に応答できます。
設定
手順
CLIクイックコンフィグレーション
この例のセクションを迅速に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルでCLIにコピーアンドペーストして、設定モードから commit を入力します。
set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24 set security zones security-zone private address-book address phone1 10.1.1.3/32 set security zones security-zone private interfaces ge-0/0/0.0 set security zones security-zone public address-book address proxy 172.16.1.3/32 set security zones security-zone public address-book address phone2 172.16.1.4/32 set security zones security-zone public interfaces ge-0/0/2.0 set security nat source pool sip-nat-pool address 172.16.1.20/32 to 172.16.1.40/32 set security nat source address-persistent set security nat source rule-set sip-nat from zone private set security nat source rule-set sip-nat to zone public set security nat source rule-set sip-nat rule sip-r1 match source-address 10.1.1.3/24 set security nat source rule-set sip-nat rule sip-r1 then source-nat pool sip-nat-pool set security nat proxy-arp interface ge-0/0/2.0 address 172.16.1.20/32 to 172.16.1.40/32 set security policies from-zone private to-zone public policy outgoing match source-address phone1 set security policies from-zone private to-zone public policy outgoing match destination-address any set security policies from-zone private to-zone public policy outgoing match application junos-sip set security policies from-zone private to-zone public policy outgoing then permit set security policies from-zone public to-zone private policy incoming match source-address phone2 set security policies from-zone public to-zone private policy incoming match destination-address phone1 set security policies from-zone public to-zone private policy incoming match application junos-sip set security policies from-zone public to-zone private policy incoming then permit
ステップバイステップの手順
次の例では、設定階層のさまざまなレベルに移動する必要があります。その方法の詳細については、『CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
着信コール用の送信元 NAT プールを設定するには:
-
インターフェイスを設定します。
[edit] user@host# set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 user@host# set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24
-
ゾーンを設定し、ゾーンにインターフェイスを割り当てます。
[edit security zones] user@host# set security-zone private interfaces ge-0/0/0.0 user@host# set security-zone public interfaces ge-0/0/2.0
-
アドレス帳を設定します。
[edit security zones] user@host# set security-zone private address-book address phone1 10.1.1.3/32 user@host# set security-zone public address-book address proxy 172.16.1.3/32 user@host# set security-zone public address-book address phone2 172.16.1.4/32
-
送信元 NAT プールを設定します。
[edit security nat] user@host# set source pool sip-nat-pool address 172.16.1.20/32 to 172.16.1.40/32
-
ルールを使用して送信元NATルールセットを設定します。
[edit security nat source rule-set sip-nat] user@host# set from zone private user@host# set to zone public user@host# set rule sip-r1 match source-address 10.1.1.3/24 user@host# set rule sip-r1 then source-nat pool sip-nat-pool
-
永続的な NAT を有効にします。
[edit security nat] user@host# set source address-persistent
-
プロキシARPを設定します。
[edit security nat] user@host# set proxy-arp interface ge-0/0/2.0 address 172.16.1.20/32 to 172.16.1.40/32
-
発信 SIP トラフィックを許可するセキュリティ ポリシーを設定します。
[edit security policies from-zone private to-zone public policy outgoing] set match source-address phone1 set match destination-address any set match application junos-sip set then permit
-
受信SIPトラフィックを許可するセキュリティポリシーを設定します。
[edit security policies from-zone public to-zone private policy incoming] set match source-address phone2 set match destination-address phone1 set match application junos-sip set then permit
結果
設定モードから、 show interfaces、 show security zones、 show security nat、および show security policies コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の設定手順を繰り返して修正します。
[edit]
user@host# show interfaces
ge-0/0/0 {
unit 0 {
family inet {
address 10.1.1.1/24;
}
}
}
ge-0/0/2 {
unit 0 {
family inet {
address 172.16.1.1/24;
}
}
}
[edit]
user@host# show security zones
security-zone private {
address-book {
address phone1 10.1.1.3/32;
}
interfaces {
ge-0/0/0.0;
}
}
security-zone public {
address-book {
address proxy 172.16.1.3/32;
address phone2 172.16.1.4/32;
}
interfaces {
ge-0/0/2.0;
}
}
user@host# show security nat
source {
pool sip-nat-pool {
address {
172.16.1.20/32 to 172.16.1.40/32;
}
}
address-persistent;
rule-set sip-nat {
from zone private;
to zone public;
rule sip-r1 {
match {
source-address 10.1.1.3/24;
}
then {
source-nat {
pool {
sip-nat-pool;
}
}
}
}
}
}
proxy-arp {
interface ge-0/0/2.0 {
address {
172.16.1.20/32 to 172.16.1.40/32;
}
}
}
[edit]
user@host# show security policies
from-zone private to-zone public {
policy outgoing {
match {
source-address phone1;
destination-address any;
application junos-sip;
}
then {
permit;
}
}
}
from-zone public to-zone private {
policy incoming {
match {
source-address phone2;
destination-address phone1;
application junos-sip;
}
then {
permit;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
設定が正常に機能していることを確認するには、以下のタスクを実行します。
送信元 NAT プールの使用状況の検証
目的
送信元NATプールからのIPアドレスを使用するトラフィックがあることを確認します。
アクション
動作モードから、 show security nat source pool all コマンドを入力します。
user@host> show security nat source pool all
Total pools: 1
Pool name : sip-nat-pool
Pool id : 4
Routing instance : default
Host address base : 0.0.0.0
Port : [1024, 63487]
port overloading : 1
Total addresses : 21
Translation hits : 0
Address range Single Ports Twin Ports
172.16.1.20 - 172.16.1.40 0 0
意味
Translation hitsフィールドは、送信元NATプールのIPアドレスによって使用されるトラフィックがないことを示しています。
送信元NATルールの使用状況の確認
目的
送信元NATルールに一致するトラフィックがあることを確認します。
アクション
動作モードから、 show security nat source rule all コマンドを入力します。
user@host> show security nat source rule all
source NAT rule: sip-r1 Rule-set: sip-nat
Rule-Id : 1
Rule position : 1
From zone : private
To zone : public
Match
Source addresses : 0.0.0.0 - 255.255.255.255
Destination port : 0 - 0
Action : interface
Persistent NAT type : N/A
Persistent NAT mapping type : address-port-mapping
Inactivity timeout : 0
Max session number : 0
Translation hits : 0
Successful sessions : 0
Failed sessions : 0
Number of sessions : 0
意味
Translation hitsフィールドは、送信元NATルールに一致するトラフィックがないことを示しています。
SIP ALGステータスの確認
目的
システムで SIP ALG が有効になっていることを確認します。
アクション
動作モードから、 show security alg status コマンドを入力します。
user@host> show security alg status
ALG Status : DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Enabled SQL : Enabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled
意味
出力は、SIP ALGステータスを以下のように示しています。
-
•有効 - SIP ALGが有効であることを示します。
-
•無効 - SIP ALGが無効であることを示します。
SIP ALGのセキュリティポリシーの検証
目的
パブリックゾーンとプライベートゾーン間の送信元NATが設定されていることを確認します。
アクション
動作モードから、 show security policies コマンドを入力します。
user@host> show security policies
from-zone private to-zone public {
policy outgoing {
match {
source-address phone1;
destination-address any;
application junos-sip;
}
then {
permit;
}
}
from-zone public to-zone private {
policy incoming {
match {
source-address phone2;
destination-address phone1;
application junos-sip;
}
then {
permit;
}
}
意味
サンプル出力は、パブリックゾーンとプライベートゾーン間の送信元NATが設定されていることを示しています。
例:着信SIPコール用の静的NATの設定
この例では、プライベートゾーンの発信者がパブリックゾーンのプロキシサーバーに登録できるようにする静的NATマッピングを設定する方法を示しています。
要件
開始する前に、NAT が SIP ALG でどのように動作するかを理解してください。 SIP、ALGおよびNATについてを参照してください。
概要
SIPプロキシサーバーが外部またはパブリックゾーンにある場合、パブリックインターフェイスで静的NATを設定して、プライベートゾーンの発信者がプロキシサーバーに登録できるようにすることができます。
この例( 図7を参照)では、phone1はプライベートゾーンのge-0/0/0インターフェイス上にあり、phone2とプロキシサーバーはパブリックゾーンのge-0/0/2インターフェイス上にあります。phone1と呼ばれるルールを持つincoming-sipと呼ばれる静的NATルールセットを作成し、パブリックゾーンからのパケットを宛先アドレス172.16.1.3/32と照合します。一致するパケットの場合、宛先IPアドレスはプライベートアドレス10.1.1.3/32に変換されます。また、インターフェイスge-0/0/2.0のアドレス172.16.1.3/32用プロキシARPを作成します。これにより、システムはこれらのアドレスに対してインターフェイスで受信したARP要求に応答できます。最後に、パブリックゾーンからプライベートゾーンへのSIPトラフィックを許可する受信というセキュリティポリシーを作成します。
着信SIPコールに静的NATを設定する場合は、プライベートゾーンのプライベートアドレスごとに1つのパブリックアドレスを設定してください。
設定
手順
CLIクイックコンフィグレーション
この例のセクションを迅速に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルでCLIにコピーアンドペーストして、設定モードから commit を入力します。
set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24 set security zones security-zone private interfaces ge-0/0/0.0 set security zones security-zone private address-book address phone1 10.1.1.5/32 set security zones security-zone public interfaces ge-0/0/2.0 set security zones security-zone public address-book address proxy 172.16.1.3/32 set security zones security-zone public address-book address phone2 172.16.1.4/32 set security nat static rule-set incoming-sip from zone public set security nat static rule-set incoming-sip rule phone1 match destination-address 172.16.1.3/32 set security nat static rule-set incoming-sip rule phone1 then static-nat prefix 10.1.1.3/32 set security nat proxy-arp interface ge-0/0/2.0 address 172.16.1.3/32 set security policies from-zone public to-zone private policy incoming match source-address phone2 set security policies from-zone public to-zone private policy incoming match source-address proxy set security policies from-zone public to-zone private policy incoming match destination-address phone1 set security policies from-zone public to-zone private policy incoming match application junos-sip set security policies from-zone public to-zone private policy incoming then permit set security policies from-zone private to-zone public policy outgoing match source-address phone1 set security policies from-zone private to-zone public policy outgoing match destination-address phone2 set security policies from-zone private to-zone public policy outgoing match destination-address proxy set security policies from-zone private to-zone public policy outgoing match application junos-sip set security policies from-zone private to-zone public policy outgoing then permit
ステップバイステップの手順
次の例では、設定階層のさまざまなレベルに移動する必要があります。その方法の詳細については、『CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
着信コールに静的 NAT を設定するには:
-
インターフェイスを設定します。
[edit] user@host# set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 user@host# set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24
-
セキュリティゾーンを作成します。
[edit security zones] user@host# set security-zone private interfaces ge-0/0/0.0 user@host# set security-zone public interfaces ge-0/0/2.0
-
セキュリティゾーンにアドレスを割り当てます。
[edit security zones] user@host# set security-zone private address-book address phone1 10.1.1.5/32 user@host# set security-zone public address-book address proxy 172.16.1.3/32 user@host# set security-zone public address-book address phone2 172.16.1.4/32
-
ルールを使用して静的NATルールセットを作成します。
[edit security nat static rule-set incoming-sip] user@host# set from zone public user@host# set rule phone1 match destination-address 172.16.1.3/32 user@host# set rule phone1 then static-nat prefix 10.1.1.3/32
-
プロキシARPを設定します。
[edit security nat] user@host# set proxy-arp interface ge-0/0/2.0 address 172.16.1.3/32
-
受信SIPトラフィックを許可するセキュリティポリシーを定義します。
[edit security policies from-zone public to-zone private policy incoming] user@host# set match source-address phone2 user@host# set match source-address proxy user@host# set match destination-address phone1 user@host# set match application junos-sip user@host# set then permit
-
SIPの発信トラフィックを許可するセキュリティポリシーを定義します。
[edit security policies from-zone private to-zone public policy outgoing] user@host# set match source-address phone1 user@host# set match destination-address phone2 user@host# set match destination-address proxy user@host# set match application junos-sip user@host# set then permit
結果
設定モードから、 show interfaces、 show security zones、 show security nat、 show security policies コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の設定手順を繰り返して修正します。
[edit]
user@host# show interfaces
ge-0/0/0 {
unit 0 {
family inet {
address 10.1.1.1/24;
}
}
}
ge-0/0/2 {
unit 0 {
family inet {
address 172.16.1.1/24;
}
}
}
[edit]
user@host# show security zones
security-zone private {
address-book {
address phone1 10.1.1.5/32;
}
interfaces {
ge-0/0/0.0;
}
}
security-zone public {
address-book {
address proxy 172.16.1.3/32;
address phone2 172.16.1.4/32;
}
interfaces {
ge-0/0/2.0;
}
}
[edit]
user@host# show security nat
static {
rule-set incoming-sip {
from zone public;
rule phone1 {
match {
destination-address 172.16.1.3/32;
}
then {
static-nat prefix 10.1.1.3/32;
}
}
}
}
proxy-arp {
interface ge-0/0/2.0 {
address {
172.16.1.3/32;
}
}
}
[edit]
user@host# show security policies
from-zone public to-zone private {
policy incoming {
match {
source-address phone2;
destination-address phone1;
application junos-sip;
}
then {
permit;
}
}
}
from-zone private to-zone public {
policy outgoing {
match {
source-address phone1;
destination-address [phone2 proxy];
application junos-sip;
}
then {
permit;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
設定が正常に機能していることを確認するには、以下のタスクを実行します。
静的 NAT 設定の検証
目的
静的NATルールセットに一致するトラフィックがあることを確認します。
アクション
動作モードから、 show security nat static rule all コマンドを入力します。
user@host> show security nat static rule all
Static NAT rule: phone1 Rule-set: incoming-sip Rule-Id : 1 Rule position : 1 From zone : public Destination addresses : 172.16.1.3 Host addresses : 172.16.1.4 Netmask : 24 Host routing-instance : N/A Translation hits : 4 Successful sessions : 4 Failed sessions : 0 Number of sessions : 4
意味
Translation hitsフィールドには、静的NATルールセットに一致するトラフィックがあることが表示されます。
SIP ALGステータスの確認
目的
システムで SIP ALG が有効になっていることを確認します。
アクション
動作モードから、 show security alg status コマンドを入力します。
user@host> show security alg status
ALG Status : DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Enabled SQL : Enabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled
意味
出力は、SIP ALGステータスを以下のように示しています。
-
•有効 - SIP ALGが有効であることを示します。
-
•無効 - SIP ALGが無効であることを示します。
SIP ALGのセキュリティポリシーの検証
目的
パブリックゾーンとプライベートゾーンの間に静的NATが設定されていることを確認します。
アクション
動作モードから、 show security policies コマンドを入力します。
user@host> show security policies
from-zone public to-zone private {
policy incoming {
match {
source-address [ phone2 proxy ];
destination-address phone1;
application junos-sip;
}
then {
permit;
}
}
}
from-zone private to-zone public {
policy outgoing {
match {
source-address phone1;
destination-address [ phone2 proxy ];
application junos-sip;
}
then {
permit;
}
}
}
意味
サンプル出力は、パブリックゾーンとプライベートゾーンの間に静的NATが設定されていることを示しています。
例:プライベートゾーンでのSIPプロキシとパブリックゾーンでのNATの設定
この例では、プライベートゾーンにSIPプロキシサーバーを設定し、パブリックゾーンに静的NATを設定して、パブリックゾーンの発信者がプロキシサーバーに登録できるようにする方法を示しています。
要件
開始する前に、NAT が SIP ALG でどのように動作するかを理解してください。 SIP、ALGおよびNATについてを参照してください。
概要
プライベートゾーンの SIP プロキシサーバーを使用すると、外部またはパブリックインターフェイスに静的 NAT を設定し、パブリックゾーンの発信者がプロキシサーバーに登録できるようにすることができます。
この例( 図8を参照)では、phone1とSIPプロキシサーバーはプライベートゾーンのge-0/0/0インターフェイス上にあり、phone2はパブリックゾーンのge-0/0/2インターフェイス上にあります。phone2 がプロキシ サーバーに登録できるようにプロキシ サーバーの静的 NAT ルールを設定し、パブリック ゾーンからプライベート ゾーンへの SIP トラフィックを許可する発信というポリシーを作成して、パブリック ゾーンの発信者がプロキシ サーバーに登録できるようにします。また、プライベートゾーンからパブリックゾーンへの受信というポリシーを設定して、phone1がコールアウトできるようにします。
トポロジー
図8 は、プライベートゾーンでのSIPプロキシとパブリックゾーンでのNATの設定を示しています。
この例では、NAT を次のように設定します。
-
ge-0/0/2インターフェイスでプロキシサーバーへの静的NATを設定し、incoming-sipというルールセットとproxyというルールを使用して、パブリックゾーンからのパケットを宛先アドレス172.16.1.2/32と照合します。一致するパケットの場合、宛先IPアドレスはプライベートアドレス10.1.1.5/32に変換されます。
-
電話 1 から電話 2 への通信に対してインターフェイス NAT を有効にするには、電話 1 というルールで sip-phones という 2 番目のルール セットを設定します。
設定
手順
CLIクイックコンフィグレーション
この例のセクションを迅速に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルでCLIにコピーアンドペーストして、設定モードから commit を入力します。
set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24 set interfaces ge-0/0/2 unit 0 proxy-arp set security zones security-zone private address-book address phone1 10.1.1.3/32 set security zones security-zone private address-book address proxy 10.1.1.5/32 set security zones security-zone private interfaces ge-0/0/0.0 set security zones security-zone public address-book address phone2 172.16.1.4/32 set security zones security-zone public interfaces ge-0/0/2.0 set security nat source rule-set sip-phones from zone private set security nat source rule-set sip-phones to zone public set security nat source rule-set sip-phones rule phone1 match source-address 10.1.1.3/32 set security nat source rule-set sip-phones rule phone1 then source-nat interface set security nat static rule-set incoming-sip from zone public set security nat static rule-set incoming-sip rule proxy match destination-address 172.16.1.2/32 set security nat static rule-set incoming-sip rule proxy then static-nat prefix 10.1.1.5/32 set security nat proxy-arp interface ge-0/0/2.0 address 172.16.1.2/32 set security policies from-zone private to-zone public policy outgoing match source-address any set security policies from-zone private to-zone public policy outgoing match destination-address phone2 set security policies from-zone private to-zone public policy outgoing match application junos-sip set security policies from-zone private to-zone public policy outgoing then permit set security policies from-zone public to-zone private policy incoming match source-address phone2 set security policies from-zone public to-zone private policy incoming match destination-address proxy set security policies from-zone public to-zone private policy incoming match application junos-sip set security policies from-zone public to-zone private policy incoming then permit
ステップバイステップの手順
次の例では、設定階層のさまざまなレベルに移動する必要があります。その方法の詳細については、『CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
着信コールに静的 NAT を設定するには:
-
インターフェイスを設定します。
[edit] user@host# set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 user@host# set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24 user@host# set interfaces ge-0/0/2 unit 0 proxy-arp
-
セキュリティゾーンを設定します。
[edit security zones] user@host# set security-zone private interfaces ge-0/0/0.0 user@host# set security-zone public interfaces ge-0/0/2.0
-
セキュリティゾーンにアドレスを割り当てます。
[edit security zones] user@host# set security-zone private address-book address phone1 10.1.1.3/32 user@host# set security-zone private address-book address proxy 10.1.1.5/32 user@host# set security-zone public address-book address phone2 172.16.1.4/32
-
静的 NAT のルールセットを作成し、それにルールを割り当てます。
[edit security nat static rule-set incoming-sip] user@host# set from zone public user@host# set rule proxy match destination-address 172.16.1.2/32 user@host# set rule proxy then static-nat prefix 10.1.1.5/32
-
172.16.1.2/32アドレスのproxy-arpを設定します。
[edit security nat] user@host# proxy-arp interface ge-0/0/2.0 address 172.16.1.2/32
-
2つ目のルールセットを設定し、それにルールを割り当てます。
[edit security nat source rule-set sip-phones] user@host# set from zone private user@host# set to zone public user@host# set rule phone1 match source-address 10.1.1.3/32 user@host# set rule phone1 then source-nat interface
-
発信トラフィックのセキュリティポリシーを設定します。
[edit security policies from-zone private to-zone public policy outgoing] user@host# set match source-address any user@host# set match destination-address phone2 user@host# set match application junos-sip user@host# set then permit
-
受信トラフィックのセキュリティポリシーを設定します。
[edit security policies from-zone public to-zone private policy incoming] user@host# set match source-address phone2 user@host# set match destination-address proxy user@host# set match application junos-sip user@host# set then permit
結果
設定モードから、 show interfaces、 show security zones、 show security nat、 show security policies コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の設定手順を繰り返して修正します。
[edit]
user@host# show interfaces
ge-0/0/0 {
unit 0 {
family inet {
address 10.1.1.1/24;
}
}
}
ge-0/0/2 {
unit 0 {
proxy-arp;
family inet {
address 172.16.1.1/24;
}
}
}
[edit]
user@host# show security zones
security-zone private {
address-book {
address phone1 10.1.1.3/32;
address proxy 10.1.1.5/32;
}
interfaces {
ge-0/0/0.0;
}
}
security-zone public {
address-book {
address phone2 172.16.1.4/32;
}
interfaces {
ge-0/0/2.0;
}
}
[edit]
user@host# show security nat
source {
rule-set sip-phones {
from zone private;
to zone public;
rule phone1 {
match {
source-address 10.1.1.3/32;
}
then {
source-nat {
interface;
}
}
}
}
}
static {
rule-set incoming-sip {
from zone public;
rule proxy {
match {
destination-address 172.16.1.2/32;
}
then {
static-nat prefix 10.1.1.5/32;
}
}
}
proxy-arp {
interface ge-0/0/2.0 {
address {
172.16.1.2/32;
}
}
}
}
[edit]
user@host# show security policies
from-zone private to-zone public {
policy outgoing {
match {
source-address any;
destination-address phone2;
application junos-sip;
}
then {
permit;
}
}
}
from-zone public to-zone private {
policy incoming {
match {
source-address phone2;
destination-address proxy;
application junos-sip;
}
then {
permit;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
設定が正常に機能していることを確認するには、以下のタスクを実行します。
静的 NAT 設定の検証
目的
静的NATルールセットに一致するトラフィックがあることを確認します。
アクション
動作モードから、 show security nat static rule all コマンドを入力します。変換ヒットフィールドを表示して、ルールに一致するトラフィックを確認します。
user@host> show security nat static rule all
Total static-nat rules: 1
Total referenced IPv4/IPv6 ip-prefixes: 2/0
Static NAT rule: proxy Rule-set: incoming-sip
Rule-Id : 2
Rule position : 1
From zone : public
Destination addresses : 172.16.1.2
Host addresses : 10.1.1.5
Netmask : 32
Host routing-instance : N/A
Translation hits : 23
Successful sessions : 23
Failed sessions : 0
Number of sessions : 0
意味
Translation hitsフィールドは、静的NATルールに一致するトラフィックが23件あることを示しています。
SIP ALGステータスの確認
目的
システムで SIP ALG が有効になっていることを確認します。
アクション
動作モードから、 show security alg status コマンドを入力します。
user@host> show security alg status ALG Status : DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Enabled SQL : Enabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled
意味
出力は、SIP ALGステータスを以下のように示しています。
-
有効—SIP ALGが有効であることを示します。
-
無効—SIP ALGが無効であることを示します。
送信元NATルールの検証
目的
送信元 NAT ルールの設定を確認します。
アクション
動作モードから、 show security nat source rule all コマンドを入力します。
user@host> show security nat source rule all
Total referenced IPv4/IPv6 ip-prefixes: 1/0
source NAT rule: phone1 Rule-set: sip-phones
Rule-Id : 1
Rule position : 1
From zone : private
To zone : public
Match
Source addresses : 10.1.1.3 - 10.1.1.3
Action : interface
Persistent NAT type : N/A
Persistent NAT mapping type : address-port-mapping
Inactivity timeout : 0
Max session number : 0
Translation hits : 88
Successful sessions : 88
Failed sessions : 0
Number of sessions : 0
意味
Translation hitsフィールドは、送信元NATルールに一致するトラフィックが88件あることを示しています。
セキュリティフローセッションの検証
目的
NAT変換phone1からphone2にていることを確認します。
アクション
動作モードから、 run show security flow session コマンドを入力します。
user@host> run show security flow session Session ID: 169, Policy name: allow-all/4, Timeout: 2, Valid In: 10.1.1.3/4 --> 172.16.1.4/52517;icmp, Conn Tag: 0x0, If: ge-0/0/0.0, Pkts: 1, Bytes: 84, Out: 172.16.1.4/52517 --> 172.16.1.1/25821;icmp, Conn Tag: 0x0, If: ge-0/0/1.0, Pkts: 1, Bytes: 84,
意味
出力は、phone1 から phone2 への NAT 変換を表示します。
例:3ゾーンSIP ALGおよびNATシナリオの設定
この例では、プライベートゾーンにSIPプロキシサーバーを設定し、パブリックゾーンに静的NATを設定して、パブリックゾーンの発信者がプロキシサーバーに登録できるようにする方法を示しています。
要件
開始する前に、NAT が SIP ALG でどのように動作するかを理解してください。 SIP、ALGおよびNATについてを参照してください。
概要
3 ゾーン SIP 構成では、SIP プロキシー・サーバーは通常、呼び出し側システムや着信側システムとは異なるゾーンにあります。このようなシナリオでは、アドレスとゾーンの追加設定、およびすべてのシステムが互いにプロキシサーバーにアクセスできるようにするためのポリシーが必要になります。
この例では、phone1はプライベートゾーンのge-0/0/0.0インターフェイス上にあり、phone2はパブリックゾーンのge-0/0/2.0インターフェイス上にあり、プロキシサーバーはDMZのge-0/0/1.0インターフェイス上にあります。プライベートゾーンでphone1の静的NATルールを設定します。次に、プライベートゾーンからDMZへ、およびDMZからプライベートゾーンへ、パブリックゾーンからDMZへ、およびDMZからパブリックゾーンへ、およびプライベートゾーンからパブリックゾーンへを通過するトラフィックのポリシーを作成します。 図9 の矢印は、パブリックゾーンのphone2がプライベートゾーンのphone1にコールを発信したときのSIPシグナリングトラフィックのフローを示しています。セッションが開始されると、データは電話 1 と電話 2 の間で直接流れます。
におけるプロキシを使用した3ゾーンSIP設定
この例では、NAT を次のように設定します。
-
incoming-sipと呼ばれる静的NATルールセットをルールphone1で設定し、パブリックゾーンからのパケットを宛先アドレス10.1.2.3/32と一致させます。一致するパケットの場合、宛先IPアドレスはプライベートアドレス10.1.1.3/32に変換されます。
-
インターフェイスge-0/0/1.0のアドレス10.1.2.3/32にプロキシARPを設定し、システムがこのアドレスのインターフェイスで受信したARPリクエストに応答できるようにします。
-
ルール r1 を使用して sip-phones と呼ばれる 2 つ目のルール セットを設定し、phone1 からプロキシ サーバーへの通信、および phone1 から phone2 への通信に対してインターフェイス NAT を有効にします。
設定
手順
CLIクイックコンフィグレーション
この例のセクションを迅速に設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除し、ネットワーク設定に一致させる必要がある詳細情報を変更し、コマンドを [edit] 階層レベルでCLIにコピーアンドペーストして、設定モードから commit を入力します。
set security nat static rule-set sip-phone from zone private set security nat static rule-set sip-phone from zone public set security nat static rule-set sip-phone rule phone1 match destination-address 10.1.2.3/32 set security nat static rule-set sip-phone rule phone1 then static-nat prefix 10.1.1.3/32 set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 set interfaces ge-0/0/1 unit 0 family inet address 10.1.2.2/24 set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24 set security zones security-zone private address-book address phone1 10.1.1.3/32 set security zones security-zone private interfaces ge-0/0/0.0 set security zones security-zone public address-book address phone2 172.16.1.4/32 set security zones security-zone public interfaces ge-0/0/2.0 set security zones security-zone dmz address-book address proxy 10.1.2.4/32 set security zones security-zone dmz interfaces ge-0/0/1.0 set security nat source rule-set sip-phones from zone private set security nat source rule-set sip-phones to zone dmz set security nat source rule-set sip-phones rule r1 match source-address 10.1.1.3/32 set security nat source rule-set sip-phones rule r1 then source-nat interface set security policies from-zone private to-zone dmz policy private-to-proxy match source-address phone1 set security policies from-zone private to-zone dmz policy private-to-proxy match destination-address proxy set security policies from-zone private to-zone dmz policy private-to-proxy match application junos-sip set security policies from-zone private to-zone dmz policy private-to-proxy then permit set security policies from-zone public to-zone dmz policy public-to-proxy match source-address phone2 set security policies from-zone public to-zone dmz policy public-to-proxy match destination-address proxy set security policies from-zone public to-zone dmz policy public-to-proxy match application junos-sip set security policies from-zone public to-zone dmz policy public-to-proxy then permit set security policies from-zone public to-zone private policy public-to-private match source-address phone2 set security policies from-zone public to-zone private policy public-to-private match destination-address phone1 set security policies from-zone public to-zone private policy public-to-private match application junos-sip set security policies from-zone public to-zone private policy public-to-private then permit set security policies from-zone private to-zone public policy private-to-public match source-address phone1 set security policies from-zone private to-zone public policy private-to-public match destination-address phone2 set security policies from-zone private to-zone public policy private-to-public match application junos-sip set security policies from-zone private to-zone public policy private-to-public then permit set security policies from-zone dmz to-zone private policy proxy-to-private match source-address proxy set security policies from-zone dmz to-zone private policy proxy-to-private match destination-address phone1 set security policies from-zone dmz to-zone private policy proxy-to-private match application junos-sip set security policies from-zone dmz to-zone private policy proxy-to-private then permit set security policies from-zone dmz to-zone public policy proxy-to-public match source-address proxy set security policies from-zone dmz to-zone public policy proxy-to-public match destination-address phone2 set security policies from-zone dmz to-zone public policy proxy-to-public match application junos-sip set security policies from-zone dmz to-zone public policy proxy-to-public then permit
ステップバイステップの手順
次の例では、設定階層のさまざまなレベルに移動する必要があります。その方法の詳細については、『CLIユーザーガイド』の「構成モードでのCLIエディターの使用」を参照してください。
プライベートゾーンにSIPプロキシサーバーを設定し、パブリックゾーンに静的NATを設定するには:
-
静的 NAT のルールセットを作成し、それにルールを割り当てます。
[edit security nat static rule-set] user@host# sip-phone from zone private user@host# sip-phone from zone public user@host# sip-phone rule phone1 match destination-address 10.1.2.3/32 user@host# phone1 then static-nat prefix 10.1.1.3/32
-
インターフェイスを設定します。
[edit] user@host# set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.1/24 user@host# set interfaces ge-0/0/1 unit 0 family inet address 10.1.2.2/24 user@host# set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.1/24
-
セキュリティゾーンを設定します。
[edit security zones] user@host# set security-zone private interfaces ge-0/0/0.0 user@host# set security-zone public interfaces ge-0/0/2.0 user@host# set security-zone dmz interfaces ge-0/0/1.0
-
セキュリティゾーンにアドレスを割り当てます。
[edit security zones] user@host# set security-zone private address-book address phone1 10.1.1.3/32 user@host# set security-zone public address-book address phone2 172.16.1.4/32 user@host# set security-zone dmz address-book address proxy 10.1.2.4/32
-
phone1からプロキシへの通信用のインターフェイスNATを設定します。
[edit security nat source rule-set sip-phones] user@host# set from zone private user@host# set to zone dmz user@host# set rule r1 match source-address 10.1.1.3/32 user@host# set rule r1 then source-nat interface
-
プライベートゾーンからゾーンDMZへのトラフィックを許可するセキュリティポリシーを設定します。
[edit security policies from-zone private to-zone dmz policy private-to-proxy] user@host# set match source-address phone1 user@host# set match destination-address proxy user@host# set match application junos-sip user@host# set then permit
-
パブリックゾーンからゾーンDMZへのトラフィックを許可するセキュリティポリシーを設定します。
[edit security policies from-zone public to-zone dmz policy public-to-proxy] user@host# set match source-address phone2 user@host# set match destination-address proxy user@host# set match application junos-sip user@host# set then permit
-
プライベートゾーンからパブリックゾーンへのトラフィックを許可するセキュリティポリシーを設定します。
[edit security policies from-zone private to-zone public policy private-to-public] user@host# set match source-address phone1 user@host# set match destination-address phone2 user@host# set match application junos-sip user@host# set then permit
-
パブリックゾーンからプライベートゾーンへのトラフィックを許可するセキュリティポリシーを設定します。
[edit security policies from-zone public to-zone private policy public-to-private] user@host# set match source-address phone2 user@host# set match destination-address phone1 user@host# set match application junos-sip user@host# set then permit
-
ゾーン DMZ からゾーン プライベートへのトラフィックを許可するセキュリティ ポリシーを設定します。
[edit security policies from-zone dmz to-zone private policy proxy-to-private] user@host# set match source-address proxy user@host# set match destination-address phone1 user@host# set match application junos-sip user@host# set then permit
-
ゾーン DMZ からパブリック ゾーンへのトラフィックを許可するセキュリティ ポリシーを設定します。
[edit security policies from-zone dmz to-zone public policy proxy-to-public] user@host# set match source-address proxy user@host# set match destination-address phone2 user@host# set match application junos-sip user@host# set then permit
結果
設定モードから、 show interfaces、 show security zones、 show security nat、 show security policies コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の設定手順を繰り返して修正します。
[edit]
user@host# show interfaces
ge-0/0/0 {
unit 0 {
family inet {
address 10.1.1.1/24;
}
}
}
ge-0/0/1 {
unit 0 {
family inet {
address 10.1.2.2/24;
}
}
}
ge-0/0/2 {
unit 0 {
family inet {
address 172.16.1.1/24;
}
}
}
[edit]
user@host# show security zones
security-zone private {
address-book {
address phone1 10.1.1.3/32;
}
interfaces {
ge-0/0/0.0;
}
}
security-zone public {
address-book {
address phone2 172.16.1.4/32;
}
interfaces {
ge-0/0/2.0;
}
}
security-zone dmz {
address-book {
address proxy 10.1.2.4/32;
}
interfaces {
ge-0/0/1.0;
}
}
[edit]
user@host# show security nat
static {
rule-set sip-phone {
from zone [ private public ];
rule phone1 {
match {
destination-address 10.1.2.3/32;
}
then {
static-nat {
prefix {
10.1.1.3/32;
}
}
}
}
}
}
source {
rule-set sip-phones {
from zone private;
to zone dmz;
rule r1 {
match {
source-address 10.1.1.3/32;
}
then {
source-nat {
interface;
}
}
}
}
}
proxy-arp {
interface ge-0/0/1.0 {
address {
10.1.2.3/32;
}
}
}
[edit]
user@host# show security policies
from-zone private to-zone dmz {
policy private-to-proxy {
match {
source-address phone1;
destination-address proxy;
application junos-sip;
}
then {
permit;
}
}
}
from-zone public to-zone dmz {
policy public-to-proxy {
match {
source-address phone2;
destination-address proxy;
application junos-sip;
}
then {
permit;
}
}
}
from-zone public to-zone private {
policy public-to-private {
match {
source-address phone2;
destination-address phone1;
}
then {
permit;
}
}
}
from-zone private to-zone public {
policy private to-zone public {
match {
source-address phone1;
destination-address phone2;
}
then {
permit;
}
}
}
from-zone dmz to-zone private {
policy proxy-to-private {
match {
source-address proxy;
destination-address phone2;
application junos-sip;
}
then {
permit;
}
}
}
デバイスの設定が完了したら、設定モードから commit を入力します。
検証
設定が正常に機能していることを確認するには、以下のタスクを実行します。
送信元NATルールの使用状況の確認
目的
送信元NATルールに一致するトラフィックがあることを確認します。
アクション
動作モードから、 show security nat source rule all コマンドを入力します。変換ヒットフィールドを表示して、ルールに一致するトラフィックを確認します。
user@host> show security nat source rule all
source NAT rule: r1 Rule-set: sip-phones
Rule-Id : 1
Rule position : 1
From zone : private
To zone : public
Match
Source addresses : 0.0.0.0 - 255.255.255.255
Destination port : 0 - 0
Action : interface
Persistent NAT type : N/A
Persistent NAT mapping type : address-port-mapping
Inactivity timeout : 0
Max session number : 0
Translation hits : 0
Successful sessions : 0
Failed sessions : 0
Number of sessions : 0
意味
この Translation hits field は、送信元NATルールに一致するトラフィックがないことを示しています。
静的 NAT ルールの使用状況の確認
目的
静的 NAT ルールに一致するトラフィックがあることを確認します。
アクション
動作モードから、 show security nat static rule all コマンドを入力します。変換ヒットフィールドを表示して、ルールに一致するトラフィックを確認します。
user@host> show security nat static rule all
Total static-nat rules: 1
Total referenced IPv4/IPv6 ip-prefixes: 2/0
Static NAT rule: phone1 Rule-set: sip-phone
Rule-Id : 1
Rule position : 1
From zone : private
: public
Destination addresses : 10.1.2.3
Host addresses : 10.1.2.4
Netmask : 32
Host routing-instance : N/A
Translation hits : 127
Successful sessions : 127
Failed sessions : 0
Number of sessions : 0
意味
Translation hitsフィールドは、静的NATルールに一致するトラフィックを示しています。
SIP ALGステータスの確認
目的
システムで SIP ALG が有効になっていることを確認します。
アクション
動作モードから、 show security alg status コマンドを入力します。
user@host> show security alg status ALG Status : DNS : Enabled FTP : Enabled H323 : Disabled MGCP : Disabled MSRPC : Enabled PPTP : Enabled RSH : Disabled RTSP : Disabled SCCP : Disabled SIP : Enabled SQL : Enabled SUNRPC : Enabled TALK : Enabled TFTP : Enabled IKE-ESP : Disabled
意味
出力は、SIP ALGステータスを以下のように示しています。
-
有効—SIP ALGが有効であることを示します。
-
無効—SIP ALGが無効であることを示します。
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。
