NAT有多種類型,每一種是什么樣的工作原理绘面,請(qǐng)自行g(shù)oogle,在這里不在介紹
這里只介紹媒體(rtp)NAT穿越的案例益楼,信令層的處理不在此范圍
為什么需要媒體NAT穿越
所有的通話氧秘,實(shí)質(zhì)上是點(diǎn)對(duì)點(diǎn)的信息傳輸情臭。(P2P, point to point)
這里的點(diǎn)是指網(wǎng)路上的點(diǎn),每一個(gè)點(diǎn)是有公網(wǎng)IP的赌蔑;但是實(shí)際情況是俯在,很多節(jié)點(diǎn)隱藏在NAT之后,它們只有內(nèi)網(wǎng)地址娃惯。那么之前點(diǎn)之前的連接是無法直連的跷乐。
為了能實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的傳輸,所以內(nèi)網(wǎng)地址的節(jié)點(diǎn)必須獲取到它可以使用的公網(wǎng)地址趾浅。
案例
下面的例子是討論FS在NAT后的情況愕提,如下圖所示
那么FS怎么樣才能獲取到公網(wǎng)IP呢
有兩種方案,
- 如果已知網(wǎng)絡(luò)環(huán)境皿哨,并且明確可知FS可用的公網(wǎng)IP浅侨,可以在配置中直接寫入公網(wǎng)IP地址
- 如果在不確定的網(wǎng)絡(luò)環(huán)境,或者公網(wǎng)地址可變的情況下证膨,可以使用stun服務(wù)來動(dòng)態(tài)獲取
配置參考
配置項(xiàng)都是一樣如输,在external.xml中(因?yàn)樽髡咧皇褂胑xternal.xml所以在此配置,各位根據(jù)實(shí)際需要)
配置項(xiàng)為ext-rtp-ip
像上圖樣例中,可以配置
注意同樣有一個(gè)項(xiàng)叫ext-sip-ip,它是走sip的不见,是信令層使用的澳化。這里我們只討論RTP,所以配置ext-rtp-ip稳吮。
同樣缎谷,可以配置為stun服務(wù)器地址,如
配置完畢后灶似,可以登陸FS控制臺(tái)列林,輸入sofia status profile external
來查看配置情況
有關(guān)stun server
網(wǎng)路上有很多免費(fèi)的stun server地址可以使用,那么是否可以工作呢喻奥?
有兩個(gè)檢查辦法席纽,
第一個(gè)是網(wǎng)上很多人介紹的,在這里檢查
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/-
第二個(gè)就是使用FS的命令工具
在FS控制臺(tái)里輸入stun stun1.l.google.com:19302
撞蚕,便可以查看到結(jié)果
配置stun后實(shí)戰(zhàn)結(jié)果如何檢測(cè)润梯?
因?yàn)檫@個(gè)ext-rtp-ip是寫入SDP中的,所以最直接的方式就是抓包甥厦,然后看信令中的SDP消息纺铭。下面是SDP樣例如