一。NAT環(huán)境常見(jiàn)問(wèn)題
NAT環(huán)境常見(jiàn)問(wèn)題
- SIP賬戶(hù)注冊不上,注冊報文收不到響應消息;
- 呼叫通話(huà)中出現語(yǔ)音單通,內網(wǎng)設備收不到公網(wǎng)媒體流;
- 收不到ACK信令,呼叫接通持續30秒自動(dòng)掛斷;
- 收不到BYE消息,通話(huà)掛不斷;
二。原因分析
SIP呼叫建立和媒體通信的建立是根據SIP消息右側和SDP消息體里攜帶的IP地址和端口來(lái)協(xié)商的,如果SIP服務(wù)器在公網(wǎng),設備部署在NAT網(wǎng)絡(luò )下,NAT設備替換發(fā)出的SIP消息里攜帶的是內網(wǎng)IP地址和端口,從而導致外網(wǎng)服務(wù)器發(fā)生故障,收發(fā)和媒體報文送不到NAT設備,造成信令,媒體丟失。針對這種組網(wǎng)應用,通常采用以下三種NAT穿透技術(shù)解決:
(1)動(dòng)態(tài)NAT;(2)靜態(tài)NAT;(3)STUN穿透
設備啟用NAT穿透功能后,可以實(shí)現“網(wǎng)絡(luò )打洞”,并檢測到路由器外網(wǎng)的IP地址,從而發(fā)出的SIP消息頭部以及SDP消息體攜帶的IP地址和端口都會(huì )替換為獲取到的公網(wǎng)IP和端口。
三。NAT突破原理
1.動(dòng)態(tài)NAT穿透原理

(1)以鼎信通達DAG語(yǔ)音網(wǎng)關(guān)為例,設備上開(kāi)啟動(dòng)態(tài)NAT功能后,通過(guò)頭里會(huì )攜帶的端口發(fā)出獲取請求消息,如下
發(fā)送REGISTER消息,在請求信息的Via頭域中包含了沒(méi)有值的rport參數,如下所示:
注冊Sip:124.40。120.188:5060 SIP / 2.0
通過(guò):SIP / 2.0 / UDP 124.42。4.203:15500;分支= z9hG4bK-d8754z -1049ed261d2e643d-1 --- d8754z-;運動(dòng)
最高-前鋒:70
聯(lián)系人:; expires =
至:“ 19988888888”
來(lái)自:“ 19988888888” ;標簽= 203ba359
呼叫-ID:Yzc4N2IwMzY5OWU4MTdkMzY0NWY4OWU3NjMzNmJiM2U。
CSeq:1個(gè)寄存器
允許:邀請,確認,取消,選項,再見(jiàn),引用,通知,消息,訂閱,信息
用戶(hù)-代理:eyeBeam發(fā)行1105a郵票56793
內容長(cháng)度:
(2)公網(wǎng)服務(wù)器收到請求消息后,將進(jìn)行分析檢測源SIP消息的NAT地址和端口,并會(huì )在響應SIP報文里使用,并通過(guò)端口傳送給客戶(hù)端,如示例中的獲取到的NAT的公網(wǎng)地址(124.42.4.203)和端口(15500):
SIP / 2.0 200確定
通過(guò):SIP / 2.0 / UDP 124.42。4.203:15500;分支= z9hG4bK-d8754z -1049ed261d2e643d-1 --- d8754z-; port = 15500;接收= 124.42。4.203
來(lái)自:“ 19988888888” ;標簽= 203ba359
至:“ 19988888888” ;標簽= 0005-058-7d6dc90516ae2e21
通話(huà)-ID:Yzc4N2IwMzY5OWU4MTdkMzY0NWY4OWU3NjMzNmJiM2U。
CSeq:4個(gè)寄存器
允許:邀請,確認,選項,再見(jiàn),取消,注冊,信息,更新,包,引用,訂閱,通知,消息
聯(lián)系人:
內容-長(cháng)度:
(3)設備在收到響應200OK信息后,從移動(dòng)和接收到的分段里獲取NAT公網(wǎng)地址和端口,設備之后發(fā)SIP消息時(shí)會(huì )更改為路由器公網(wǎng)的IP和端口。如以下,聯(lián)系攜帶變換成124.42.4.203:15500,例如新發(fā)的REGISTER信息轉化為:
注冊Sip:124.40。120.188:5060 SIP / 2.0
通過(guò):SIP / 2.0 / UDP 124.42。4.203:15500;分支= z9hG4bK-d8754z -1049ed261d2e643d-1 --- d8754z-;運動(dòng)
最高-前鋒:70
聯(lián)系人:;到期時(shí)間=
至:“ 19988888888”
來(lái)自:“ 19988888888” ;標簽= 203ba359
通話(huà)-ID:Yzc4N2IwMzY5OWU4MTdkMzY0NWY4OWU3NjMzNmJiM2U。
CSeq:2個(gè)寄存器
允許:邀請,確認,取消,選項,再見(jiàn),引用,通知,消息,訂閱,信息
用戶(hù)-代理:eyeBeam發(fā)行1105a郵票56793
內容-長(cháng)度:
這樣IPPBX(或SIP代理)就會(huì )把SIP報文發(fā)往NAT公網(wǎng)地址和端口,實(shí)現NAT穿透。
2. STUN穿透原理
UDP在NAT上的簡(jiǎn)單遍歷,即NAT的UDP的簡(jiǎn)單穿越,是服務(wù)器-服務(wù)器的一種網(wǎng)絡(luò )協(xié)議,由RFC 3489定義。該協(xié)議定義了一些消息格式,大體上分為請求/響應。幫助位于NAT后的客戶(hù)端獲取自己的公網(wǎng)地址以及NAT為該客戶(hù)端的本地端口所綁定的對外端口。
利用STUN技術(shù)實(shí)現NAT擴展,首先需要構建一個(gè)STUN服務(wù)器(也可以找免費的STUN服務(wù)器),然后在設備上配置STUNserver地址即可。


STUN實(shí)現突破流程:
(1)開(kāi)啟STUN后,設備作為客戶(hù)端,會(huì )自動(dòng)使用SIP端口和不同的RTP端口往STUN服務(wù)器發(fā)STUN探測消息;
(2)服務(wù)器收到后會(huì )在響應消息里攜帶設備所在網(wǎng)絡(luò )的NAT地址和端口;
(3)路由器會(huì )記錄保持對應的NAT地址表
(4)設備收到STUN服務(wù)器響應消息后自動(dòng)記錄NAT公網(wǎng)IP和端口;
(5)設備發(fā)起的SIP報文里contactheader和SDP分段會(huì )自動(dòng)攜帶公網(wǎng)地址;
(6)設備會(huì )定時(shí)刷新STUN報文,用于NAT洞保持打開(kāi)狀態(tài)。
開(kāi)啟STUN報文注冊消息如下:


3.靜態(tài)NAT
靜態(tài)NAT在實(shí)際應用中使用比較少,因為使用靜態(tài)NAT實(shí)現穿透時(shí),路由器的公網(wǎng)IP必須是一個(gè)固定不變的地址,如果是PPPOE撥號上網(wǎng)的網(wǎng)絡(luò ),則不適合啟用這種方式。
啟用靜態(tài)NAT,必須手動(dòng)配置好公網(wǎng)IP,并且需要在路由器里添加端口映射,將設備的SIP端口和RTP端口映射到公網(wǎng)。設備發(fā)出去的SIP消息聯(lián)系頭部和SDP信息里攜帶配置的靜態(tài)公網(wǎng)IP地址,從而實(shí)現NAT穿透。
