此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍如何使用Expressway-E单NIC和静态NAT配置来排除因源IP转换通过NAT反射导致的MRA电话服务故障。
Cisco 建议您了解以下主题:
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
注意:在整个文档中,Expressway设备称为Expressway-E和Expressway-C。但是,相同的配置适用于视频通信服务器(VCS)Expressway和VCS控制设备。
本文档介绍使用单个NIC和静态NAT地址(如《Expressway基本配置指南》所述,使用单个Expressway-E LAN接口将移动和远程访问部署在Expressway E上)上的方案。MRA用户能够成功登录,但无法访问电话服务。
来自外部客户端的SIP REGISTER消息由Expressway-E在端口5061上成功接收。
然后,Expressway-E会创建指向Expressway-C的SIP SERVICE消息。此请求将导致408请求超时。
电话服务失败,因为SIP REGISTER消息未通过Cisco Unified Communications Manager(CUCM或Call Manager)。 Expressway-E和Expressway-C无法使用SIP服务消息交换正确交换其证书。SIP SERVICE消息仅从Expressway-C获得408请求超时作为响应。由于SIP SERVICE消息不成功,Expressway-E不会将SIP REGISTER消息转发到Expressway-C。
这是由于Expressway-C和Expressway-E之间的防火墙对从Expressway-C到Expressway-E的消息进行源IP(和端口)转换。这会导致Expressway-C将这些SIP服务消息错误地路由到该转换后的地址,而不是其自己的本地地址。在成功的场景中,Expressway-C会处理SIP服务消息本身。(Expressway-E和Expressway-C之间的SIP SERVICE消息用于检查证书,因此仅在遍历区域设置开始或首次通过MRA注册时可见。)
下图提供了网络图的示例,在本文档中用作参考:
从Expressway-C数据包捕获中,您可以看到Expressway-C(10.0.30.2)成功连接到端口7003上的Expressway-E静态NAT公有IP地址(64.100.0.10)。(注意Expressway-C的源端口为27901):
在Expressway-E的数据包捕获中,您可以看到连接来自目标为10.0.10.2和端口7003的端口4401(它自己的静态NAT公有IP地址)上的64.100.0.10:
以下是Expressway-C与E之间连接的观点:
Expressway-C:10.0.30.2:27901 <-> 64.100.0.10:7003
Expressway-E:64.100.0.10:4401 <-> 10.0.10.2:7003
这表示Expressway-C和Expressway-E之间的防火墙正在对这些消息执行源IP和端口转换。
如果您查看Expressway-E上的SIP通信流,您可以看到它从MRA客户端设备获取SIP REGISTER,然后Expressway-E生成SIP SERVICE消息以与Expressway-C交换其证书,但这会导致408请求超时。
请注意,此SIP服务消息的路由报头(从Expressway-E发送到Expressway-C)包含NAT地址(64.100.0.10:4401)的IP和端口。
当此消息到达Expressway-C时,Expressway-C会尝试根据该路由报头将消息路由到64.100.0.10:4401。由于此地址在Expressway E服务器端,因此无法连接到此地址,因此此操作失败。即使Expressway-C能够连接到此地址,也不正确,因为SIP SERVICE消息旨在供Expressway-C接收和处理。
SIP服务消息到达Expressway-C:
2016-04-19T17:09:13+10:00 expc tvcs: UTCTime="2016-04-19 07:09:13,973" Module="network.sip" Level="DEBUG": Action="Received" Local-ip="10.0.30.2" Local-port="27901" Src-ip="64.100.0.10" Src-port="7003" Msg-Hash="123456789123456789" SIPMSG: |SERVICE sip:serviceserver@cucm02.example.local SIP/2.0 Via: SIP/2.0/TLS 64.100.0.10:7003;egress-zone=UCTraversal;branch=[branchID];proxy-call-id=[callid];rport Via: SIP/2.0/TCP 127.0.0.1:5060;branch=[branchID];received=127.0.0.1;rport=25063;ingress-zone=DefaultZone Call-ID: abcd12345678@127.0.0.1 CSeq: 4616 SERVICE Contact: <sip:serviceproxy@cucm02.example.local> From: <sip:serviceproxy@cucm02.example.local>;tag=0987654321aaaa To: <sip:serviceserver@cucm02.example.local> Max-Forwards: 15 Route: <sip:64.100.0.10:4401;transport=tls;apparent;ds;lr> Route: <sip:127.0.0.1:22210;transport=tcp;vcs-cate;lr> User-Agent: TANDBERG/4132 (X8.7.2) Date: Tue, 19 Apr 2016 07:09:13 GMT Event: service P-Asserted-Identity: <sip:serviceproxy@cucm02.example.local> X-TAATag: e90b4983919b1f7a46d38f835 Identity: "7ioJ9gpsS5ob2TUAttNxBGYRWDbnRuf5skrkxP+B14ngRvjkIWIu7BQP5W7vW1BTVyVaGuubV5u7rPDc5anDx9u46i/8TkxxYuxkr83DEh/cYPWlwO7JvTP5nub6/EtEt6RXvwizY6Gm/MXV4eMqQJ06kA86EFxP1SsRxop0YjUs61B10JnBrtQjOicskoAuMGzNjiBKvcCAbrASGtWP015vRp9khcs3e8vmkpZH5Qtef6+gNaRWPES3MS==" Content-Type: multipart/mixed;boundary=boundary-6j7zrmj35ifsu3efg5ga603hnz1nbf Content-Length: 2555 --boundary-6j7zrmj35ifsu3efg5ga603hnz1nbf Content-Type: application/text <?xml version="1.0" encoding="utf-8"?> <methodCall><params><username>john.smith</username><realm>expe.example.com</realm><nonce>2i78worv9unccs6vbclfi4xai78worv9unccs6vbclfi4xa4i15j</nonce><qop>auth</qop><cnonce>54f80570</cnonce><nc>00000001</nc><response>2i78worv9unccs6vbclfi4xa4i15j</response><uri>sip:cucm02.example.local</uri><method>REGISTER</method><id>12345678</id><caching-enabled>true</caching-enabled><reqtype>collab-edge</reqtype></params><methodName>DigestAuth</methodName><version>1.0</version><msgid>12345678979</msgid><sipdomain>cucm02.example.local</sipdomain></methodCall> --boundary-6j7zrmj35ifsu3efg5ga603hnz1nbf Content-Type: application/x-x509-ca-cert -----BEGIN CERTIFICATE----- hknS5nQ8NJEspxLPY0N4BvA8iL7ZasOqnqgHRlj95N8bn OfigoKhe90kV6Y7PRbRpwFv6jGiFR8hyepr3t2BPec0aZ ZAK3ZC92RQbDjCxy2U99L8WLlTpJQwIuTjLHicbiNCNZu Be9xEMgewwGFVfSzW08DzlecJNXpsKqQ0ivbpLbwreXJG SCbcse3O67yvghMDsotcK4gur11FZWOZJFa3EMlgoT3Mj ApGvMfL9caTjY1EaLWDl5rWGGe8FpRLCizrz0wwUGg7Px Moy6kAujtolwN9BUI0sgJ98MnBuuREJZNW7g7nJL5zywT FXhMgy9PBUMuwjgu5KruY4caWDYtNu1kZzCtnm044lOk7 xhIOoOWWj9sNFnDQGDrgBIFBjggEihSbZr6h4Pq2ZMZ4r i5yGpz0j7a6lg2NOKm6FXpfqVlB7zvyQsM6x0XJEImpjV al0nHYkTLkBEmK5jVosgyOrSWpZPimc364sRxRW4ABZZX M6XstZNGhvQNDVk1JlfCN5yRtEgEkkizeWOHJcts922wL 2rVTfUfWGXMkca8YHKj2ixkthNnHVbLG0YoUNOUDHq1xu 49F7Kcw7neuQQZ4MmEif59lnyhY7qEIQVEpGn0jgqZAX8 omNVxTewa9nTXvjxo5xvTLghYfESCqniBbtWwMhhRuR7N eh09OvFWsuUyHJmDBYpoNZWTXEB4Fw5XwfjzZAoHzOFV6 xcE4LGYrpI4EbaZ58r8uVrfXkrNrgepFw2zMgamhwf9n5 AzEU2gh9vTUNZEAn8De5XQKAipeehO8Dpef2JTBLV5avf nh7rfxh8BZY4xteSRox8iBnT4Na6qsDMb2gvp6gTYFFJH RGMHIe5siI1HhARqDjen4EwrKfMOYNJWTqmx4mjDrqyme -----END CERTIFICATE----- | 2016-04-19T17:09:13+10:00 expc tvcs: UTCTime="2016-04-19 07:09:13,977" Module="developer.sip.leg" Level="INFO" CodeLocation="ppcmains/sip/sipproxy/SipProxyLeg.cpp(10047)" Method="SipProxyLeg::routeViaNettleIfNeeded" Thread="0x3150905deea6": this="0xc76759f343ca" Type="Outbound" routingViaNettle="false" twoInARow="false" oneIsATraversalServerZone="false" isCall="false" isRefer="false" fromClusterPeer="false" fromNettle="false" toNettle="false" inboundZone=UC_Traversal (encryption-mode=on ice-mode=off) outboundZone=DefaultZone (encryption-mode=auto ice-mode=off) encryptionSettingsRequireNettle="true" iceSettingsRequireNettle="false" needlesslyNettling="false" routeViaNettle="false"
Expressway-C尝试发送此SIP服务消息以告知其在路由报头中显示的内容,但连接失败:
2016-04-19T17:09:13+10:00 expc tvcs: UTCTime="2016-04-19 07:09:13,979" Module="network.tcp" Level="DEBUG": Src-ip="10.0.30.2" Src-port="27921" Dst-ip="64.100.0.10" Dst-port="4401" Detail="TCP Connecting" 2016-04-19T17:09:13+10:00 expc tvcs: UTCTime="2016-04-19 07:09:13,980" Module="network.tcp" Level="ERROR": Src-ip="10.0.30.2" Src-port="27921" Dst-ip="64.100.0.10" Dst-port="4401" Detail="TCP Connection Failed"
在Expressway-C的数据包捕获中,TCP SYN尝试获取RST响应:
结果是Expressway-C向Expressway-E发送408请求超时:
2016-04-19T17:09:13+10:00 expc tvcs: UTCTime="2016-04-19 07:09:13,982" Module="network.sip" Level="INFO": Action="Sent" Local-ip="10.0.30.2" Local-port="27901" Dst-ip="64.100.0.10" Dst-port="7003" Detail="Sending Response Code=408, Method=SERVICE, CSeq=4616, To=sip:serviceserver@cucm02.example.local, Call-ID=abcd12345678@127.0.0.1, From-Tag=0987654321aaaa, To-Tag=0987654321bbbb, Msg-Hash=123456789123456789" 2016-04-19T17:09:13+10:00 expc tvcs: UTCTime="2016-04-19 07:09:13,982" Module="network.sip" Level="DEBUG": Action="Sent" Local-ip="10.0.30.2" Local-port="27901" Dst-ip="64.100.0.10" Dst-port="7003" Msg-Hash="123456789123456789" SIPMSG: |SIP/2.0 408 Request Timeout Via: SIP/2.0/TLS 64.100.0.10:7003;egress-zone=UCTraversal;branch=[branchID];proxy-call-id=[callid];received=64.100.0.10;rport=7003;ingress-zone=UCTraversal;ingress-zone-id=4 Via: SIP/2.0/TCP 127.0.0.1:5060;branch=[branchID];received=127.0.0.1;rport=25063;ingress-zone=DefaultZone Call-ID: abcd12345678@127.0.0.1 CSeq: 4616 SERVICE From: <sip:serviceproxy@cucm02.example.local>;tag=0987654321aaaa To: <sip:serviceserver@cucm02.example.local>;tag=0987654321bbbb Server: TANDBERG/4132 (X8.7.2) Warning: 399 10.0.30.2:5061 "Request Timeout" Content-Length: 0
这种情况有两种可能的解决办法。
如果在防火墙上禁用源IP/端口转换,Expressway-E服务器会将Expressway-C流量视为从10.0.30.2:27901(Expressway-C上的实际IP和端口)到达,而不是64.100.0.10:4401(NAT地址)。 这样,SIP SERVICE消息上的路由报头包含10.0.30.2:27901值,在收到此消息时,Expressway-C会将其路由到自己并对其执行一些处理,从而使200 OK发回Expressway-E(如果一切正常),然后代理通过SIP REGISTER消息继续注册流程。
在Expressway-E上配置双网卡时,无需执行NAT反射,避免了问题。但是,请确保Expressway-E和Expressway-C(如果存在)之间的内部防火墙不执行从Expressway-C到Expressway-E的流量的源IP/端口转换(这会导致类似问题)。