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语句具有值udptcp或 。需要一个uuid值。不能指定destination-portsource-port值。

DCE RPC 端口图

dce-rpc-portmap

要求protocol语句具有值udptcp或 。需要一个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。

互联网控制信息协议 (ICMP)

icmp

要求 protocol 语句具有值 icmp 或未指定。

互联网 ORB 间协议

iiop

IP

ip

登录信息

login

NetBIOS

netbios

要求 protocol 语句具有值 udp 或未指定。需要一个 destination-port 值。

NetShow

netshow

要求 protocol 语句具有值 tcp 或未指定。需要一个 destination-port 值。

点对点隧道协议

pptp

真实音频

realaudio

实时流协议 (RTSP)

rtsp

要求 protocol 语句具有值 tcp 或未指定。需要一个 destination-port 值。

RPC 用户数据报协议 (UDP) 或 TCP

rpc

要求protocol语句具有值udptcp或 。需要一个rpc-program-number值。不能指定destination-portsource-port值。

RPC 端口映射

rpc-portmap

要求protocol语句具有值udptcp或 。需要一个destination-port值。

外壳

shell

要求 protocol 语句具有值 tcp 或未指定。需要一个 destination-port 值。

会话启动协议

sip

SNMP

snmp

要求 protocol 语句具有值 udp 或未指定。需要一个 destination-port 值。

SQLNet

sqlnet

要求protocol语句具有值tcp或未指定。需要或destination-portsource-port值。

讲座节目

talk

追踪路由

traceroute

要求 protocol 语句具有值 udp 或未指定。需要一个 destination-port 值。

简单 FTP (TFTP)

tftp

要求 protocol 语句具有值 udp 或未指定。需要一个 destination-port 值。

WinFrame

winframe

注意:

当在同一服务集中配置了两次 NAT 时,您可以根据状态防火墙、NAT 或 CoS 规则为 ICMP 和跟踪路由配置应用级网关 (ALG)。这些 ALG 不能应用于由数据包网关控制器协议 (PGCP) 创建的流。两次 NAT 不支持任何其他 ALG。NAT 仅应用 IP 地址和 TCP 或 UDP 报头,不应用有效负载。

有关配置两次 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-protocol icmp

ICMPv6

icmp6

需要值 application-protocol icmp

互联网组管理协议 (IGMP)

igmp

IP 中的 IP

ipip

OSPF

ospf

协议无关组播 (PIM)

pim

资源预留协议 (RSVP)

rsvp

TCP

tcp

需要 或 source-port 值,destination-port除非指定 application-protocol rcpdce-rcp

UDP

udp

需要 或 source-port 值,destination-port除非指定 application-protocol rcpdce-rcp

有关可能数值的完整列表,请参阅 RFC 1700,分配的编号(适用于互联网协议套件)。

注意:

在应用定义中,不支持 IP 版本 6 (IPv6) 作为网络协议。

默认情况下,两次 NAT 功能会影响嵌入在 ICMP 错误消息有效负载中的 IP、TCP 和 UDP 报头。您可以将 and protocol udpprotocol tcp句与应用程序语句一起包含在两次 NAT 配置中。有关配置两次 NAT 的详细信息,请参阅 Junos Address Aware 网络寻址概述

配置 ICMP 代码和类型

ICMP 代码和类型与网络协议一起为应用定义中的数据包匹配提供了附加规范。要配置 ICMP 设置,请在层次结构级别包括 icmp-code [edit applications application application-name] and icmp-type 语句:

您只能包含一个 ICMP 代码和类型值。语句的 application-protocolicmp必须为 。 表 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)、(0)、 redirect-for-tos-and-host redirect-for-network (3)、 redirect-for-tos-and-net (2)

超时: 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 match 语句一起指定,以确定端口上正在使用的协议。有关更多信息,请参阅路由 策略、防火墙过滤器和流量监管器用户指南

可以指定以下文本同义词之一来代替数值(字段值也会列出): 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)、(11)、 timestamp time-exceeded (13)、 timestamp-reply (14) 或 unreachable (3)。

注意:

如果为接口配置了包含拒绝作的输入防火墙过滤器和包含状态防火墙规则的服务集,则在对数据包运行状态防火墙规则之前,路由器将先执行输入防火墙过滤器。因此,当数据包转发引擎通过接口发出 ICMP 错误消息时,状态防火墙规则可能会丢弃该数据包,因为在输入方向上看不到该数据包。

可能的变通方法是包括一个转发表过滤器来执行拒绝作(因为这种类型的过滤器是在输入方向的状态防火墙之后执行的),或者包括一个输出服务过滤器,以防止本地生成的 ICMP 数据包进入状态防火墙服务。

配置源端口和目标端口

TCP 或 UDP 源端口和目的端口与网络协议一起,为应用定义中的数据包匹配提供了附加规范。要配置端口,请在[edit applications application application-name]层次结构级别包括 destination-port and source-port 语句:

您必须定义一个源端口或目标端口。通常,将此匹配与 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 系列路由器上的 Junos VPN Site Secure IPsec 功能套件不支持网络地址转换遍历 (NAT-T)。IKE ALG 允许在不符合 NAT-T 的 IPsec 对等方之间通过 NAPT-44 和 NAT64 过滤器传递 IKEv1 和 IPsec NAT 数据包。此 ALG 仅支持 ESP 隧道模式。您可以使用预定义的 IKE ALG 应用程序,该应用程序 junos-ike具有目标端口 (500)、非活动超时(30 秒)、门超时(120 秒)和 ESP 会话空闲超时(800 秒)的预定义值。如果想要使用与预定义 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) 是一种通用协议,用于在电话、传真、视频会议、即时消息和文件交换等 Internet 服务中涉及的端点之间进行通信。

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,请在层次结构级别上配置该application-protocol语句,其中包含值 sip[edit applications application application-name]有关此语句的详细信息,请参阅配置应用程序协议。此外,您还可以配置另外两个语句来修改 SIP 的实现方式:

  • 您可以使路由器接受 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 地址将转换回私有地址,并将消息路由到私有子网中的相应主机。

将 NAT 与会话启动协议 (SIP) 服务一起使用更为复杂,因为 SIP 消息在 SIP 报头和 SIP 正文中都包含 IP 地址。将 NAT 与 SIP 服务一起使用时,SIP 报头包含有关呼叫方和接收方的信息,设备会转换此信息以对外部网络隐藏该信息。SIP 正文包含会话描述协议 (SDP) 信息,其中包括用于传输介质的 IP 地址和端口号。设备转换 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 标头字段中的信息协商的动态分配端口上的设备。针孔还允许传入数据包到达接触、通过和记录路由 IP 地址和端口。处理返回流量时,ALG 会将原始联系人、Via、路由和记录路由 SIP 字段插入回数据包中。

来电

传入呼叫从公共网络发起到公共静态 NAT 地址或设备上的接口 IP 地址。静态 NAT 是静态配置的指向内部主机的 IP 地址;接口 IP 地址由 ALG 动态记录,因为它会监控内部主机发送到 SIP 注册器的 REGISTER 消息。当设备收到传入的 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 消息时,它会像转换任何其他消息一样转换标头字段。但是,由于接收方必须通过 200 OK 确认 BYE 消息,因此 ALG 会将呼叫拆解延迟五秒钟,以便有时间传输 200 OK。

呼叫重新邀请消息

重新邀请消息可将新的媒体会话添加到呼叫中并删除现有媒体会话。将新的媒体会话添加到呼叫中时,防火墙中将打开新的针孔并创建新的地址绑定。该过程与原始呼叫设置相同。从呼叫中删除一个或多个媒体会话时,针孔将关闭并释放绑定,就像使用 BYE 消息一样。

呼叫会话计时器

如果未收到 Re-INVITE 或 UPDATE 消息,SIP ALG 使用 Session-Expires 值使会话超时。ALG 从对 INVITE 的 200 OK 响应中获取 Session-Expires 值(如果存在),并使用此值发出超时信号。如果 ALG 在会话超时之前收到另一个 INVITE,它会将所有超时值重置为此新的 INVITE 或默认值,并重复该过程。

作为预防措施,SIP ALG 使用硬超时值来设置呼叫可以存在的最长时间。这可确保在发生以下事件之一时设备受到保护:

  • 终端系统在呼叫期间崩溃,未收到 BYE 消息。

  • 恶意用户从不发送 BYE 试图攻击 SIP ALG。

  • SIP 代理的不良实现无法处理 Record-Route,并且从不发送 BYE 消息。

  • 网络故障会阻止接收 BYE 消息。

呼叫取消

任何一方都可以通过发送 CANCEL 消息来取消呼叫。收到 CANCEL 消息后,SIP ALG 会关闭通过防火墙的针孔(如果有)并释放地址绑定。在释放资源之前,ALG 会将控制通道老化延迟大约五秒,以便为最终的 200 OK 留出时间。当 5 秒超时到期时,呼叫将终止,无论是否有 487 或非 200 响应到达。

分叉

分叉使 SIP 代理能够同时向多个目的地发送单个 INVITE 消息。当单个呼叫收到多条 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:

通过:

请求 URI:

将 ALG 地址替换为本地地址

联系方式:

记录路由:

路线:

出站响应

(从私有到公立)

自:

将 ALG 地址替换为本地地址

从:

呼叫 ID:

通过:

请求 URI:

不适用

联系方式:

将本地地址替换为 ALG 地址

记录路由:

将本地地址替换为 ALG 地址

路线:

出站请求

(从私有到公立)

自:

从:

将本地地址替换为 ALG 地址

呼叫 ID:

通过:

将本地地址替换为 ALG 地址

请求 URI:

联系方式:

将本地地址替换为 ALG 地址

记录路由:

将本地地址替换为 ALG 地址

路线:

将 ALG 地址替换为本地地址

出站响应

(从公立到私立)

自:

从:

将 ALG 地址替换为本地地址

呼叫 ID:

通过:

将 ALG 地址替换为本地地址

请求 URI:

不适用

联系方式:

记录路由:

将 ALG 地址替换为本地地址

路线:

将 ALG 地址替换为本地地址

SIP 正文

SIP 正文中的 SDP 信息包括 ALG 用于为媒体流创建信道的 IP 地址。SDP 部分的转换还会分配资源,即用于发送和接收介质的端口号。

以下示例 SDP 部分的摘录显示了为资源分配而转换的字段。

SIP 消息可以包含多个媒体流。其概念类似于将多个文件附加到电子邮件中。例如,从 SIP 客户端发送到 SIP 服务器的 INVITE 消息可能具有以下字段:

Junos OS 支持为每个方向协商多达 6 个 SDP 通道,因此每次调用总共 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 结合使用。 将导致错误。这不适用于新一代服务。

  • MS-MPC 不支持 IPv6 信令数据,但新一代服务支持。

  • 不支持身份验证。

  • 不支持加密消息。

  • MS-MPC 不支持 SIP 分段,但新一代服务支持。

  • 假定包含 SIP 消息的最大 UDP 数据包大小为 9 KB。不支持大于此的 SIP 消息。

  • 假设 SIP 消息中的最大介质通道数为 6。

  • 关键字段中不支持完全限定域名 (FQDN)。

  • 不支持 QoS。SIP 支持 DSCP 重写。

  • 不支持高可用性,热备用除外。

  • SIP 或 NAT 不支持超时设置为“永不”。

  • 不支持组播(分叉代理)。

配置 SNMP 命令进行数据包匹配

您可以为数据包匹配指定 SNMP 命令设置。要配置 SNMP,请在层次结构级别包含[edit applications application application-name]snmp-command语句:

支持的值为 get、 、 get-nextsettrap。您只能配置一个匹配值。application-protocol层级的[edit applications application application-name]语句必须具有值 snmp。有关指定应用程序协议的信息,请参阅配置应用程序协议

配置 RPC 程序编号

您可以指定一个 RPC 程序号进行数据包匹配。要配置 RPC 程序编号,请在层次结构级别包含[edit applications application application-name]rpc-program-number语句:

用于 DCE 或 RPC 的值范围为 100,000 到 400,000。 application-protocol 层级的 [edit applications application application-name] 语句必须具有值 rpc。有关指定应用程序协议的信息,请参阅 配置应用程序协议

配置 TTL 阈值

您可以指定追踪路由生存时间 (TTL) 阈值,用于控制追踪路由可接受的网络渗透级别。要配置 TTL 值,请在层次结构级别包含[edit applications application application-name]ttl-threshold语句:

application-protocol层级的[edit applications application application-name]语句必须具有值 traceroute。有关指定应用程序协议的信息,请参阅配置应用程序协议

配置通用唯一标识符

您可以为 DCE RPC 对象指定通用唯一标识符 (UUID)。要配置 UUID 值,请在层次结构级别包含[edit applications application application-name]以下uuid语句:

uuid 值采用十六进制表示法。 application-protocol 层级的 [edit applications application application-name 语句必须具有值 dce-rpc。有关指定应用程序协议的信息,请参阅 配置应用程序协议。有关 UUID 编号的更多信息,请参阅 http://www.opengroup.org/onlinepubs/9629399/apdxa.htm

配置应用程序集

您可以通过在层次结构级别包含[edit applications]该语句以及每个应用程序的application语句,将application-set已定义的应用程序分组到命名对象中:

有关典型应用程序集的示例,请参阅 示例:配置应用程序协议

示例:配置应用协议

以下示例显示了描述在端口 78 上运行的特殊 FTP 应用程序的应用程序协议定义:

以下示例显示了 8 类(ICMP 回显)的特殊 ICMP 协议 (application-protocol icmp):

以下示例显示了一个可能的应用程序集:

该软件包括一组预定义的众所周知的应用协议。该集包括无状态防火墙过滤器已识别其 TCP 和 UDP 目的端口的应用。

验证 ALG 会话的输出

本节包含 ALG 会话成功输出的示例以及有关系统日志配置的信息。您可以比较会话结果,以检查配置是否正常运行。

FTP 示例

此示例分析活动 FTP 会话期间的输出。它由四种不同的流组成;两个是控制流,两个是数据流。该示例由以下部分组成:

示例输出

MS-MPC 卡

对于 MS-MPC,以下是作模式命令的完整 show services stateful-firewall conversations application-protocol ftp 示例输出:

对于每个流量,第一行显示流量信息,包括协议 (TCP)、源地址、源端口、目标地址、目标端口、流量状态、方向和帧计数。

  • 流的状态可以是 Watch、 或 ForwardDrop

    • 流状态表示 Watch ALG 监控控制流以获取有效负载中的信息。根据需要对标头和有效负载执行 NAT 处理。

    • 流在 Forward 转发数据包时不监控有效负载。根据需要对标头执行 NAT。

    • Drop流会丢弃与 5 元组匹配的任何数据包。

  • 帧计数 (Frm count) 显示该流上处理的数据包数。

第二行显示 NAT 信息。

  • source 表示源 NAT。

  • dest 表示目标 NAT。

  • NAT 行中的第一个地址和端口是要为该流转换的原始地址和端口。

  • NAT 行中的第二个地址和端口是该流的转换地址和端口。

MX-SPC3 卡

在 MX-SPC3 服务卡上,以下是作模式命令的完整 show services sessions application-protocol ftp 示例输出:

对于每个会话:

  • 第一行显示流信息,包括会话 ID、服务集名称、策略名称、会话超时、逻辑系统名称及其状态。

  • 第二行 Resource information表示会话由 ALG 创建,包括 ALG 名称 (FTP ALG) 和 ASL 组 ID(1)和 ASL 资源 ID(控制会话为 0,数据会话为 1)。

  • 第三行In为正向流,第四行Out为逆向流,包括源地址、源端口、目标地址、目标端口、协议 (TCP)、会话连接标记、接口的Out传入In和传出、接收的帧数和字节数。根据需要对标头执行 NAT。

FTP 系统日志消息

系统日志消息在 FTP 会话期间生成。有关系统日志的详细信息,请参阅 系统日志消息

MS-MPC 卡

在创建 FTP 控制流期间,将生成以下系统日志消息:

  • 规则接受系统日志:

  • 创建接受流系统日志:

  • 用于创建数据流的系统日志:

MX-SPC3 卡

在创建 FTP 控制流期间,将生成以下系统日志消息:

  • 用于创建 FTP 控制会话的系统日志:

  • 用于创建 FTP 数据会话的系统日志:

  • FTP 数据会话销毁的系统日志:

  • 用于 FTP 控制会话销毁的系统日志:

分析

控制流
MS-MPC 卡

控制流将在三次握手完成后建立。

  • 控制从 FTP 客户端到 FTP 服务器的流量。TCP 目标端口为 21。

  • 控制从 FTP 服务器到 FTP 客户端的流量。TCP 源端口为 21。

MX-SPC3 卡

控制流将在三次握手完成后建立。

  • 控制从 FTP 客户端到 FTP 服务器的会话,TCP 目标端口为 21。

  • 从 FTP 客户端到 FTP 服务器的数据会话,它适用于 FTP 被动模式。

  • 从 FTP 服务器到 FTP 客户端的数据会话,它适用于 FTP 活动模式:

数据流

在 FTP 控制协议过程中,将协商 20 个数据端口以进行数据传输。这两个流是 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 流。应该有两个流,每个方向一个,从客户端到服务器,从服务器到客户端:

  • 发起器流的 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 与接受规则匹配:

有关系统日志消息的完整列表,请参阅 系统日志资源管理器