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

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

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

プロトコル名

CLI値

コメント

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

bootp

BOOTPおよびDHCP(Dynamic Host Configuration Protocol)をサポートします。

分散コンピューティング環境 (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 ALG

ike-esp-nat

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

Internet Control Message Protocol(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ユーザーデータグラムプロトコル(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

手記:

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

Twice 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の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, Assigned Numbers (for the Internet Protocol Suite)を参照してください。

手記:

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

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

ICMP コードと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 一致ステートメントと組み合わせて指定し、ポートで使用されているプロトコルを決定します。制約については、 表 1 を参照してください。

数値を指定することも、 表 4 にリストされているテキスト同義語の 1 つを指定することもできます。

表 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データトラフィック)のアイドルタイムアウトを秒単位で指定します。この時間内に IPsec データ トラフィックが ESP セッションで渡されなかった場合、セッションは削除されます。デフォルトは800秒です。

SIP の設定

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

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

手記:

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

NAT を SIP ALG と組み合わせて使用すると、アドレス変換により 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 System Basics and Services Command Reference」を参照してください。 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 メッセージには SIP ヘッダーと SIP 本文に IP アドレスが含まれているため、セッション開始プロトコル(SIP)サービスでの NAT の使用はより複雑になります。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)およびリアルタイム制御プロトコル(RTCP)チャネル用のシーケンシャルポートを必要とするため、ALGは連続する偶奇数ポートを提供します。ポートのペアが見つからない場合は、SIPメッセージを破棄します。

このトピックには、以下のセクションが含まれています。

発信コール

内部ネットワークから外部ネットワークへのSIPリクエストメッセージでSIPコールが開始されると、NATはSDPのIPアドレスとポート番号を置き換え、IPアドレスとポート番号をジュニパーネットワークスのファイアウォールにバインドします。Via、Contact、Route、および Record-Route SIP ヘッダー フィールドも、存在する場合は、ファイアウォール IP アドレスにバインドされます。ALG は、再送信および SIP 応答メッセージに使用するために、これらのマッピングを保存します。

次に、SIP ALGはファイアウォールのピンホールを開き、SDPおよびVia、Contact、およびRecord-Routeヘッダーフィールドの情報に基づいてネゴシエートされた動的に割り当てられたポート上のデバイスを介してメディアを許可します。また、このピンホールにより、着信パケットが Contact、Via、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 は 200 OK の送信時間を確保するためにコールの破棄を 5 秒間遅らせます。

Call Re-INVITEメッセージ

再招待メッセージは、新しいメディアセッションをコールに追加し、既存のメディアセッションを削除します。新しいメディア セッションがコールに追加されると、ファイアウォールに新しいピンホールが開き、新しいアドレス バインドが作成されます。このプロセスは、元のコール セットアップと同じです。1 つ以上のメディア セッションがコールから削除されると、ピンホールが閉じられ、BYE メッセージと同様にバインディングが解放されます。

コール セッション タイマー

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

予防措置として、SIP ALG はハード タイムアウト値を使用して、コールが存在できる最大時間を設定します。これにより、次のいずれかのイベントが発生した場合にデバイスが確実に保護されます。

  • 通話中にエンドシステムがクラッシュし、BYEメッセージが受信されない。

  • 悪意のあるユーザーは、SIP ALG を攻撃しようとして BYE を送信することはありません。

  • SIPプロキシの不備な実装は、Record-Routeの処理に失敗し、BYEメッセージを送信しません。

  • ネットワーク障害が発生すると、BYE メッセージを受信できません。

通話のキャンセル

どちらの当事者も、CANCEL メッセージを送信することで通話を取り消すことができます。CANCEL メッセージを受信すると、SIP ALG はファイアウォールを介したピンホール (開いている場合) を閉じ、アドレス バインディングを解放します。リソースを解放する前に、ALG は制御チャネルのエージングアウトを約 5 秒間遅らせて、最後の 200 OK が通過する時間を確保します。5 秒のタイムアウトが経過すると、487 応答と 200 以外の応答のどちらが到着したかに関係なく、呼び出しは終了します。

フォーク

フォークにより、SIP プロキシは 1 つの INVITE メッセージを複数の宛先に同時に送信できます。1 つのコールに対して複数の 200 OK 応答メッセージが到着すると、SIP ALG は解析しますが、受信した最初の 200 OK メッセージでコール情報を更新します。

SIPメッセージ

SIPメッセージ形式は、SIPヘッダーセクションとSIP本文で構成されています。要求メッセージでは、ヘッダー セクションの最初の行は要求行であり、メソッドの種類、要求 URI、およびプロトコル バージョンが含まれます。応答メッセージでは、最初の行は状況コードを含む状況行です。SIPヘッダーには、シグナリングに使用されるIPアドレスとポート番号が含まれています。ヘッダー・セクションとブランク行で区切られた SIP 本文は、セッション記述情報用に予約されています (これはオプションです)。Junos OS は現在、SDP のみをサポートしています。SIP 本文には、メディアの転送に使用される IP アドレスとポート番号が含まれています。

SIPヘッダー

次のサンプルSIPリクエストメッセージでは、NATはヘッダーフィールドのIPアドレスを置き換えて、外部ネットワークから非表示にします。

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

  • 受信要求

  • アウトバウンド応答

  • アウトバウンド要求

  • 受信応答

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

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

受信要求

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

宛先:

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

差出人:

何一つ

コールID:

何一つ

経由:

何一つ

Request-URI:

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

接触:

何一つ

Record-Route:

何一つ

ルート:

何一つ

アウトバウンド応答

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

宛先:

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

差出人:

何一つ

コールID:

何一つ

経由:

何一つ

Request-URI:

該当なし

接触:

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

Record-Route:

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

ルート:

何一つ

送信要求

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

宛先:

何一つ

差出人:

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

コールID:

何一つ

経由:

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

Request-URI:

何一つ

接触:

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

Record-Route:

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

ルート:

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

アウトバウンド応答

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

宛先:

何一つ

差出人:

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

コール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では、エンドポイントに依存しないマッピングNAT プールオプションをSIP ALGと組み合わせて使用しないでください。 エラーが発生します。これは次世代サービスには適用されません。

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

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

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

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

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

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

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

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

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

  • never のタイムアウト設定は、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 運用モードコマンドの完全な出力例を示します。

各フローの 1 行目には、プロトコル(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 運用モード コマンドの完全なサンプル出力を以下に示します。

各セッションについて:

  • 1行目には、セッションID、サービスセット名、ポリシー名、セッションタイムアウト、論理システム名、状態などのフロー情報が表示されます。

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

  • 3行目の In はフォワードフロー、4行目の Out はリバースフローで、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート、プロトコル(TCP)、セッション接続タグ、インターフェイスの受信 Inおよび送信、受信フレーム数とバイト Out が含まれています。NAT は、必要に応じてヘッダーで実行されます。

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

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

MS-MPCカード

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

  • ルール システムログを受け入れます。

  • アクセプトフローシステムログの作成:

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

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と表示されます。

    手記:

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

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

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

システムログメッセージ

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

システムログ設定

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

  1. 最上位のグローバル レベルでは、次のようになります。

  2. サービスセットレベルでは、次のようになります。

  3. サービス・ルール・レベルでは、次のようになります。

システムログ出力

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

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

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