Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ALGアプリケーション

アプリケーションプロパティの設定

アプリケーションのプロパティを設定するには、[edit applications]階層レベルでapplicationステートメントを含めます。

application-setステートメントを設定することで、アプリケーションオブジェクトをグループ化できます。詳細については、アプリケーションセットの設定を参照してください。

このセクションでは、アプリケーションを設定するための以下のタスクについて説明します。

アプリケーションプロトコルの設定

application-protocolステートメントでは、サポートされているアプリケーションプロトコル(ALG)のうち、どのアプリケーションプロトコルを設定し、サービス処理用のアプリケーションセットに含めるかを指定できます。アプリケーションプロトコルを設定するには、[edit applications application application-name]階層レベルでapplication-protocolステートメントを含めます。

表1 は、サポートされているプロトコルのリストを示しています。特定のプロトコルの詳細については、 ALGの説明を参照してください。

表1:サービスインターフェイスでサポートされているアプリケーションプロトコル

プロトコル名

CLI値

コメント

ブートストラッププロトコル(BOOTP)

bootp

BOOTPおよびDHCP(ダイナミックホスト構成プロトコル)をサポートします。

分散コンピューティング環境(DCE)リモートプロシージャコール(RPC)

dce-rpc

protocolステートメントの値がudpまたはtcpである必要があります。uuid値が必要です。destination-port値やsource-port値を指定することはできません。

DCE RPCポートマップ

dce-rpc-portmap

protocolステートメントの値がudpまたはtcpである必要があります。destination-port値が必要です。

ドメインネームシステム(DNS)

dns

protocolステートメントの値がudpである必要があります。このアプリケーションプロトコルは、DNS応答を受信するとすぐにDNSフローを閉じます。

実行

exec

protocolステートメントの値はtcpであるか、指定されていない必要があります。destination-port値が必要です。

FTP

ftp

protocolステートメントの値はtcpであるか、指定されていない必要があります。destination-port値が必要です。

H.323

h323

IKEアルゴリズム

ike-esp-nat

protocolステートメントの値がudpである必要があり、destination-port値が500である必要があります。

インターネット制御メッセージプロトコル(ICMP)

icmp

protocolステートメントの値はicmpであるか、指定されていない必要があります。

インターネットORB間プロトコル

iiop

IP

ip

ログイン

login

NetBIOS

netbios

protocolステートメントの値はudpであるか、指定されていない必要があります。destination-port値が必要です。

ネットショー

netshow

protocolステートメントの値はtcpであるか、指定されていない必要があります。destination-port値が必要です。

ポイントツーポイントトンネリングプロトコル

pptp

RealAudio

realaudio

リアルタイムストリーミングプロトコル(RTSP)

rtsp

protocolステートメントの値はtcpであるか、指定されていない必要があります。destination-port値が必要です。

RPC User Datagram Protocol(UDP)または TCP

rpc

protocolステートメントの値がudpまたはtcpである必要があります。rpc-program-number値が必要です。destination-port値やsource-port値を指定することはできません。

RPCポートマッピング

rpc-portmap

protocolステートメントの値がudpまたはtcpである必要があります。destination-port値が必要です。

シェル

shell

protocolステートメントの値はtcpであるか、指定されていない必要があります。destination-port値が必要です。

セッション開始プロトコル

sip

SNMP

snmp

protocolステートメントの値はudpであるか、指定されていない必要があります。destination-port値が必要です。

SQLNet

sqlnet

protocolステートメントの値はtcpであるか、指定されていない必要があります。destination-port値またはsource-port値が必要です。

トークプログラム

talk

トレースルート

traceroute

protocolステートメントの値はudpであるか、指定されていない必要があります。destination-port値が必要です。

トリビアルFTP(TFTP)

tftp

protocolステートメントの値はudpであるか、指定されていない必要があります。destination-port値が必要です。

WinFrame

winframe

注:

同じサービスセットで2回NATが設定されている場合、ICMP用のアプリケーションレベルゲートウェイ(ALG)を設定し、ステートフルファイアウォール、NAT、またはCoSルールの下でルートをトレースできます。これらのALGは、PGCP(パケットゲートウェイコントローラプロトコル)によって作成されたフローには適用できません。Twice NATは、他のALGをサポートしていません。NATは、IPアドレスとTCPまたはUDPヘッダーのみを適用し、ペイロードには適用しません。

2 回 NAT の設定の詳細については、「 Junos Address Aware ネットワークアドレッシングの概要」を参照してください。

ネットワークプロトコルの設定

protocolステートメントを使用すると、アプリケーション定義で一致させるサポートされているネットワークプロトコルを指定できます。ネットワークプロトコルを設定するには、[edit applications application application-name]階層レベルでprotocolステートメントを含めます。

プロトコルタイプは数値で指定します。より一般的に使用されるプロトコルでは、テキスト名もコマンドラインインターフェイス(CLI)でサポートされています。 表2 は、サポートされているプロトコルのリストを示しています。

表2:サービスインターフェイスでサポートされているネットワークプロトコル

ネットワークプロトコルタイプ

CLI値

コメント

IPセキュリティ(IPsec)認証ヘッダー(AH)

ah

外部ゲートウェイ・プロトコル(EGP)

egp

IPsecカプセル化セキュリティペイロード(ESP)

esp

一般的なルーティングカプセル化(GR)

gre

ICMP

icmp

application-protocolicmp が必要です。

ICMPv6

icmp6

application-protocolicmp が必要です。

インターネットグループ管理プロトコル(IGMP)

igmp

IP in IP

ipip

OSPF

ospf

プロトコル独立マルチキャスト(PIM)

pim

リソース予約プロトコル(RSVP)

rsvp

TCP

tcp

application-protocol rcpまたはdce-rcpを指定しない限り、destination-portまたはsource-port値が必要です。

UDP

udp

application-protocol rcpまたはdce-rcpを指定しない限り、destination-portまたはsource-port値が必要です。

使用可能な数値の完全なリストについては、RFC 1700、 割り当てられた番号(インターネットプロトコルスイート用)を参照してください。

注:

IPバージョン6(IPv6)は、アプリケーション定義のネットワークプロトコルとしてサポートされていません。

デフォルトでは、2回のNAT機能は、ICMPエラーメッセージのペイロードに埋め込まれたIP、TCP、およびUDPヘッダーに影響を与える可能性があります。アプリケーションステートメントに protocol tcp および protocol udp ステートメントを含めることで、2回NAT設定することができます。2 回 NAT の設定の詳細については、「 Junos Address Aware ネットワークアドレッシングの概要」を参照してください。

ICMPコードとタイプの設定

ICMPコードとタイプは、ネットワークプロトコルと組み合わせて、アプリケーション定義でのパケット一致のための追加の仕様を提供します。ICMP設定を構成するには、[edit applications application application-name]階層レベルでicmp-codeおよびicmp-typeステートメントを含めます。

含めることができるICMPコードとタイプ値は1つだけです。 application-protocol ステートメントには、 icmp値が必要です。 表3は 、サポートされているICMP値のリストを示しています。

表3:サービスインターフェイスでサポートされているICMPコードとタイプ

CLIステートメント

説明

icmp-code

この値またはキーワードは、icmp-typeよりも具体的な情報を提供します。値の意味は関連するicmp-type値に依存するため、icmp-codeと一緒にicmp-typeを指定する必要があります。詳細については、『ルーティングポリシー、ファイアウォールフィルター、およびトラフィックポリサーユーザーガイド』を参照してください。

数値の代わりに、以下のテキスト同義語(フィールド値も記載されています)のいずれかを指定します。キーワードは、それらが関連するICMPタイプによってグループ化されます。

パラメータ問題: ip-header-bad (0)、 required-option-missing(1)

リダイレクト: redirect-for-host (1)、 redirect-for-network (0)、 redirect-for-tos-and-host (3)、 redirect-for-tos-and-net (2)

time-exceeded: ttl-eq-zero-during-reassembly (1)、 ttl-eq-zero-during-transit (0)

到達不能: communication-prohibited-by-filtering(13)、 destination-host-prohibited(10)、 destination-host-unknown(7)、 destination-network-prohibited(9)、 destination-network-unknown(6)、 fragmentation-needed(4)、 host-precedence-violation(14)、 host-unreachable(1)、 host-unreachable-for-TOS(12)、 network-unreachable(0)、 network-unreachable-for-TOS(11)、 port-unreachable(3)、 precedence-cutoff-in-effect(15)、 protocol-unreachable(2)、 source-host-isolated(8)、 source-route-failed(5)

icmp-type

通常、 protocol 一致ステートメントと合わせてこの一致を指定して、ポートで使用されているプロトコルを決定します。詳細については、 『ルーティングポリシー、ファイアウォールフィルター、およびトラフィックポリサーユーザーガイド』を参照してください。

数値の代わりに、次のテキスト同義語(フィールド値も記載されています)のいずれかを指定できます: echo-reply(0)、 echo-request(8)、 info-reply(16)、 info-request(15)、 mask-request(17)、 mask-reply(18)、 parameter-problem(12)、 redirect(5)、 router-advertisement(9)、 router-solicit (10)、 source-quench(4)、 time-exceeded(11)、 timestamp(13)、 timestamp-reply(14)、または unreachable(3)。

注:

拒否アクションを含む入力ファイアウォールフィルターとステートフルファイアウォールルールを含むサービスセットでインターフェイスを設定した場合、ステートフルファイアウォールルールがパケットで実行される前に、ルーターは入力ファイアウォールフィルターを実行します。その結果、パケット転送エンジンがインターフェイスを介してICMPエラーメッセージを送信したときに、入力方向にパケットが表示されないため、ステートフルファイアウォールルールでパケットがドロップされる可能性があります。

可能な回避策は、入力方向のステートフルファイアウォールの後に実行されるため、拒否アクションを実行するための転送テーブルフィルターを含めるか、ローカルで生成されたICMPパケットがステートフルファイアウォールサービスに行かないように出力サービスフィルターを含めることです。

送信元ポートと宛先ポートの設定

TCPまたはUDPの送信元ポートと宛先ポートは、ネットワークプロトコルと組み合わせて、アプリケーション定義内のパケット一致のための追加の仕様を提供します。ポートを設定するには、[edit applications application application-name]階層レベルでdestination-portおよびsource-portステートメントを含めます。

送信元または宛先ポートを1つ定義する必要があります。通常、ポートで使用されているプロトコルを決定するには、 protocol match ステートメントと合わせてこの一致を指定します。制約については 、表 1 を参照してください。

数値または 表4に示すテキスト同義語のいずれかを指定できます。

表4:サービスインターフェイスでサポートされているポート名

ポート名

対応するポート番号

afs

1483

bgp

179

biff

512

bootpc

68

bootps

67

cmd

514

cvspserver

2401

dhcp

67

domain

53

eklogin

2105

ekshell

2106

exec

512

finger

79

ftp

21

ftp-data

20

http

80

https

443

ident

113

imap

143

kerberos-sec

88

klogin

543

kpasswd

761

krb-prop

754

krbupdate

760

kshell

544

ldap

389

login

513

mobileip-agent

434

mobilip-mn

435

msdp

639

netbios-dgm

138

netbios-ns

137

netbios-ssn

139

nfsd

2049

nntp

119

ntalk

518

ntp

123

pop3

110

pptp

1723

printer

515

radacct

1813

radius

1812

rip

520

rkinit

2108

smtp

25

snmp

161

snmptrap

162

snpp

444

socks

1080

ssh

22

sunrpc

111

syslog

514

tacacs-ds

65

talk

517

telnet

23

tftp

69

timed

525

who

513

xdmcp

177

zephyr-clt

2103

zephyr-hm

2104

一致基準の詳細については、 ルーティングポリシー、ファイアウォールフィルター、およびトラフィックポリサーユーザーガイドを参照してください。

非アクティブタイムアウト期間の設定

アプリケーションの非アクティブのタイムアウト期間を指定できます。その間にソフトウェアがアクティビティを検出しなかった場合、タイマーが終了するとフローは無効になります。タイムアウト期間を設定するには、[edit applications application application-name]階層レベルでinactivity-timeoutステートメントを含めます。

デフォルト値は30秒です。アプリケーションに設定した値は、 [edit interfaces interface-name service-options] 階層レベルで設定されたグローバル値を上書きします。詳細については、「 サービスインターフェイスのデフォルトのタイムアウト設定の設定」を参照してください。

IKE ALGアプリケーションの設定

Junos OSリリース17.4R1以前では、MXシリーズルーターのIPsec機能のJunos VPN Site Secureスイートでは、ネットワークアドレス変換トラバーサル(NAT-T)はサポートされていません。IKE ALGは、NAT-Tに準拠していないIPsecピア間で、NAPT-44およびNAT64フィルターを介してIKEv1およびIPsecパケットを通過させることができます。このALGは、ESPトンネルモードのみをサポートします。宛先ポート(500)、非アクティブタイムアウト(30秒)、ゲートタイムアウト(120秒)、ESPセッションアイドルタイムアウト(800秒)の定義された値を持つ、定義済みのIKE ALGアプリケーション junos-ikeを使用できます。定義済みの junos-ike アプリケーションとは異なる値でIKE ALGを使用する場合は、新しいIKE ALGアプリケーションを設定する必要があります。

IKE ALGアプリケーションを設定するには:

  1. アプリケーションの名前を指定します。

  2. IKE ALGを指定します。

  3. UDPプロトコルを指定します。

  4. 宛先ポートに500を指定します。

  5. IKEセッションが削除されるまで非アクティブになるまでの秒数を指定します。デフォルトは30秒です。

  6. IKEがIPsecクライアントとサーバーの間にセキュリティアソシエーションを確立してから、ESPトラフィックが双方向に開始されるまでの経過時間を秒数で指定します。このタイムアウト値までに ESP トラフィックが開始されていない場合、ESP ゲートは削除され、ESP トラフィックはブロックされます。デフォルトは120秒です。

  7. ESP セッション(IPsec データ トラフィック)のアイドル タイムアウトを秒単位で指定します。この間にESPセッションでIPsecデータトラフィックが渡されない場合、セッションは削除されます。デフォルトは800秒です。

SIPの設定

SIP(Session Initiation Protocol)は、テレフォニー、FAX、ビデオ会議、インスタントメッセージング、ファイル交換などのインターネットサービスに関与するエンドポイント間の通信のための汎用化されたプロトコルです。

Junos OSは、RFC 3261、 SIP:セッション開始プロトコルに記載されている標準に従ってALGサービスを提供します。Junos OS での SIP フローは、RFC 3665、 セッション開始プロトコル(SIP)の基本的なコールフローの例に記載されているとおりです。

注:

Junos OS SIP ALGを実装する前に、「Junos OS SIP ALGの制限事項」で説明されている特定の制限事項について理解しておく必要があります

SIP ALGとNATを組み合わせて使用すると、アドレス変換によりSIPヘッダーフィールドが変更されます。これらの変換の説明については、 SIP ALGとネットワークアドレス変換の相互作用を参照してください。

アダプティブ サービス インターフェイスに SIP を実装するには、[edit applications application application-name] 階層レベルで application-protocol ステートメントを値 sip で設定します。このステートメントの詳細については、アプリケーションプロトコルの設定を参照してください。さらに、SIPの実装方法を変更するために設定できるステートメントが他に2つあります。

  • ルーターが、NATファイアウォールの背後にあるエンドポイントデバイスの着信SIPコールを受け入れるようにすることができます。ファイアウォールの背後にあるデバイスがファイアウォールの外側にあるプロキシに登録すると、ASまたはマルチサービスPICは登録状態を維持します。 learn-sip-register ステートメントが有効になっている場合、ルーターはこの情報を使用して着信コールを受け入れることができます。このステートメントが設定されていない場合、着信コールは受け入れられません。ファイアウォールの内側にあるデバイスのみが、ファイアウォール外側のデバイスを呼び出すことができます。

    SIP 登録を設定するには、[edit applications application application-name] 階層レベルで learn-sip-register ステートメントを含めます。

    注:

    learn-sip-registerステートメントは、次世代サービスMX-SPC3には適用されません。

    また、 show services stateful-firewall sip-register コマンドを発行して、SIPレジスタを手動で検査することもできます。詳細については、 『Junos OSシステムの基本とサービスコマンドリファレンス』を参照してください。 show services stateful-firewall sip-register コマンドは、次世代サービスではサポートされていません。

  • 保留になっているSIPコールの期間中のタイムアウト期間を指定できます。通話が保留になると、アクティビティはなく、設定された inactivity-timeout 期間が経過した後にフローがタイムアウトし、通話状態が破棄されることがあります。これを回避するために、コールが保留になると、フロータイマーが sip-call-hold-timeout サイクルにリセットされ、コールの状態とフローが inactivity-timeout 期間よりも長く保持されます。

    注:

    sip-call-hold-timeoutステートメントは、次世代サービスMX-SPC3には適用されません。

    タイムアウト期間を設定するには、[edit applications application application-name]階層レベルでsip-call-hold-timeoutステートメントを含めます。

    デフォルト値は7200秒で、範囲は0〜36,000秒(10時間)です。

SIP ALGとネットワークアドレス変換の相互作用

ネットワークアドレス変換(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メッセージを破棄します。

このトピックでは、次のセクションについて説明します。

発信コール

内部ネットワークから外部ネットワークへの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メッセージは、通話に新しいメディアセッションを追加し、既存のメディアセッションを削除します。新しいメディア セッションが通話に追加されると、ファイアウォールに新しいピンホールが開き、新しいアドレス バインディングが作成されます。このプロセスは、元のコール設定と同じです。1 つ以上のメディア セッションが通話から削除されると、BYE メッセージと同様にピンホールが閉じられ、バインディングが解放されます。

セッションタイマーの呼び出し

SIP ALGは、Re-INVITEまたはUPDATEメッセージを受信しない場合、セッションExpires値を使用してセッションをタイムアウトします。ALGは、INVITEに対する200 OK応答からSession-Expires値(存在する場合)を取得し、この値をシグナリングのタイムアウトに使用します。セッションがタイムアウトする前にALGが別のINVITEを受信した場合、ALGはすべてのタイムアウト値をこの新しいINVITEまたはデフォルト値にリセットし、このプロセスが繰り返されます。

予防措置として、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アドレスを置き換えて、外部ネットワークから非表示にしています。

IPアドレス変換の実行方法は、メッセージのタイプと方向によって異なります。メッセージは次のいずれかです。

  • インバウンドリクエスト

  • アウトバウンド応答

  • アウトバウンドリクエスト

  • インバウンド応答

表5は 、これらの各ケースでNATがどのように実行されるかを示しています。いくつかのヘッダーフィールドについて、ALGが判断するのは、メッセージがネットワークの内部から来たか外部からかということだけではありません。また、どのクライアントが呼び出しを開始したか、メッセージが要求か応答かを判断する必要があります。

表5:NATテーブルを使用したメッセージの要求

インバウンドリクエスト

(パブリックからプライベートへ)

宛先:

ドメインをローカルアドレスに置き換える

差出人:

なし

Call-ID:

なし

経由:

なし

Request-URI:

ALGアドレスをローカルアドレスに置き換えます

コンタクト:

なし

Record-Route:

なし

ルート:

なし

アウトバウンド応答

(プライベートからパブリックへ)

宛先:

ALGアドレスをローカルアドレスに置き換えます

差出人:

なし

Call-ID:

なし

経由:

なし

Request-URI:

該当なし

コンタクト:

ローカルアドレスをALGアドレスに置き換えます

Record-Route:

ローカルアドレスをALGアドレスに置き換えます

ルート:

なし

アウトバウンドリクエスト

(プライベートからパブリックへ)

宛先:

なし

差出人:

ローカルアドレスをALGアドレスに置き換えます

Call-ID:

なし

経由:

ローカルアドレスをALGアドレスに置き換えます

Request-URI:

なし

コンタクト:

ローカルアドレスをALGアドレスに置き換えます

Record-Route:

ローカルアドレスをALGアドレスに置き換えます

ルート:

ALGアドレスをローカルアドレスに置き換えます

アウトバウンド応答

(パブリックからプライベートへ)

宛先:

なし

差出人:

ALGアドレスをローカルアドレスに置き換えます

Call-ID:

なし

経由:

ALGアドレスをローカルアドレスに置き換えます

Request-URI:

該当なし

コンタクト:

なし

Record-Route:

ALGアドレスをローカルアドレスに置き換えます

ルート:

ALGアドレスをローカルアドレスに置き換えます

SIP本文

SIP本文のSDP情報には、ALGがメディアストリームのチャネルを作成するために使用するIPアドレスが含まれています。SDPセクションの変換では、リソース、つまりメディアを送受信するためのポート番号も割り当てられます。

次のサンプル SDP セクションからの抜粋は、リソース割り当て用に変換されたフィールドを示しています。

SIP メッセージには、複数のメディア ストリームを含めることができます。この概念は、電子メール メッセージに複数のファイルを添付するのと似ています。例えば、SIP クライアントから SIP サーバーに送信された INVITE メッセージには、以下のフィールドがある場合があります。

Junos OSは、各方向にネゴシエートされた最大6個のSDPチャネルをサポートし、1つの通話で合計12個のチャネルをサポートします。

Junos OS SIP ALGの制限事項

SIP ALGの設定には、以下の制限が適用されます。

  • RFC 3261に記載されているメソッドのみがサポートされます。

  • SIPバージョン2のみがサポートされます。

  • TCPは、MS-MPCのシグナリングメッセージのトランスポートメカニズムとしてはサポートされていませんが、次世代サービスではサポートされています。

  • STUNを使用する場合は、SIP ALGを設定しないでください。 クライアントがSTUN/TURNを使用して、発信者と応答者またはプロキシの間のファイアウォールまたはNATデバイスを検出する場合、クライアントはNATデバイスの動作を最適に推測し、それに応じて行動してコールを発信しようとします。

  • MS-MPCでは、SIP ALGとエンドポイントに依存しないマッピングNATプールオプションを使用しないでください。 エラーが発生します。これは、次世代サービスには適用されません。

  • IPv6シグナリングデータはMS-MPCではサポートされていませんが、次世代サービスではサポートされています。

  • 認証はサポートされていません。

  • 暗号化されたメッセージはサポートされていません。

  • SIPフラグメント化はMS-MPCではサポートされていませんが、次世代サービスではサポートされています。

  • SIP メッセージを含む UDP パケットの最大サイズは 9 KB と想定されます。これより大きいSIPメッセージはサポートされていません。

  • SIPメッセージ内の最大メディアチャネル数は6と想定されます。

  • 完全修飾ドメイン名(FQDN)は、重要なフィールドではサポートされていません。

  • QoSはサポートされていません。SIP は DSCP 書き換えをサポートします。

  • ウォームスタンバイを除き、高可用性はサポートされていません。

  • なしのタイムアウト設定は、SIPまたはNATではサポートされていません。

  • マルチキャスト(フォークプロキシ)はサポートされていません。

パケット照合のためのSNMPコマンドの設定

パケット照合のSNMPコマンド設定を指定できます。SNMPを設定するには、[edit applications application application-name]階層レベルでsnmp-commandステートメントを含めます。

サポートされている値は、getget-nextset、およびtrapです。マッチングには1つの値のみを設定できます。[edit applications application application-name]階層レベルのapplication-protocolステートメントには、値snmpが必要です。アプリケーションプロトコルの指定については、アプリケーションプロトコルの設定を参照してください。

RPCプログラム番号の設定

パケット照合用のRPCプログラム番号を指定できます。RPCプログラム番号を設定するには、[edit applications application application-name]階層レベルにrpc-program-numberステートメントを含めます。

DCEまたはRPCに使用される値の範囲は、100,000〜400,000です。[edit applications application application-name]階層レベルのapplication-protocolステートメントには、値rpcが必要です。アプリケーションプロトコルの指定については、アプリケーションプロトコルの設定を参照してください。

TTLしきい値の設定

トレース ルートのTTL(Time-to-Live)しきい値を指定して、トレース ルーティングのネットワーク浸透の許容レベルを制御できます。TTL値を設定するには、[edit applications application application-name]階層レベルでttl-thresholdステートメントを含めます。

[edit applications application application-name]階層レベルのapplication-protocolステートメントには、値tracerouteが必要です。アプリケーションプロトコルの指定については、アプリケーションプロトコルの設定を参照してください。

ユニバーサル一意識別子の設定

DCE RPCオブジェクトにユニバーサル一意識別子(UUID)を指定できます。UUID値を設定するには、[edit applications application application-name]階層レベルでuuidステートメントを含めます。

uuid値は16進数です。[edit applications application application-name階層レベルのapplication-protocolステートメントには、値dce-rpcが必要です。アプリケーションプロトコルの指定については、アプリケーションプロトコルの設定を参照してください。UUID番号の詳細については、「http://www.opengroup.org/onlinepubs/9629399/apdxa.htm」を参照してください。

アプリケーションセットの設定

定義したアプリケーションを名前付きオブジェクトにグループ化するには、[edit applications]階層レベルでapplication-setステートメントと各アプリケーションに対してapplicationステートメントを含めます。

典型的なアプリケーションセットの例については、 例:アプリケーションプロトコルの設定を参照してください。

例:アプリケーションプロトコルの設定

次の例は、ポート 78 で実行される特別な FTP アプリケーションを記述するアプリケーション プロトコル定義を示しています。

以下の例は、タイプ8(ICMPエコー)の特別なICMPプロトコル(application-protocol icmp)を示しています。

以下の例は、使用可能なアプリケーションセットを示しています。

ソフトウェアには、よく知られたアプリケーションプロトコルの定義済みセットが含まれています。このセットには、TCPおよびUDP宛先ポートがステートレスファイアウォールフィルターによって既に認識されているアプリケーションが含まれます。

ALGセッションの出力の検証

このセクションには、ALGセッションからの成功した出力例とシステムログ設定に関する情報が含まれています。セッションの結果を比較して、設定が正しく機能しているかどうかを確認できます。

FTPの例

この例では、アクティブな FTP セッション中の出力を分析します。これは、4つの異なるフローで構成されています。2つは制御フロー、2つはデータフローです。この例は、以下の部分で構成されています。

出力例

MS-MPCカード

MS-MPCの場合、 show services stateful-firewall conversations application-protocol ftp 運用モードコマンドの完全なサンプル出力を以下に示します。

各フローについて、最初の行は、プロトコル(TCP)、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、フロー状態、方向、フレーム数などのフロー情報を示しています。

  • フローの状態は、 WatchForward、または Dropです。

    • Watchフロー状態は、ペイロード内の情報について制御フローがALGによって監視されていることを示します。NAT処理は、必要に応じてヘッダーとペイロードに対して実行されます。

    • Forwardフローは、ペイロードを監視せずにパケットを転送します。必要に応じて、ヘッダーに対してNATが実行されます。

    • Dropフローは、5タプルに一致するパケットを破棄します。

  • フレーム カウント(Frm count)は、そのフローで処理されたパケットの数を示します。

2行目はNAT情報を示しています。

  • source 送信元NATを示します。

  • dest 宛先 NAT を示します。

  • NAT行の最初のアドレスとポートは、そのフロー用に変換される元のアドレスとポートです。

  • NAT行の2番目のアドレスとポートは、そのフローの変換されたアドレスとポートです。

MX-SPC3カード

MX-SPC3サービスカードでは、 show services sessions application-protocol ftp 運用モードコマンドの完全なサンプル出力を以下に示します。

各セッションについて:

  • 最初の行は、セッションID、サービスセット名、ポリシー名、セッションタイムアウト、論理システム名、およびその状態などのフロー情報を示しています。

  • 2行目の Resource informationは、ALG名(FTP ALG)とASLグループID(1)、ASLリソースID(制御セッションの場合は0、データセッションの場合は1)を含め、ALGによってセッションが作成されたことを示しています。

  • 3行目Inは順方向フロー、4行目Outは逆方向フローで、送信元アドレス、送信元ポート、宛先ポート、プロトコル(TCP)、セッションconn-tag、OutInインターフェイスの着信および発信、受信フレーム数、バイト数が含まれます。必要に応じて、ヘッダーに対してNATが実行されます。

FTPシステムログメッセージ

システムログメッセージは、FTPセッション中に生成されます。システムログの詳細については、 システムログメッセージを参照してください。

MS-MPCカード

以下のシステムログメッセージは、FTP制御フローの作成中に生成されます。

  • ルール システムログを受け入れる:

  • Accept Flowシステムログの作成:

  • データフロー作成のシステムログ:

MX-SPC3カードカード

以下のシステムログメッセージは、FTP制御フローの作成中に生成されます。

  • FTP制御セッション作成のシステムログ:

  • FTPデータセッション作成のシステムログ:

  • FTPデータセッション破棄のシステムログ:

  • FTP制御セッション破棄のシステムログ:

分析

制御フロー
MS-MPCカード

制御フローは、3 ウェイ ハンドシェイクが完了した後に確立されます。

  • FTPクライアントからFTPサーバーへのフローを制御します。TCP宛先ポートは21です。

  • FTPサーバーからFTPクライアントへのフローを制御します。TCP送信元ポートは21です。

MX-SPC3カード

制御フローは、3 ウェイ ハンドシェイクが完了した後に確立されます。

  • FTPクライアントからFTPサーバーへの制御セッション、TCP宛先ポートは21です。

  • FTPクライアントからFTPサーバーへのデータセッションは、FTPパッシブモード用です。

  • FTPサーバーからFTPクライアントへのデータセッションは、FTPアクティブモード用です。

データフロー

20のデータポートは、FTP制御プロトコルの過程でデータ転送のためにネゴシエートされます。これらの 2 つのフローは、FTP クライアントと FTP サーバー間のデータ フローです。

トラブルシューティングに関する質問

  1. FTP ALGがアクティブかどうかはどうすればわかりますか?

    • 会話の ALG プロトコル フィールドに ftp が表示されるはずです。

    • 制御フローには有効なフレーム数(Frm count)が必要です。

    • データフロー内の有効なフレームカウントは、データ転送が行われたことを示します。

  2. FTP接続が確立されているのにデータ転送が行われない場合、何を確認すればよいですか?

    • ほとんどの場合、制御接続はアップしているが、データ接続はダウンしている。

    • 会話の出力をチェックして、制御フローとデータフローの両方が存在するかどうかを判断します。

  3. 各フローをどのように解釈すればよいですか?それぞれのフローには何が意味するのか?

    • FTP 制御フロー イニシエータ フロー - 宛先ポート 21 のフロー

    • FTP 制御フロー レスポンダー フロー - 送信元ポートとのフロー。21

    • FTP データ フロー イニシエータ フロー - 宛先ポート 20 のフロー

    • FTP データ フロー レスポンダー フロー - 送信元ポート 20 のフロー

RTSP ALGの例

次に、RTSP 会話の例を示します。アプリケーションは、制御接続にRTSPプロトコルを使用します。接続が確立されると、メディアはUDPプロトコル(RTP)を使用して送信されます。

この例は以下で構成されています。

MS-MPC の出力例

以下に、 show services stateful-firewall conversations 運用モードコマンドの出力を示します。

MX-SPC3サービスカードの出力例

以下に、 show services sessions application-protocol rtsp 運用モードコマンドの出力を示します。

分析

RTSP 会話は、RTSP 制御接続に対応する TCP フローで構成する必要があります。クライアントからサーバーとサーバーからクライアントの各方向に 1 つずつ、2 つのフローが存在する必要があります。

  • イニシエーターフローのRTSP制御接続は、宛先ポート554から送信されます。

  • レスポンダフローのRTSP制御接続は、送信元ポート554から送信されます。

UDPフローは、RTSP接続を介して送信されたRTPメディアに対応します。

トラブルシューティングに関する質問

  1. RTSP ALGが設定されている場合、メディアは機能しません。どうしようか。

    • RTSP の会話をチェックして、TCP フローと UDP フローの両方が存在するかどうかを確認します。

    • ALGプロトコルは rtspとして表示されているはずです。

    注:

    フローの状態が Watchとして表示されます。これは、ALG処理が行われており、クライアントが本質的にアプリケーションに対応するペイロードを「監視」または処理しているためです。FTPおよびRTSP ALGフローの場合、制御接続は常にフロー Watch です。

  2. ALGエラーを確認するにはどうすればよいですか?

    • 以下のコマンドを発行することで、エラーをチェックできます。各ALGには、ALGパケットエラー用の個別のフィールドがあります。

システムログメッセージ

システムログ生成を有効にし、システムログを確認することも、ALGフロー分析に役立ちます。このセクションには次の内容が含まれています。

システムログの設定

Junos OS CLIでは、さまざまなレベルでシステムログメッセージの有効化を設定できます。次の構成例に示すように、レベルの選択は、イベントログの具体性と含めるオプションによって異なります。設定オプションの詳細については、 ルーティングデバイス用 Junos OS 運用ライブラリ (システムレベル)またはルーティング デバイス用 Junos OS サービスインターフェイスライブラリ (その他のすべてのレベル)を参照してください。

  1. 最上位のグローバルレベルでは:

  2. サービスセットレベルでは:

  3. サービスルールレベルでは:

システムログ出力

システムログメッセージは、以下の例に示すように、フロー作成中に生成されます。

次のシステム ログ メッセージは、ASP が受け入れルールに一致したことを示しています。

システムログメッセージの完全なリストについては、 システムログエクスプローラを参照してください。