Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SIP ALG

总结 会话初始化协议 (SIP) 是一种信号协议,用于在互联网上启动、修改和终止多媒体会话。SIP 支持单媒体和多媒体会话。

了解 SIP ALG

会话初始化协议 (SIP) 是一种互联网工程任务组 (IETF) 标准协议,用于在互联网上启动、修改和终止多媒体会话。此类会话可能包括会议、电话或多媒体,以及网络环境中的即时消息传递和应用程序级移动性等功能。

Junos OS 支持 SIP 即服务,允许和拒绝它基于您配置的策略。SIP 是 Junos OS 中的预定义服务,使用端口 5060 作为目标端口。

SIP 的一项功能是分发会话说明信息,并在会话期间分发,以协商和修改会话的参数。SIP 还用于终止多媒体会话、建立呼叫信号、提供故障指示并提供端点注册方法。

会话说明信息包含在 INVITE 和 200-OK 消息或 200-OK 和 ACK 消息中,并指示会话的多媒体类型:例如,无论是语音还是视频尽管 SIP 可以使用不同的描述协议来描述会话,但瞻博网络 SIP 应用层网关 (ALG) 仅支持会话描述协议 (SDP)。

SDP 提供系统可用于加入多媒体会话的信息。SDP 可能包含 IP 地址、端口号、时间和日期等信息。请注意,SDP 报头中的 IP 地址和端口号(分别是 c= 和 m= 字段)是客户端想要接收媒体流的地址和端口,而不是 SIP 请求发起的 IP 地址和端口号(尽管它们可以是相同的)。

SIP 消息包括从客户端到服务器的请求,以及针对服务器到客户端的请求的响应,目的是建立会话(或呼叫)。用户代理 (UA) 是在呼叫端点运行且由两部分组成的应用程序:

  • 用户代理客户端 (UAC),代表用户发送 SIP 请求

  • 用户代理服务器 (UAS),用于侦听响应并在用户到达时通知其

UAC 和 UAS 的定义与特定代理在谈判中扮演的角色有关。

UA 的示例包括 SIP 代理服务器和电话。

本主题包含以下部分:

SIP ALG 运维

有两种类型的 SIP 流量、信号和媒体流。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、端口、传输地址和协议时会创建一个针孔,这些 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 设备执行某种形式的 cone-NAT),允许客户端确定已转换的地址,并在 SDP 消息中使用新发现的地址。

有条件支持 NEC SIP 产品。

SDP 会话说明

SDP 会话说明是定义明确的格式,用于传达足够的信息来发现和参与多媒体会话。会话由一系列属性/值对(每行一个)描述。属性名称是单个字符,其次是 =和值。可选值使用 =*指定。值要么是 ASCII 字符串,要么是按空格分隔的一系列特定类型。属性名称仅在相关语法结构中唯一,例如在会话、时间或介质中。

注意:

在 SDP 会话说明中,媒体级信息从 m= 字段开始。

在 SDP 说明的许多字段中,有两个字段对 SIP ALG 特别有用,因为它们包含传输层信息。

  • c= 以获取连接信息

    此字段可显示在会话或媒体级别。以这种格式显示:

    c=<网型><地址类型><连接地址>

    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><传输><fmt 列表>

    目前,Junos OS 支持将“RTP”作为应用层传输协议。端口号表示媒体流的目标端口(源由远程 UA 分配)。格式列表 (fmt 列表) 提供有关介质使用的应用程序层协议的信息。

    该软件仅为 RTP 和实时控制协议 (RTCP) 打开端口。每个 RTP 会话都有一个对应的 RTCP 会话。因此,每当媒体流使用 RTP 时,SIP ALG 都必须为 RTP 和 RTCP 流量保留端口(创建插孔)。默认情况下,RTCP 的端口号高于 RTP 端口号。

针孔创建

每个插孔(一个用于 RTP 流量,另一个用于 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 信号针孔永远不会老化,与 RTP 或 RTCP 针孔不同,其中仅指定目标 IP 和目标端口。

如果需要,SIP ALG 会为以下标头打开信号针孔:

  • 通过

  • 联系

  • 路线

  • 记录路由

SIP ALG 需要以下信息才能创建针孔。此信息来自 SDP 会话说明或 SIP 报头(如上文所列)。

  • 协议 — UDP 或 TCP。

  • 源 IP — 未知。

  • 源端口 - 未知。

  • 目标 IP — 解析器从介质或会话级别的 c= 字段提取目标 IP 地址。

  • 目标端口 — 解析器从介质级别的 m= 字段提取 RTP 的目标端口号,然后使用以下公式计算 RTCP 的目标端口号:

    RTP 端口号 + 一个

  • 生存期 — 此值表示一个针孔打开以允许数据包通过的时间长度(以秒为单位)。数据包必须在生存期过期前通过针孔。当生存期到期时,SIP ALG 将移除针孔。

    当数据包在使用生命周期内进入针孔时,随后 SIP ALG 会立即移除数据包来自的方向的针孔。

    图 1 描述了两个 SIP 客户端之间的呼叫设置,以及 SIP ALG 如何创建插孔以允许 RTP 和 RTCP 流量。插图假设设备具有允许 SIP 的策略,从而为 SIP 信号消息打开端口 5060。

    图 1:SIP ALG 呼叫设置 SIP ALG Call Setup
注意:

当目标 IP 地址为 0.0.0.0.0 时,SIP ALG 不会为 RTP 和 RTCP 流量创建针孔,表示会话已搁置。例如,要在电话通信期间暂停会话,客户端 A 会向客户端 B 发送一条 SIP 消息,其中的目标 IP 地址为 0.0.0.0。这样做向客户 B 表示,在另行通知之前,不应发送任何媒体。如果客户端 B 无论如何发送介质,设备将丢弃数据包。

了解 IPv6 对 SIP ALG 的支持

SIP ALG 支持 IPv6 以及 NAT-PT 模式和 NAT64 地址转换。

SIP ALG 处理 IPv6 地址的方式与处理 IPv4 地址的方式相同,以便在为将来的流量配置 NAT 并打开插孔时更新有效负载。

特殊处理以以下格式进行:

  • IPv6 in SIP URIs—SIP URI 看起来与带 IPv4 地址的 URI 相同。与所有 ULI 一样,IPv6 地址包含在方形托架中。IPv6 地址块由结肠分隔。在许多名称中,一个冒号会将主机名或 IP 地址与协议端口分隔开来。要解析完整的 IPv6 地址并分离端口,地址封装在方形托架内

  • IPv6 in SDP—会话说明协议 (SDP) 中的 IPv6 地址具有 IP6 标记。

  • 支持 IPv6 的 SIP ALG 具有以下限制:

    • 实施具有持久 NAT 的 NAT64 时,如果在记录地址 (AOR) 上配置了 NAT,SIP ALG 会将 NAT 转换添加到持久 NAT 绑定表中。由于持久 NAT 无法复制配置的地址,因此不支持同一地址上配置的 NAT66 和 NAT64 共存。

      仅为同一源 IP 地址创建一个绑定。

了解基于 UDP 的 SIP ALG 的“忙碌灯场支持”扩展

忙灯字段 (BLF) 是 IP 电话上的灯,表示连接到同一专用分支机构交换 (PBX) 的另一个扩展是否繁忙。您可以使用 Web 界面手动配置 BLF。配置 BLF 时,手机将订阅 IP PBX 上可用的资源列表,以通知其他扩展的状态信息。BLF 通过会话初始化协议 (SIP) 工作,并使用 SUBSCRIBE 和通知消息。通常,手机是订阅者,IP PBX 是信息符。

当手机注册到 IP PBX 时,IP PBX 会通知资源列表状态的手机。例如,如果资源列表巨大,通知消息的主体也将是巨大的。由于 SIP ALG 仅支持 3000 字节 SIP 消息,因此可以绕过巨大的通知消息。如果消息体中 BLF 实例太多,则有效负载不会更改,并且不会打开大门。

从 Junos OS 12.3X48-D15 版和 Junos OS 17.3R1 版开始,SIP ALG 在 UDP 协议上支持 65,000 字节 SIP 消息。在扩展 BLF 应用程序中,如果每个实例大约为 500 字节,SIP ALG 在一条 SIP UDP 消息中支持 100 个实例。

基于 UDP 的 SIP ALG 的 BLF 支持包括以下功能:

  • 设备可发送和接收 65,000 字节 SIP 消息。

  • SIP ALG 可以解析 65,000 字节 SIP 消息,并在必要时打开针孔。

  • 如果配置了 NAT 并更改了有效负载,SIP ALG 将重新生成新的巨型 SIP 消息。

了解 SIP ALG 请求方法

会话初始化协议 (SIP) 事务模型包含多个请求和响应消息,每个消息都包含一个 method 表示消息用途的字段。

Junos OS 支持以下方法类型和响应代码:

  • 邀请 — 用户发送邀请申请,邀请另一位用户参加会话。邀请请求的正文可以包含会话的说明。

  • ACK — 邀请发起方的用户发送 ACK 请求以确认对邀请请求的最终响应接收。如果原始邀请请求中未包含会话说明,则 ACK 请求必须包括在内。

  • 选项 — 用户代理 (UA) 获取有关 SIP 代理功能的信息。服务器将回应其支持的方法、会话描述协议和消息编码等信息。

  • BYE — 用户发送 BYE 请求放弃会话。来自任一用户的 BYE 请求会自动终止会话。

  • CANCEL — 用户发送 CANCEL 请求取消待定邀请请求。如果 SIP 服务器处理“邀请”在收到 CANCEL 之前已为邀请发送了最终响应,则 CANCEL 请求将无效。

  • 注册 — 用户向 SIP 注册器服务器发送注册申请,以通知其用户的当前位置。SIP 注册服务器会记录其在 REGISTER 请求中收到的所有信息,并将这些信息提供给任何尝试定位用户的 SIP 服务器。

  • 信息 — 用于在呼叫的信号路径上通信中会话信号信息。

  • 订阅 — 用于从远程节点请求当前状态和状态更新。

  • 通知 — 发送至通知订阅者订阅者订阅的状态更改。

  • 请参阅 — 使用请求中提供的联系信息,将接收方(由 Request-URI 标识)转至第三方。

    例如,如果专用网络中的用户 A 将公共网络中的用户 B 指的是同样位于专用网络中的用户 C,SIP 应用层网关 (ALG) 会为用户 C 分配新的 IP 地址和端口号,以便用户 B 可以联系用户 C。但是,如果用户 C 在注册商注册,其端口映射将存储在 ALG 网络地址转换 (NAT) 表中,并重新使用以执行转换。

  • 更新 — 用于打开针孔以获取新的或更新的 SDP 信息。Via:, From:, To:, Call-ID:, 联系人:, Route:和 Record-Route: 标头字段将进行修改。

  • 1xx、202、2xx、3xx、4xx、5xx、6xx 响应代码 — 用于指示交易的状态。标头字段将进行修改。

SIP ALG 配置概述

默认情况下,SRX 设备会禁用会话初始化协议应用层网关 (SIP ALG),如果需要,应使用 CLI 启用。在其他设备上,默认启用。要微调 SIP ALG 操作,请使用以下说明:

  1. 控制 SIP 呼叫活动。有关说明,请参阅 示例:设置 SIP ALG 呼叫持续时间和超时

  2. 保护 SIP 代理服务器免遭拒绝服务 (DoS) 泛滥攻击。有关说明,请参阅 示例:配置 SIP ALG DoS 攻击防御

  3. 当会话处于网络地址转换 (NAT) 模式和路由模式时,允许未知消息传递。有关说明,请参阅 示例:允许未知 SIP ALG 消息类型

  4. 适应专有 SIP 呼叫流。有关说明,请参阅 保留 SIP ALG 保留资源(CLI 过程)

了解 SIP ALG DoS 攻击防御

会话初始化协议 (SIP) 代理服务器处理通话的能力可能会受到重复的 SIP INVITE 请求的影响— 请求最初被拒绝。拒绝服务 (DoS) 保护功能允许您配置设备来监控 INVITE 请求和代理服务器回复。如果回复包含 3xx, 4xx 或 5xx 响应代码,而非 401、407、487 和 488 不是真正的故障响应,则不应阻止请求。请参阅 了解 SIP ALG 和 NAT。ALG 将请求的源 IP 地址和代理服务器的 IP 地址存储在一张表格中。随后,设备会根据此表检查所有 INVITE 请求,并且为了获得可配置的秒数(默认为 3),将丢弃与表中条目匹配的任何数据包。您可以配置设备来监控和拒绝所有代理服务器的重复邀请请求,或者通过指定目标 IP 地址来保护特定代理服务器。全球配置 SIP 攻击保护。

了解 SIP ALG 未知消息类型

此功能允许您指定设备如何处理未识别的会话初始化协议 (SIP) 消息。默认设置为丢弃未知(不支持)消息。

我们不建议允许未知消息,因为它们会损害安全性。但是,在安全测试或生产环境中,此命令可用于解决不同供应商设备的互操作性问题。允许未知 SIP 消息可帮助您实现网络运维,以便稍后可以分析 IP 语音 (VoIP) 流量,以确定为何会丢弃某些消息。未知 SIP 消息类型功能允许您配置设备以接受在网络地址转换 (NAT) 模式和路由模式中包含未知消息类型的 SIP 流量。

注意:

此选项仅适用于已接收的数据包,这些数据包标识为受支持的 VoIP 数据包。如果无法识别数据包,则数据包总是被丢弃。如果数据包被识别为受支持的协议,并且您已将设备配置为允许未知消息类型,则该消息将转发至无处理。

了解 SIP ALG 呼叫持续时间和超时

呼叫持续时间和超时功能让您可以控制会话初始化协议 (SIP) 呼叫活动,并帮助您管理网络资源。

通常,当其中一个客户端发送 BYE 或 CANCEL 请求时,呼叫将终止。SIP 应用层网关 (ALG) 拦截 BYE 或 CANCEL 请求,并移除该呼叫的所有媒体会话。可能存在阻止客户端在呼叫中发送 BYE 或 CANCEL 请求的原因或问题,例如电源故障。在这种情况下,通话可能会无限期地进行,从而占用设备上的资源。

呼叫可以有一个或多个语音通道。每个语音通道有两个会话(或两个媒体流),一个用于实时传输协议 (RTP) 流量,一个用于实时控制协议 (RTCP) 信号。在管理会话时,设备将每个语音通道中的会话视为一组。超时和通话时设置适用于组,而不是每个会话。

以下参数用于管理 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 计时器都可使用 t1 间隔扩展(如 RFC 3261 中所述),当您更改 t1 间隔计时器的值时,这些 SIP 计时器也会进行调整。

  • t4-interval—此参数指定消息保留在网络中的最大时间。默认为 5 秒,范围为 5 到 10 秒。由于许多 SIP 计时器都使用 t4 间隔扩展(如 RFC 3261 中所述),当您更改 t4 间隔计时器的值时,这些 SIP 计时器也会进行调整。

  • c-timeout—此参数在几分钟内指定了代理处的 INVITE 事务超时;默认值为 3。由于 SIP ALG 位于中间,SIP ALG 不会使用 INVITE 事务计时器值 B(即 (64 * T1) = 32 秒),因此 SIP ALG 从代理获取其计时器值。

了解 SIP ALG 持有资源

当用户暂缓呼叫时,会话初始化协议应用层网关 (SIP ALG) 将发布会话描述协议 (SDP) 媒体资源,例如针孔和转换上下文。用户恢复通话后,邀请请求消息将协商新的 SDP 优惠和答案,而 SIP ALG 将重新分配媒体流资源。即使媒体描述与之前的说明相同,也可为媒体说明提供新的已转换 IP 地址和端口号。这符合 RFC 3264 带有会话说明协议 (SDP) 的优惠/答案模型

某些专有 SIP 实施设计呼叫流,使用户代理 (UA) 模块忽略新的 SDP INVITE 优惠,并继续使用之前协商的 SDP 优惠。要容纳此功能,在恢复呼叫时,您必须配置设备以保留 SDP 媒体资源。

保留 SIP ALG 持有资源(CLI 过程)

要适应专有 SIP 呼叫流:

了解 SIP ALG 和 NAT

网络地址转换 (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 将与呼叫表对比“From:, To:, and Call-ID”字段,以识别消息的呼叫上下文。如果到达的新邀请消息与现有通话匹配,ALG 将将其处理为 REINVITE。

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

SIP ALG 支持 IPv6 以及 NAT-PT 模式和 NAT64 地址转换。

本主题包含以下部分:

传出通话

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

然后,SIP ALG 在防火墙中打开插孔,允许通过根据 SDP 和 Via、Contact 和记录路由标头字段中的信息协商的动态分配端口上的设备进行介质。针孔还允许传入数据包到达联系人、通过和记录路由 IP 地址和端口。处理回路信息流时,ALG 将原始联系人(通过、路由和记录路由 SIP 字段)插入数据包中。

来电

传入呼叫将从公共网络启动到公共静态 NAT 地址或设备上的接口 IP 地址。静态 NAT 是静态配置的 IP 地址,指向内部主机;接口 IP 地址由 ALG 动态记录,因为它监控内部主机发送至 SIP 注册器的注册消息。当设备收到传入的 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 地址和端口号不会从之前的 INVITE 中更改—如果是,ALG 将删除旧针孔并创建新的针孔,以允许媒体通过。ALG 还会监控 Via、Contact 和 Record-Route 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 使用硬超时值来设置呼叫可能存在的最大时间。这样可以确保在发生以下事件之一时,设备得到保护:

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

  • 恶意用户绝不会在尝试攻击 SIP ALG 时发送 BYE。

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

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

呼叫取消

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

分 叉

Forking 允许 SIP 代理同时向多个目标发送单条邀请消息。当单个呼叫到达多个 200 OK 响应消息时,SIP ALG 会解析但会更新其收到的前 200 条 OK 消息的呼叫信息。

SIP 消息

SIP 消息格式由 SIP 报头部分和 SIP 正文组成。在 request messages 中,报头部分的第一行是 request 行,其中包括方法类型、request-URI 和协议版本。在响应消息中,第一行是状态行,其中包含状态代码。SIP 标头包含 IP 地址和用于信号传输的端口号。SIP 正文通过空线从标头部分分离,保留用于会话说明信息,可选。Junos OS 目前仅支持 SDP。SIP 正文包含用于传输介质的 IP 地址和端口号。

SIP 报头

在以下示例 SIP 请求消息中,NAT 将替换标头字段中的 IP 地址,以将其隐藏在外部网络中。

IP 地址转换的执行方式取决于消息的类型和方向。消息可以是以下任何一条:

  • 入站请求

  • 出站响应

  • 出站请求

  • 入站响应

表 1 显示了在每个案例中如何执行 NAT。请注意,对于几个报头字段,ALG 决定的不仅仅是消息来自网络内部还是外部。它还必须确定发起呼叫的客户端,以及消息是请求还是响应。

表 1:使用 NAT 表请求消息

入站请求

(从公有到私有)

自:

用本地地址替换域

从:

没有

呼叫 ID:

没有

通过:

没有

Request-URI:

使用本地地址更换 ALG 地址

联系:

没有

记录路由:

没有

路线:

没有

出站响应

(从私有到公共)

自:

使用本地地址更换 ALG 地址

从:

没有

呼叫 ID:

没有

通过:

没有

Request-URI:

不适用

联系:

使用 ALG 地址替换本地地址

记录路由:

使用 ALG 地址替换本地地址

路线:

没有

出站请求

(从私有到公共)

自:

没有

从:

使用 ALG 地址替换本地地址

呼叫 ID:

没有

通过:

使用 ALG 地址替换本地地址

Request-URI:

没有

联系:

使用 ALG 地址替换本地地址

记录路由:

使用 ALG 地址替换本地地址

路线:

使用 ALG 地址替换本地地址

出站响应

(从公有到私有)

自:

没有

从:

使用本地地址更换 ALG 地址

呼叫 ID:

没有

通过:

使用本地地址更换 ALG 地址

Request-URI:

不适用

联系:

没有

记录路由:

使用本地地址更换 ALG 地址

路线:

使用本地地址更换 ALG 地址

SIP 正文

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

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

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

Junos OS 支持为每个方向协商最多 6 个 SDP 通道,每个呼叫总共 12 个通道。有关详细信息,请参阅 了解 SIP ALG

SIP NAT 场景

图 2图 3 显示 SIP 通话邀请和 200 OK。在 图 2 中,ph1 向 ph2 发送 SIP 邀请消息。请注意设备如何转换标头字段中的 IP 地址(如粗体字体中所示)。

INVITE 消息的 SDP 部分表示呼叫者愿意接收介质的位置。请注意,媒体插孔包含两个端口号,即 RTCP 和 RTP 的 52002 和 52003。Via/Contact Pinhole 提供用于 SIP 信号发送的端口号 5060。

观察图 3 中的 200 OK 响应消息如何逆转在 INVITE 消息中执行的转换。此消息中的 IP 地址不会被转换为公共地址,而是打开大门以允许媒体流访问专用网络。

图 2:SIP NAT 场景 1 SIP NAT Scenario 1
图 3:SIP NAT 场景 2 SIP NAT Scenario 2

SIP 响应类

SIP 响应提供有关 SIP 交易的状态信息,并包括响应代码和原因短语。SIP 响应分组到以下类:

  • 信息(100 至 199)— 收到请求,继续处理请求。

  • 成功(200 至 299)— 成功接收、理解和接受的操作。

  • 重定向 (300 到 399)— 完成请求所需的进一步操作。

  • 客户端错误(400 到 499)—请求包含错误语法或无法在此服务器上执行。

  • 服务器错误(500 到 599)— 服务器未能满足明显有效的请求。

  • 全局故障(600 到 699)—任何服务器都无法满足请求。

表 2 提供了当前 SIP 响应的完整列表。

表 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 支持 NAT66,就像 NAT44 一样。NAT66 (IPv6 NAT) 提供源 NAT 和静态 NAT 功能,类似于 NAT44 (IPv4 NAT)。

NAT-PT

网络地址转换协议转换 (NAT-PT) (RFC 2766) 是一种协议转换机制,允许 IPv6 和仅 IPv4 节点通过与协议无关的 IPv4 和 IPv6 数据报转换进行通信,无需会话的状态信息。

NAT-PT 由正常 NAT 从 IPv6 地址实施到 IPv4 地址,反之亦然。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 时,如果在记录地址上配置了 NAT,具有 IPv6 支持的 SIP ALG 会将 NAT 转换添加到永久 NAT 绑定表中。由于持久 NAT 无法复制配置的地址,因此不支持同一地址上配置的 NAT66 和 NAT64 共存。

仅为同一源 IP 地址创建一个绑定。

STUN 和 SIP ALG

面向 NAT (STUN) 的会话遍历实用程序 (STUN) 是使 VoIP 通过 NAT 和防火墙运行的解决方案。

以前,STUN 在没有 SIP ALG 的情况下工作过。这意味着,在配置了持久 NAT 时,SIP ALG 不涉及。

配置持久 NAT 时,STUN 可与涉及的 SIP ALG 和 SIP ALG 共存。

使用 SIP 注册和 NAT 了解传入 SIP ALG 呼叫支持

会话初始化协议 (SIP) 注册提供了一个发现功能,SIP 代理和位置服务器可通过此功能识别需要联系用户的位置或位置。用户通过向注册商发送注册邮件来注册一个或多个联系位置。REGISTER 消息中的 To and Contact 字段包含记录地址统一资源标识符 (URI) 和一个或多个联系 ULI,如 图 4 所示。注册在定位服务中创建绑定,将记录地址与联系人地址或地址相关联。

设备会监控传出的 REGISTER 消息,在这些地址上执行网络地址转换 (NAT),并将信息存储在传入 NAT 表中。然后,当从网络外部接收邀请消息时,设备使用传入 NAT 表来识别哪些内部主机将 INVITE 消息路由到。通过在设备出口接口上配置接口源 NAT 或 NAT 池,您可以利用 SIP 代理注册服务来允许传入呼叫。接口源 NAT 足以在小型办事处处理来电,而我们建议为更大的网络或企业环境设置源 NAT 池。

注意:

仅 SIP 和 H.323 服务支持使用接口源 NAT 或源 NAT 池的传入呼叫支持。对于传入呼叫,Junos OS 目前仅支持 UDP 和 TCP。域名解析目前也不受支持;因此,ULI 必须包含 IP 地址,如 图 4 所示。

图 4:使用 SIP Registrar Using the SIP Registrar

示例:设置 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 呼叫持续时间和媒体不活动超时:

  1. 选择 配置 >安全 >ALG

  2. 选择 SIP 选项卡。

  3. 在最大通话时长字段中,键入 600

  4. 在无效媒体超时字段中,输入 90

  5. 单击 OK 检查您的配置并将其保存为候选配置。

  6. 如果完成设备配置,请单击 Commit Options >Commit

逐步过程

要设置 SIP ALG 呼叫持续时间和媒体不活动超时:

  1. 配置 SIP ALG 呼叫时。

  2. 配置 SIP ALG 非活动媒体超时。

  3. 如果完成设备配置,请提交配置。

验证

要验证配置是否正常工作,请输入 show security alg sip 命令。

示例:配置 SIP ALG DoS 攻击防御

此示例说明如何配置 DoS 攻击保护功能。

要求

开始之前,请查看用于控制 SIP 呼叫活动的 DoS 攻击保护功能。请 参阅了解 SIP ALG DoS 攻击防御

概述

SIP 代理服务器处理通话的能力可能会受到重复 SIP INVITE 请求的影响—服务器最初拒绝的请求。借助 DoS 保护功能,您可以配置设备来监控 INVITE 请求和代理服务器回复。

在此示例中,设备配置为保护单个 SIP 代理服务器 (10.1.1.3) 免遭已拒绝服务的重复邀请请求。数据包被丢弃 5 秒,之后设备将恢复转发来自这些来源的“邀请”请求。

配置

程序

GUI 快速配置
逐步过程

要配置 SIP ALG DoS 攻击保护:

  1. 选择 Configure>Security>ALG

  2. 选择 SIP 选项卡。

  3. 在 Enable 攻击防御区域,单击 选择的服务器 选项。

  4. 在目标 IP 框中,输入 10.1.1.3 并单击 Add

  5. 单击 OK 检查您的配置并将其保存为候选配置。

  6. 如果完成设备配置,请单击 提交选项>Commit

逐步过程

要配置 SIP ALG DoS 攻击保护:

  1. 配置设备以保护单个 SIP 代理服务器。

    注意:

    SIP ALG 支持 IPv6 以及网络地址转换协议转换 (NAT-PT) 模式和 NAT64 地址转换。

    <定性 ip 地址的类型>从 IPv4 地址更改为 IP 前缀,以支持各种 IP 地址,相应地支持前缀以允许多个 IP 地址。

  2. 将设备配置为拒绝超时期。

  3. 如果完成设备配置,请提交配置。

验证

要验证配置是否正常工作,请输入 show security alg sip 命令。

示例:允许未知 SIP ALG 消息类型

此示例说明如何允许未知消息类型。

要求

开始之前,请查看设备如何处理未识别的 SIP 消息。查看 了解 SIP ALG 未知消息类型

概述

在此示例中,您可配置设备以 NAT 模式和路由模式在 SIP 流量中允许未知消息类型。默认设置为丢弃未知(不支持)消息。

配置

程序

GUI 快速配置
逐步过程

要允许未知 SIP ALG 消息类型:

  1. 选择 Configure>Security>ALG

  2. 选择 SIP 选项卡。

  3. 选择 “启用许可”NAT 应用 复选框。

  4. 选择 “启用许可证”路由 复选框。

  5. 单击 OK 检查您的配置并将其保存为候选配置。

  6. 如果完成设备配置,请单击 Commit Options>Commit

逐步过程

要允许未知 SIP ALG 消息类型:

  1. 配置设备以在 SIP 流量中允许未知消息类型。

  2. 如果完成设备配置,请提交配置。

验证

要验证配置是否正常工作,请输入 show security alg sip 命令。

示例:为传入 SIP 呼叫配置接口源 NAT

此示例说明如何在公共区域接口上配置源 NAT 规则,允许 NAT 用于传入 SIP 呼叫。

要求

开始之前,请了解 NAT 如何与 SIP ALG 配合使用。请参阅 了解 SIP ALG 和 NAT

概述

在外部区域内具有 SIP 代理服务器的两区场景中,您可以通过在公共或外部区域的接口上配置源 NAT 规则来使用 NAT 来呼入呼叫。

在此示例中(请参阅 图 5),Phone1 位于专用区域的 ge-0/0/0 接口上,而 phone2 和代理服务器位于公共区域的 ge-0/0/2 接口上。您可在公共接口 ge-0/0/2.0 上配置源 NAT 规则。

拓扑

图 5 显示了传入 SIP 呼叫的源 NAT。

图 5:传入 SIP 呼叫 Source NAT for Incoming SIP Calls的源 NAT

在此示例中,在创建称为私有和公共的区域并将它们分配给接口之后,您将配置要在源 NAT 规则集中使用的地址簿。然后,通过定义一个称为 sip-phone 的规则集和称为 phone1 的规则(与来自源地址 10.1.1.2/32 中的任何数据包匹配)来配置源 NAT。

最后,您要创建安全策略,以便在私有区域和公共区域之间允许所有 SIP 流量。

配置

程序

CLI 快速配置

要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改任何必要的详细信息,以便与网络配置匹配,将命令复制粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。

要在公共区域接口上配置源 NAT 规则:

  1. 配置接口。

  2. 配置区域并将其分配给接口。

  3. 配置地址簿并创建地址。

  4. 配置源 NAT 规则集。

  5. 支持持久源 NAT 转换。

  6. 配置安全策略以允许传出 SIP 流量。

  7. 配置安全策略以允许传入 SIP 流量。

结果

在配置模式下,输入 show interfacesshow security zonesshow security policiesshow security nat 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以将其更正。

如果完成设备配置,请在配置模式下输入 commit

验证

要确认配置工作正常,请执行以下任务:

验证源 NAT 规则的使用情况

目的

验证是否存在与源 NAT 规则匹配的信息流。

行动

在操作模式下,输入 show security nat source rule all 命令。查看转换命中字段,以检查与规则匹配的信息流。

意义

Translation hits 段显示,没有与源 NAT 规则匹配的信息流。

验证 SIP ALG 状态

目的

验证系统是否启用了 SIP ALG。

行动

在操作模式下,输入 show security alg status 命令。

意义

输出显示以下 SIP ALG 状态:

  • 启用 — 显示启用了 SIP ALG。

  • 禁用 — 显示 SIP ALG 已禁用。

示例:为传入 SIP 调用配置源 NAT 池,降低网络复杂性

此示例说明如何通过在外部接口上配置源 NAT 池以启用传入 SIP 呼叫的 NAT 来降低网络复杂性。

要求

开始之前,请了解 NAT 如何与 SIP ALG 配合使用。请参阅 了解 SIP ALG 和 NAT

概述

在外部或公共区域内使用 SIP 代理服务器的两区情景中,您可以通过在接口上将 NAT 池配置到公共区域来使用 NAT 进行传入呼叫。

在此示例中(请参阅 图 6),Phone1 位于专用区,Phone2 和代理服务器位于公共区域。您可配置源 NAT 池来执行 NAT。您还会创建一项策略,允许 SIP 流量从专用区域传输到公共区域。这使得专用区域中的 Phone1 能够在公共区域的代理服务器上注册,并且还允许从公共区域到专用区域的传入呼叫。

拓扑

图 6 显示了来电源 NAT 池。

图 6:传入 SIP 呼叫 Source NAT Pool for Incoming SIP Calls的源 NAT 池

在此示例中,您将按照以下内容配置源 NAT:

  • 定义称为 sip-nat-pool 的源 NAT 池,以包含 172.16.1.20/32 到 172.16.1.40/32 的 IP 地址范围。

  • 创建一个称为 sip-nat 的源 NAT 规则集,并使用规则 sip-r1 将从专用区到公共区域的数据包与源 IP 地址 10.1.1.3/24 匹配。对于匹配的数据包,源地址将转换为 sip-nat 池中的一个 IP 地址。

  • 在接口 ge-0/0/2.0 上配置地址 172.16.1.20/32 至 172.16.1.40/32 的代理 ARP。这样,系统便可对接口上收到的这些地址的 ARP 请求做出响应。

配置

程序

CLI 快速配置

要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改任何必要的详细信息,以便与网络配置匹配,将命令复制粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。

要为来电配置源 NAT 池:

  1. 配置接口。

  2. 配置区域并将接口分配给他们。

  3. 配置地址簿。

  4. 配置源 NAT 池。

  5. 使用规则配置源 NAT 规则集。

  6. 支持持久 NAT。

  7. 配置代理 ARP。

  8. 配置安全策略以允许传出 SIP 流量。

  9. 配置安全策略以允许传入 SIP 流量。

结果

在配置模式下,输入 show interfacesshow security zonesshow security natshow security policies 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以将其更正。

如果完成设备配置,请在配置模式下输入 commit

验证

要确认配置工作正常,请执行以下任务:

验证源 NAT 池的使用情况

目的

使用源 NAT 池的 IP 地址验证是否存在流量。

行动

在操作模式下,输入 show security nat source pool all 命令。

意义

Translation hits 段显示源 NAT 池的 IP 地址未使用流量。

验证源 NAT 规则的使用情况

目的

验证是否存在与源 NAT 规则匹配的信息流。

行动

在操作模式下,输入 show security nat source rule all 命令。

意义

Translation hits 段显示,没有与源 NAT 规则匹配的信息流。

验证 SIP ALG 状态

目的

验证系统是否启用了 SIP ALG。

行动

在操作模式下,输入 show security alg status 命令。

意义

输出显示以下 SIP ALG 状态:

  • [已启用 — 显示启用了 SIP ALG。

  • [禁用 — 显示 SIP ALG 已禁用。

验证 SIP ALG 的安全策略

目的

验证公共区域和私有区域之间的源 NAT 是否已设置。

行动

在操作模式下,输入 show security policies 命令。

意义

样本输出显示,公共区域和私有区域之间的源 NAT 已设置。

示例:为传入 SIP 呼叫配置静态 NAT

此示例说明如何配置静态 NAT 映射,允许专用区域中的呼叫者在公共区域的代理服务器中注册。

要求

开始之前,请了解 NAT 如何与 SIP ALG 配合使用。请参阅 了解 SIP ALG 和 NAT

概述

当 SIP 代理服务器位于外部或公共区域时,您可以在公共接口上配置静态 NAT,使专用区域中的呼叫者可在代理服务器中注册。

在此示例中(请参阅 图 7),Phone1 位于专用区域的 ge-0/0/0 接口上,而 Phone2 和代理服务器位于公共区域的 ge-0/0/2 接口上。您可创建一个称为传入 sip 的静态 NAT 规则集,规则称为 phone1,以匹配来自公共区域的数据包和目标地址 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 时,请确保为专用区域中的每个专用地址配置一个公共地址。

拓扑

图 7 显示了传入呼叫的静态 NAT。

图 7:传入呼叫 Static NAT for Incoming Calls的静态 NAT

配置

程序

CLI 快速配置

要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改任何必要的详细信息,以便与网络配置匹配,将命令复制粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。

要为传入呼叫配置静态 NAT:

  1. 配置接口。

  2. 创建安全区域。

  3. 为安全区域分配地址。

  4. 使用规则创建一个静态 NAT 规则集。

  5. 配置代理 ARP。

  6. 定义安全策略以允许传入 SIP 流量。

  7. 定义安全策略以允许传出 SIP 流量。

结果

在配置模式下,输入 show interfacesshow security zonesshow security natshow security policies 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以将其更正。

如果完成设备配置,请在配置模式下输入 commit

验证

要确认配置工作正常,请执行以下任务:

验证静态 NAT 配置

目的

验证是否存在与静态 NAT 规则集匹配的信息流。

行动

在操作模式下,输入 show security nat static rule all 命令。

意义

Translation hits 段显示有与静态 NAT 规则集匹配的信息流。

验证 SIP ALG 状态

目的

验证系统是否启用了 SIP ALG。

行动

在操作模式下,输入 show security alg status 命令。

意义

输出显示以下 SIP ALG 状态:

  • [已启用 — 显示启用了 SIP ALG。

  • [禁用 — 显示 SIP ALG 已禁用。

验证 SIP ALG 的安全策略

目的

验证公共区域和私有区域之间的静态 NAT 是否已设置。

行动

在操作模式下,输入 show security policies 命令。

意义

示例输出显示,公共区域和私有区域之间的静态 NAT 已设置。

示例:在公共区域的专用区和 NAT 中配置 SIP 代理

此示例说明如何在公共区域的专用区域和静态 NAT 中配置 SIP 代理服务器,以便公共区域中的呼叫者可在代理服务器中注册。

要求

开始之前,请了解 NAT 如何与 SIP ALG 配合使用。请参阅 了解 SIP ALG 和 NAT

概述

借助专用区域中的 SIP 代理服务器,您可以在外部或公共接口上配置静态 NAT,以便公共区域中的呼叫者可在代理服务器中注册。

在此示例中(请参阅 图 8),Phone1 和 SIP 代理服务器位于专用区域的 ge-0/0/0 接口上,而电话 2 位于公共区域的 ge-0/0/2 接口上。您为代理服务器配置静态 NAT 规则,允许 phone2 在代理服务器上注册,然后创建一种称为传出的策略,允许从公共区域到专用区域的 SIP 流量,使公共区域中的呼叫者能够在代理服务器中注册。您还会配置一种称为从私有区域传入到公共区域的策略,以允许致电1 调用。

拓扑

图 8 显示了在公共区域的专用区和 NAT 中配置 SIP 代理。

图 8:在公共区域的专用区和 NAT 中 Configuring SIP Proxy in the Private Zone and NAT in a Public Zone配置 SIP 代理

在此示例中,您将按照以下内容配置 NAT:

  • 在 ge-0/0/2 接口上为代理服务器配置静态 NAT,并使用一组称为传入-sip 的规则集(称为代理)将来自公共区域的数据包与目标地址 172.16.1.2/32 匹配。对于匹配的数据包,目标 IP 地址将转换为专用地址 10.1.1.5/32。

  • 配置第二个规则集,称为 sip-phone,规则称为 phone1,以启用接口 NAT 以实现从电话 1 到电话 2 的通信。

配置

程序

CLI 快速配置

要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改任何必要的详细信息,以便与网络配置匹配,将命令复制粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。

要为传入呼叫配置静态 NAT:

  1. 配置接口。

  2. 配置安全区域。

  3. 为安全区域分配地址。

  4. 为静态 NAT 创建规则集并为其分配规则。

  5. 为 172.16.1.2/32 地址配置代理 arp。

  6. 配置第二个规则集并为其分配规则。

  7. 为传出流量配置安全策略。

  8. 为传入流量配置安全策略。

结果

在配置模式下,输入 show interfacesshow security zonesshow security natshow security policies 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以将其更正。

如果完成设备配置,请在配置模式下输入 commit

验证

要确认配置工作正常,请执行以下任务:

验证静态 NAT 配置

目的

验证是否存在与静态 NAT 规则集匹配的信息流。

行动

在操作模式下,输入 show security nat static rule all 命令。查看转换命中字段,以检查与规则匹配的信息流。

意义

Translation hits 段显示,有 23 个信息流与静态 NAT 规则匹配。

验证 SIP ALG 状态

目的

验证系统是否启用了 SIP ALG。

行动

在操作模式下,输入 show security alg status 命令。

意义

输出显示以下 SIP ALG 状态:

  • 启用 — 显示启用了 SIP ALG。

  • 禁用 — 显示 SIP ALG 已禁用。

验证源 NAT 规则

目的

验证源 NAT 规则配置。

行动

在操作模式下,输入 show security nat source rule all 命令。

意义

Translation hits 段显示,有 88 个信息流与源 NAT 规则匹配。

验证安全流会话

目的

验证 NAT 是否将手机 1 转换为 phone2。

行动

在操作模式下,输入 run show security flow session 命令。

意义

输出显示 NAT 将手机 1 转换为 phone2。

示例:配置三区 SIP ALG 和 NAT 场景

此示例说明如何在公共区域的专用区域和静态 NAT 中配置 SIP 代理服务器,以便公共区域中的呼叫者可在代理服务器中注册。

要求

开始之前,请了解 NAT 如何与 SIP ALG 配合使用。请参阅 了解 SIP ALG 和 NAT

概述

在三区 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 在专用区域拨打电话 1 时,SIP 信号信息流。启动会话后,数据将直接在 Phone1 和 Phone2 之间流动。

图 9:在 DMZ 中带有代理的三区 SIP 配置 Three-Zone SIP Configuration with Proxy in the DMZ

在此示例中,您将按照以下内容配置 NAT:

  • 使用规则电话 1 配置称为传入 sip 的静态 NAT 规则集,以匹配来自公共区域的数据包与目标地址 10.1.2.3/32。对于匹配的数据包,目标 IP 地址将转换为专用地址 10.1.1.3/32。

  • 为接口 ge-0/0/1.0 上的地址 10.1.2.3/32 配置代理 ARP,使系统能够响应此地址接口上收到的 ARP 请求。

  • 配置第二个规则集,称为 sip-phone(含规则 r1),以启用接口 NAT 以实现从电话 1 到代理服务器、从电话 1 到 phone2 的通信。

配置

程序

CLI 快速配置

要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,移除任何换行符,更改任何必要的详细信息,以便与网络配置匹配,将命令复制粘贴到层级的 CLI 中 [edit] ,然后从配置模式进入 commit

逐步过程

以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。

要在公共区域的专用区域和静态 NAT 中配置 SIP 代理服务器:

  1. 为静态 NAT 创建规则集并为其分配规则。

  2. 配置接口。

  3. 配置安全区域。

  4. 为安全区域分配地址。

  5. 配置接口 NAT 以进行从电话 1 到代理的通信。

  6. 配置安全策略以允许从区域专用到区域 DMZ 的流量。

  7. 配置安全策略以允许从区域公共区域到区域 DMZ 的流量。

  8. 配置安全策略以允许从区域专用到区域公共流量。

  9. 配置安全策略以允许从区域公共区域到区域专用的流量。

  10. 配置安全策略以允许从区域 DMZ 到区域专用的流量。

  11. 配置安全策略以允许从区域 DMZ 到区域公共流量。

结果

在配置模式下,输入 show interfacesshow security zonesshow security natshow security policies 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以将其更正。

如果完成设备配置,请在配置模式下输入 commit

验证

要确认配置工作正常,请执行以下任务:

验证源 NAT 规则的使用情况

目的

验证是否存在与源 NAT 规则匹配的信息流。

行动

在操作模式下,输入 show security nat source rule all 命令。查看转换命中字段,以检查与规则匹配的信息流。

意义

显示 Translation hits field ,没有与源 NAT 规则匹配的信息流。

验证静态 NAT 规则使用情况

目的

验证是否存在与静态 NAT 规则匹配的信息流。

行动

在操作模式下,输入 show security nat static rule all 命令。查看转换命中字段,以检查与规则匹配的信息流。

意义

Translation hits 段显示,与静态 NAT 规则匹配的信息流。

验证 SIP ALG 状态

目的

验证系统是否启用了 SIP ALG。

行动

在操作模式下,输入 show security alg status 命令。

意义

输出显示以下 SIP ALG 状态:

  • 启用 — 显示启用了 SIP ALG。

  • 禁用 — 显示 SIP ALG 已禁用。

发布历史记录表
释放
描述
15.1X49-D40
从 Junos OS 15.1X49-D40 版和 Junos OS 17.3R1 版开始,“IPv6”地址类型也受支持。
12.3X48-D25
从 Junos OS 12.3X48-D25 版和 Junos OS 17.3R1 版开始,SIP ALG 支持 TCP。
12.3X48-D15
从 Junos OS 12.3X48-D15 版和 Junos OS 17.3R1 版开始,SIP ALG 在 UDP 协议上支持 65,000 字节 SIP 消息。