SIP协议的应用程序层网关
将大型NAT (LSN)与会话初始协议(SIP)结合使用非常复杂,因为SIP消息在SIP标头以及SIP正文中包含IP地址。与SIP一起使用LSN时,SIP标头包含有关调用者和接收者的信息,设备将此信息转换为将其隐藏在外部网络中。SIP正文包含会话描述协议(SDP)信息,其中包括用于传输媒体的IP地址和端口号。
SIP ALG遵守以RFC:下
- RFC 3261
- RFC 3581.
- RFC 4566.
- RFC 4475
注意
Citrix ADC独立设备,Citrix ADC高可用性设置以及Citrix ADC群集设置均支持SIP ALG。
SIP ALG的工作原理
IP地图转换的执行方向取决于消息的类型和方向。
- 入库请求
- 出站回复
- 出站请求
- 入站回复
对于传出消息,啜饮客户端的没有IP地址和端口码将替换为Citrix ADC没有的公众的知识产权和LSN池IP地址和端口号),该地址和端口号在LSN配置期间指定。对于传入邮件,LSN池IP地址和端口号将替换为客户端的专用地址。如果消息包含任何公有IP地址,Citrix ADC SIP ALG将保留这些地址。此外,一个针孔被创建在:
- s IP地址和端口,以便从公用网站达此为单位为单位,代表实用的LSN池IP地址和端口,以便从公用网站。
- 代表所拥有的知识产权IP地铁和端口,以便以便专用网站达此IP地图和端口被视s。
通过网络发送SIP消息时,SIP应用程序层网关(ALG)从邮件中收集信息,并将以下标头中的IP地址转换为LSN池IP地址:
- 通过
- 联系人
- 路由
- 记录路由
在以下示例SIP请求消息中,LSN替换标头字段中的IP地址,以将它们隐藏在外部网络中。
INVITE adam@10.102.185.156 SIP/2.0通过:SIP/2.0/UDP 192.170.1.161:62914发件人:eve@10.120.210.3收件人:adam@10.102.185.156 Call-ID: a12abcde@10.120.210.3联系人:adam@10.102.185.156路由:< SIP:netscreen@10.150.20.3:5060>记录路由:< SIP:netscreen@10.150.20.3:5060>
当包含SDP信息的邮件达达时,SIP ALG会从从中级信息,并并将以字段中的IP地球和LSN池IP地址和端牌号:
c =(连接信息)
此字段可显示在会话或媒体级别。它以以以下格式显示:
C =
<网络类型> <地址类型> < connection-address >
如果目标IP地址是单播IP地址,则SIP ALG会使用m =字段中指定的IP地址和端口号创建针孔。
M =(繁体公共公共机构)
此字段显示在媒体级别,包含媒体描述。它以以以下格式显示:
毫米 =
<端口> <传输> A =
(媒体领域信息)
此字段可以显示在会话或媒体级别,格式如下:
一个=
<属性>
一个=
:
以下摘自示例SDP部分显示了为资源分配翻译的字段。
o =用户2344234 55234434在IP4 10.150.20.3中
C = IP4 10.150.20.3
m=audio 43249 RTP/AVP 0
下表显示了如何转换SIP负载。
入站请求(从公共忌关) | 更改为: | 无 |
发件人: | 无 | |
通话身份: | 无 | |
通过: | 无 | |
请求URI: | 将LSN池IP地址替换为私有IP地址 | |
联系人: | 无 | |
记录路由 | 无 | |
绕线: | 无 | |
出站响应(从私人到公共) | 更改为: | 无 |
发件人: | 无 | |
通话身份: | 无 | |
通过: | 无 | |
请求URI: | 将销售IP地址为LSN池IP地址 | |
联系人: | 将销售IP地址为LSN池IP地址 | |
记录路由 | 无 | |
绕线: | 无 | |
出站请求(从私人到公共) | 更改为: | 无 |
发件人: | 无 | |
通话身份: | 无 | |
通过: | 将销售IP地址为LSN池IP地址 | |
请求URI: | 无 | |
联系人: | 将销售IP地址为LSN池IP地址 | |
记录路由 | 无 | |
绕线: | 无 | |
入站响应(从公开到私有) | 更改为: | 无 |
发件人: | 无 | |
通话身份: | 无 | |
通过: | 将LSN池IP地址替换为私有IP地址 | |
请求URI: | 无 | |
联系人: | 保留公式IP地址(如果在所) | |
记录路由 | 无 | |
绕线: | 无 |
SIP ALG的局限性
SIP ALG有以下限制:
- 仅支持SDP负载。
- 不支持以下各项:
- 多播IP地址
- 加密的SDP
- SIP TL.
- FQDN翻译
- SIP层身份验证
- TD /划分
- 多部位体
- IPv6网络上的SIP消息
- 折
经过测试的SIP客户客户和管理器
以下SIP客户端和管理器材已使用SIP ALG进行测试:
- SIP客户客户:X -精简版,佐伊柏,艾加。阿瓦亚
- 代理服务器:开放式器具
LSN SIP方便:专用网站外的SIP管理(公用网站)
SIP客户端注册
对于典型的SIP调用,SIP客户端必须向SIP注册商注册,方法是撰写注册请求并将其发送给SIP注册商。Citrix ADC设备的 SIP ALG 拦截请求,将请求中的 IP 地址和端口号替换为 LSN 配置中提供的 LSN 池 IP 地址和端口号,并将请求转发给 SIP 注册商。然后,SIP ALG 在 Citrix ADC 配置中打开一个针孔,以允许 SIP 客户端和 SIP 注册商之间进行进一步的 SIP 通信。SIP 注册商通过 LSN 池 IP 地址和端口号向 SIP 客户端发送 200 OK 响应。Citrix ADC 设备在针孔中捕获此响应,并且 SIP ALG 替换 SIP 标头,将原始联系人、通过、路由和记录路由 SIP 字段放回消息中。SIP ALG 然后将消息转发到 SIP 客户端。下图显示了 SIP ALG 如何在 SIP 呼叫注册流中使用 LSN。
拨出呼叫
SIP调用是通过从内部网络发送到外部网络的SIP邀请消息启动的。SIP ALG对通过,联系人,路由和记录路由SIP头字段中的IP地址和端口号执行NAT,并将其替换为LSN池IP地址和端口号。LSN为SIP调用中的后续SIP消息存储这些映射。SIP ALG随后在Citrix ADC配置中打开单独的针孔,以允许SIP和媒体通过Citrix ADC设备在SDP和SIP标头中指定的动态分配端口上。当200 OK消息到达Citrix ADC时,它会被创建的针孔之一捕获。SIP ALG替换SIP标头,还原原始联系人,通过,路由和记录路由SIP字段,然后将消息转发到内部SIP客户端。
来电来电
SIP传入呼叫使使使端到端到内部网站的SIP邀请邀请消息消息消息动.sip opper oper内部sip客户端向端向端向端向端向端向端向端向针孔,将instest oil发布到网页中的sip客户客户。
SIP ALG对通过,联系人,路由和记录路由SIP头字段中的LSN IP地址和端口号执行NAT,将其转换为内部SIP客户端的IP地址和端口号,并将请求转发到SIP客户端。当内部SIP客户端发送的200 OK响应消息到达Citrix ADC设备时,SIP ALG将对“通过”,“联系人”,“路由”和“记录路由SIP头”字段中的IP地址和端口号执行NAT,将其转换为LSN池IP地址和端口号,并转发响应消息发送给SIP注册商,然后在出站方向打开一个针孔,以便进一步的SIP通信。
呼叫终止
Baga消息终止呼叫。当设备收到收到消息时,它会像对任何其他但翻译邮件中字段字段消息翻译邮件确认字段。所以,由于由于器必须确认200ok的的ebea消息,因此alg将呼叫拆卸延迟15秒,以留出传输200好的时间。
同一网络中的客户端之间的呼叫
当同一网络中的客户端一个和客户端B发起呼叫时,SIP消息将通过外部网络中的SIP代理路由。SIP ALG将来自客户端一个的邀请作为普通传出呼叫处理。由于客户端B位于同一网络中,因此SIP代理将INIVITE发送回Citrix ADC设备。SIP ALG检查INIVITE消息,确定其包含客户端的NAT IP地址,并在将消息发送到客户端B之前将该地址替换为客户端一个的专用IP地址。一旦在客户之间建立调用,客户端之间的媒体传输将不涉及Citrix ADC。
更多LSN SIP场景:专用网页内部的SIP管理
如果要在专用网站中间啜饮管理器,Citrix建议您执行以下作物
- 为专用SIP管理配置静态LSN映射。有关更多信息,请参阅配置静态lsn映射。确保NAT端口与SIP ALG配置文件中间的端口相同。
- 在非军事区域(DMZ)内配置SIP代理服务器。
图 1.SIP呼叫注册
图 2.SIP来电流程
图1.
- 方案1 - 专用网站中的SIP客户同一网中的SIP服务代服务。不行公路操作用,为SIP客户端和啜饮管理器位于位于一网中。
- 方案2 -公用网络中的SIP客户端向专用网络中的SIP代理服务器注册。通过使用在设备上配置的静态 LSN 映射将来自公用 SIP 客户端的注册消息发送到 Citrix ADC 设备,并且设备会创建针孔以便进一步的 SIP 操作。
- 方案3 - SIP来电流程。从外部到内部网络的SIP邀请消息发起SIP传入呼叫。Citrix ADC设备通过在 Citrix ADC 设备上配置的静态 LSN 映射接收来自位于外部网络中的 SIP 客户端 C2 的邀请消息。
手机将消息转将将将消息发育给给,SIP代代将消息消息消息到到到到到然后客户客户端c1向sip客户客户c1向sip管理发作180条和200条正交消息,而SIP而代通讯CITRIX ADC设备将将发起给SIP客户端C2。当内部SIP客户端C1发作的200 OK响应消息消息达CITRIX ADC时,SIP ALG对“通讯”,“联系人”,“路由”和“记录路由sip头”字段中的IP地址和端议号执行NAT,并并将其为LSN池IP地址和端口消息消息消息给给给端c2,并在出站方向开一个个,以便以便一步行行SIP通信。
支持审核日志
通过在LSN审核日志记录配置中启用ALG,可以将ALG信息记录为LSN日志记录的一部分。有关LSN日志记录的更多信息,请参阅日志记录和监视LSN。LSN日志中ALG条目的日志消息包含以下信息:
- 时间戳
- SIP消息的类型(例如,sip请求)
- SIP客户客户的源IP地址和端口
- SIP代理的目标IP地址和端口
- NAT IP地址和端口
- SIP方法
- 序列号
- SIP客户端是否已注册
- 呼叫者的用户名和域
- 接收人的用户名和域
审核日志示例:
请求:
07/19/2013:09:49:19 GMT信息0-PPE-0:默认ALG alg_sip_info_packet_event 169 0:Infomsg:“SIP请求” - 组:G2 - Call_ID:nty0yjywmtjmyjnhndu5zjlmmmqxotm5zte3zjc3njm。- 传输:TCP - Source_IP:192.169.1.165 - Destence_Popt:57952 - Destination_IP:10.102.185.156 - Destination_port:5060 - Natted_IP:10.102.185.191 - Natted_port:10313 - 方法:注册 - Sequent_Number:3060 - 注册:是 - Content_type: -caller_user_name:156_pvt_1 - callee_user_name:156_pvt_1 - caller_domain_name: - callee_domain_name: - <! - caltcopy - >
响应:
07/19/2013:09:49:19 GMT信息0-PPE-0:默认ALG alg_sip_info_packet_event 170 0:Infomsg:“SIP响应” - 组:G2 - Call_ID:nty0yjywmtjmyjnhndu5zjlmmqxotm5zte3zjc3njm。- 传输:TCP - Response_Code 200 - source_port:5060 - destination_ip:192.169.1.165 - destination_port:57952 - natted_ip:10.102.185.191 - natted_port:10313 - sement_number:3060 - content_type: - caller_user_name:156_pvt_1 - callee_user_name:156_pvt_1 - caller_domain_name: - callee_domain_name: - <! - caltcopy - >
配置SIP ALG.
您需要将SIP ALG配置作为LSN配置的一部分。有关配置LSN的说明,请参阅LSN的配置步骤。配置LSN时,请确保:
- 在添加LSN应用程序配置文件时设置以下参数:
- IP池=已配对
- 地址和端口映射 = 与端点无关
- 过滤=与端点相关
重要提示:为了使SIP ALG工作,必须使用完整锥形NAT配置。
示例:
添加lsn appsprofile app_tcp tcp-pippooling成对--mapping endpoint--forment--filtering endpoint-inswerly <! - caltcopy - >
- 创建SIP ALG配置文库,并确保定义源端口范围或目标范围范围。
示例:
添加lsn sipalgprofile sipalgprofile_tcp -sipsrcportrange 1-65535 -sipdstportrange 5060 -openViaPinhole ENABLED -openRecordRoutePinhole ENABLED -sipTransportProtocol TCP
- 在创建LSN组时,将SIP ALG设置为已启用。
示例:
add lsn group g1 -clientname c1 -sipalg ENABLED
- 将SIP ALG配置文件绑定到LSN组。
SIP ALG配置配置:
以下示例配置显示了了使使用单位用手网站,单位个lsn nat ip地址,sip alg特价设置创建简单的lsn配置,以及如何配置sip all:
添加LSN池P1完成绑定LSN池P1 10.1502.185.190 Dode添加LSN Client C1 DoneD绑定LSN Client C1 -Network 192.170.1.0 -NetMask 255.255.255.0 DoneD添加LSN AppsProfile App_tcp TCP -Ippooling成对--mapping endopt--filtering端点 -独立完成添加lsn appsprofile app_udp udp-hippooling成对--ming-unswerting -filtering端点无关的完成绑定lsn appsprofile app_tcp 1-65535完成了绑定lsn appsprofile app_udp 1-65535 dode添加lsn spipprofile scipgprofile_tcp -sipdstportrange 5060 -openviaghole启用了-openrecordroutepinhole-iptransporpropolt tcp dode添加lsn sipplofile sipalgprofile_udp -sipdstrange 5060 -openviapinhole启用-openrecordroutepinhole启用-optransport prootocol udp dode添加lsn组g1 -clientname c1 -sipalg enabled doned tomed lsn组g1-poolname p1 dode绑定lsn组g1 -appsprofilename app_tcp完成绑定lsngroup g1 -appsprofilename app_udp完成绑定lsn组g1 -sipalgprofilename sipalgprofile_tcp完成绑定lsn组g1 -sipalgprofilename spipgprofile_udp do to <! - caltcopy - >