Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

为新一代服务配置应用程序属性

要配置应用程序属性,请在 application 层次结构级别添加语句 [edit applications]

您可以通过配置 application-set 语句对应用程序对象进行分组;有关更多信息,请参阅 配置应用程序集

本节包括以下配置应用程序的任务:

配置应用程序协议

application-protocol 语句允许您指定要配置哪些受支持的应用程序协议 (ALG) 并将其包含在应用程序集中以用于服务处理。要配置应用程序协议,请在 application-protocol 层级添加语句 [edit applications application application-name]

表 1 显示了新一代服务支持的协议列表。有关特定协议的更多信息,请参阅 ALG 说明

表 1:服务接口支持的应用程序协议

协议名称

CLI 值

评论

Bootstrap 协议 (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

exec

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

Ftp

ftp

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

H.323

h323

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

icmp

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

Ip

ip

登录

login

NetBIOS

netbios

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

NetShow

netshow

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

RealAudio

realaudio

实时流协议 (RTSP)

rtsp

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

注意:

在同一服务集中配置两次 NAT 时,您可以为 ICMP 和跟踪路由配置应用程序级网关 (ALG)。这些 ALG 不能应用于数据包网关控制器协议 (PGCP) 创建的流。两次 NAT 不支持任何其他 ALG。NAT 仅应用 IP 地址和 TCP 或 UDP 标头,但不会应用有效负载。

有关配置两次 NAT 的详细信息,请参阅 Junos Address Aware 网络寻址概述

配置网络协议

protocol 语句允许您指定在应用程序定义中匹配哪些受支持的网络协议。要配置网络协议,请在 protocol 层级添加语句 [edit applications application application-name]

您将协议类型指定为数值;对于更常用的协议,命令行界面 (CLI) 中也支持文本名称。 表 2显示了受支持的协议列表。

表 2:新一代服务支持的网络协议

网络协议类型

CLI 值

评论

外部网关协议 (EGP)

egp

通用路由封装 (GR)

gre

Icmp

icmp

application-protocol需要的值icmp

ICMPv6

icmp6

application-protocol需要的值icmp

互联网组管理协议 (IGMP)

igmp

Tcp

tcp

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

Udp

udp

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

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

注意:

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

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

配置 ICMP 代码和类型

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

您只能包含一个 ICMP 代码和类型值。语句 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)

时间超过: 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 (6)、 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

通常,您随 match 语句一起 protocol 指定此匹配,以确定端口上使用哪个协议。有关更多信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南

您可以指定以下文本同义词之一(字段值也列出): echo-reply (0)、(8)、 echo-request (16)、 info-request info-reply (15)、 mask-request (17)、(18)、 mask-reply (12)、 parameter-problem (5)、 redirect (9)、 router-advertisement router-solicit (10)、 source-quench (4)、 time-exceeded (11)、 timestamp (13)、 timestamp-reply (14)或 unreachable (3)。

注意:

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

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

配置源端口和目标端口

TCP 或 UDP 源和目标端口为应用程序定义中的数据包匹配提供了额外的规范,并结合网络协议。要配置端口,请在 destination-port 层级添加和 source-port 语句 [edit applications application application-name]

您必须定义一个源端口或目标端口。通常,您随 match 语句一起 protocol 指定此匹配,以确定端口上使用哪个协议。

您可以指定一个数值或 表 4 列出的文本同义词之一。

表 4:新一代服务支持的端口名称

端口名称

相应的端口号

snmp

161

snmptrap

162

有关匹配标准的更多信息,请参阅 路由策略、防火墙过滤器和流量监管器用户指南

配置不活动超时期限

您可以为不活动的应用程序指定超时期限。如果软件在持续时间内未检测到任何活动,则流将在计时器过期时变为无效。要配置超时时间,请在 inactivity-timeout 层次结构级别添加语句 [edit applications application application-name]

默认值为 14,400 秒。为应用程序配置的值将覆盖在 [edit interfaces interface-name service-options] 层次结构级别上配置的任何全局值;有关更多信息,请参阅 为服务接口配置默认超时设置

配置 SIP

会话初始化协议 (SIP) 是一种通用协议,用于处理电话、传真、视频会议、即时消息传送和文件交换等互联网服务涉及的端点之间的通信。

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]sip配置application-protocol语句。此外,您还可以配置另外两个语句来修改 SIP 的实现方式:

  • 您可以让路由器接受 NAT 防火墙后面的端点设备的任何传入 SIP 呼叫。当防火墙后面的设备向防火墙外部的代理注册时,AS 或多服务 PIC 将保留注册状态。启用语句 learn-sip-register 后,路由器可以使用此信息接受入站呼叫。如果未配置此语句,则不会接受任何入站呼叫;只有防火墙背后的设备才能呼叫防火墙外部的设备。

    要配置 SIP 注册,请在 learn-sip-register 层次结构级别添加语句 [edit applications application application-name]

    注意:

    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。

    要配置超时时间,请在 sip-call-hold-timeout 层次结构级别添加语句 [edit applications application application-name]

    默认值为 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 地址和端口号。对于传入消息,防火墙的公共地址将替换为客户端的专用地址。

当通过防火墙发送邀请消息时,SIP 应用层网关 (ALG) 会将信息从消息标头收集到呼叫表中,并使用该表将后续消息转发到正确的端点。当收到新消息时,例如 ACK 或 200 OK,ALG 会将“发件人:、To:和 Call-ID:”字段与呼叫表进行比较,以识别消息的呼叫上下文。如果到达的新邀请消息与现有呼叫匹配,ALG 将其作为 REINVITE 进行处理。

当收到包含 SDP 信息的消息时,ALG 会分配端口,并在端口与 SDP 中的端口之间创建 NAT 映射。由于 SDP 需要连续端口来提供实时传输协议 (RTP) 和实时控制协议 (RTCP) 通道,因此 ALG 提供连续的奇数端口。如果找不到一对端口,它将丢弃 SIP 消息。

本主题包含以下部分:

传出电话

当使用 SIP 请求消息从内部到外部网络发起 SIP 呼叫时,NAT 将替换 SDP 中的 IP 地址和端口号,并将 IP 地址和端口号绑定到瞻博网络防火墙。通过、联系人、路由和记录路由 SIP 标头字段(如果存在)也绑定到防火墙 IP 地址。ALG 存储这些映射,用于重新传输和 SIP 响应消息。

然后,SIP ALG 会在防火墙中打开针孔,以允许媒体通过根据 SDP 以及“通过”、“联系人”和“记录路由”标头字段中的信息协商的动态分配端口上的设备。针孔还允许传入数据包到达联系人、通过和记录路由 IP 地址和端口。处理返回流量时,ALG 将原始“联系人”、“通过”、“路由”和“记录路由”SIP 字段重新插入数据包中。

来电

从公共网络向公共静态 NAT 地址或设备上的接口 IP 地址发起来电。静态 NAT 是静态配置的 IP 地址,指向内部主机;接口 IP 地址由 ALG 动态记录,因为它监控内部主机发送到 SIP 注册商的 REGISTER 消息。当设备收到传入的 SIP 数据包时,它会设置一个会话,并将数据包的有效负载转发到 SIP ALG。

ALG 检查 SIP 请求消息(最初是邀请),并根据 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 地址和端口号不会从上一次邀请更改—如果是,ALG 会删除旧针孔,并创建新的针孔以允许媒体通过。ALG 还会监控“通过”、“联系人”和“记录路由”SIP 字段,并在确定这些字段发生变化时打开新的针孔。

转接电话

例如,转发的呼叫是指网络外部的用户 A 呼叫网络内的用户 B,而用户 B 将呼叫转发给网络外部的用户 C。SIP ALG 将来自用户 A 的邀请作为正常的传入呼叫进行处理。但是,当 ALG 检查网络外从 B 到 C 的转接电话并注意到 B 和 C 使用同一接口到达时,它不会打开防火墙中的针孔,因为媒体将直接在用户 A 和用户 C 之间流动。

呼叫终止

BYE 消息将终止呼叫。设备收到 BYE 消息时,会像转换任何其他消息一样,转换标头字段。但是,由于 BYE 消息必须由接收方以 200 OK 进行确认,因此 ALG 会延迟呼叫拆解 5 秒,以便有时间传输 200 OK。

呼叫重新邀请消息

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

呼叫会话计时器

如果未收到重新邀请或更新消息,SIP ALG 使用会话到期值来超时会话。ALG 获取从邀请的 200 OK 响应中的会话到期值(如果存在),并使用此值发出超时信号。如果 ALG 在会话超时之前收到其他邀请,则会将所有超时值重置为此新邀请或默认值,并重复此过程。

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

  • 呼叫期间结束系统崩溃,无法接收 BYE 消息。

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

  • SIP 代理实施不当无法处理记录路由,从不发送 BYE 消息。

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

呼叫取消

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

分 叉

通过分片,SIP 代理可以同时向多个目标发送一条邀请消息。当单个呼叫的多个 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 表请求消息

入站请求

(从公共到私有)

自:

用本地地址替换域

从:

没有

呼叫 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 服务器的邀请消息可能包含以下字段:

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 信令数据,但新一代服务支持 IPv6 信令数据。

  • 不支持身份验证。

  • 不支持加密消息。

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

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

  • 一条 SIP 消息中媒体通道的最大数量假定为 6。

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

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

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

  • SIP 或 NAT 不支持从不的超时设置。

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

为数据包匹配配置 SNMP 命令

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

支持的值包括 get、、get-nextsettrap。您只能配置一个值进行匹配。application-protocol层次结构级别的语句[edit applications application application-name]必须具有值snmp