• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當前的位置是:  首頁 > 新聞 > 國內 >
     首頁 > 新聞 > 國內 >

    SIP系列講座-SIP-防火墻-NAT-Hole Punching探討

    2017-11-13 14:51:23   作者: james.zhu   來源:CTI論壇   評論:0  點擊:


      在前面的講座中,我們討論了基于SIP的安全機制和一些解決方式。在接下來的講座中,我們要針對性地討論關于SIP互聯(lián)互通中存在的一個核心問題-NAT問題。
      VOIP的運行需要對接很多公網資源,例如,對接運營商的SIP中繼,對接第三方的其他支持服務器,對接分公司業(yè)務等等數據。但是,無論怎么對接,用戶都需要一個標準的網絡架構來實現內網分機和外網的互聯(lián)互通。因為,網絡地址資源的限制,所以,內網和外網的互聯(lián)互通就需要一個內網地址轉換的機制,通過一個外網轉換到多個內網的地址。這里,就涉及到了路由器防火墻和應用業(yè)務的端口管理問題,其中有一些應用可能還不是問題,但是對SIP的語音通信來講,這是一個非常具有挑戰(zhàn)性的難題。為了幫助讀者盡快了解這些相關的技術細節(jié),我們盡可能在有限的篇幅中對NAT提供多角度,多維度的討論,幫助用戶盡快了解這些必要的技術。
      今天,我們將重點討論以下幾個方面的內容,它們包括:防火墻,關于NAT的相關基礎概念,UDP 打洞介紹,NAT的類型。
      1、請讀者注意,這里我們討論所有的相關細節(jié)時不會介紹太多和本話題不相關的技術內容,所以,筆者建議用戶首先了解一般的網絡環(huán)境和知識點,以免引起造成困擾。在討論NAT之前,我們首先解釋一下關于為什么防火墻的對NAT處理有影響。以下圖例解釋了一個簡單的防火墻的工作拓撲圖:
      這里,防火墻置于企業(yè)網絡邊界的地方,防火墻的工作就是保護公司內網的安全。關于防火墻的具體功能和配置,我們這里不再介紹。但是,為了配合SIP的相關話題,我們這里再次強調一下關于防火墻的使用環(huán)境的問題,一般意義上,防火墻的應該是:
    • 防火墻對網絡數據進行策略管理,數據流量管理。
    • 防火墻對某些設備進行權限的設置管理。
    • 防火墻一般允許內網用戶訪問外網,同時允許內網訪問外網時返回的數據進入到內網。
    • 防火墻通常允許HTTP,SMTP這些一般的工作應用業(yè)務進行數據傳輸。
    • 防火墻通常對SIP不太友好,可能過濾SIP端口,RTP 端口。

    • 防火墻只能對外網進行保護,但是不能對內網軟件病毒或者其他內網設備發(fā)起的攻擊進行保護。所以,進來避免在內部電腦安裝其他的未授權的第三方軟件。
      2、大家知道,如果我們給公司公網申請一個固定IP地址的話是需要付費的,IP地址是一個緊缺資源,IPv4的地址資源已經非常緊缺。通常情況下,一個可以上網的網絡環(huán)境至少需要一個公網的地址,這個公網地址對應內部網絡地址(Class A, Class B 和Class C)進行轉換。RFC 6314 和RFC 4787對NAT做了規(guī)范。
      為了實現一個公網地址對應多個內網地址來實現正常的網絡訪問,我們必須使用一個NAT的機制,我們簡單稱之為網絡地址轉換(1:N),通過NAT可以實現公網地址轉換為內網地址的作用。關于更多的NAT介紹,讀者可以參考網絡上的學習資料學習,這里不做過多討論。根據德國研究人員Florian Wohlfart對一般小型企業(yè)和家庭用戶對NAT的測試,根據網絡的不同,NAT過濾的比例也完全不同,所以NAT確實影響了數據的正常互通。
      以下是一個內網終端訪問外網的IP狀態(tài),讀者通過以下圖例可以看到,內網地址在通過防火墻到公網,然后到達另外一個公網地址時,自己的內網IP地址已經給替換成了公網的IP地址。在公網出局之前,內網地址會被過濾。
      對端網絡響應的消息將會返回到防火墻,然后通過路由器策略返回到請求的終端IP地址。
      上面,我們看到的是終端和服務器端的互通,現在我們看看兩個帶NAT的終端直接互通的實現方式。在以下的示例中,兩個帶NAT的終端都需要注冊到公網以外的服務器,然后實現正常的通信流程。
      如果兩個終端需要直接互通的話,可以對服務器發(fā)出請求,然后服務器對其注冊策略進行調整,讓兩個終端可以自己直接協(xié)商,兩個終端設備打洞以后實現雙方的直接互通。下面,我們介紹幾個不同NAT的流程處理方式:
      同一NAT Hole Punching的一個具體流程:
      不同NAT環(huán)境下 Hole Punching的處理流程:
      多層NAT處理流程和一層NAT的處理機制基本上相同,但是多了一層協(xié)商的機制。網絡環(huán)境也變得更加復雜。
      我們一直討論再不停解釋協(xié)商的概念,大家知道,UDP是一種不可靠的傳輸方式,需要端口一直處于存活狀態(tài)。如果打開的洞好久時間沒有數據交換,可能這個洞就會關閉。所以在UDP的打洞時也使用了定時器的開關來保證一定時間內這個洞是開放的狀態(tài)。但是,不幸的是,很多NAT設備的設置和定時器的設置可能都不完全相同,一些設備的NAT的定時器設置一般為20秒,如果為了保證會話一直存活的話,可能需要調整定時器的時間長度,在網絡中不停發(fā)送keep-live的數據包,可能在很短早期需要再次重新發(fā)送這些數據包,讓打開的這個洞一直參與存活狀態(tài)。但是,更為不幸的是,這樣的做法同樣生成很多的無效數據,耗費了很多網絡資源。
      上面我們討論了關于UDP 打洞的幾個方式和UDP打洞的定時器設置問題。既然有關于UDP的打洞的方式就會有基于TCP的打洞方式。關于TCP的方式,因為篇幅的關系,而且在我們的SIP案例中的使用量不多,所以,我們這里不再繼續(xù)展開討論。讀者可以參考Bryan Ford 發(fā)表的文章做進一步的研究,他的文章也討論了關于基于UDP打洞和TCP打洞的測試方式和測試流程。
      根據Bryan發(fā)表的完整,在實際生產環(huán)境中,用戶對各種路由器的使用比例做了一個統(tǒng)計,以下是統(tǒng)計結果:
      在使用點對點處理打洞的方法上,業(yè)內有很多公司也使用了UDP Hole Punching 來保證用戶的連接效果。Tribler的測試結果可以作為一個參考,根據它們官方數據,成功率都在85%以上。Tribler使用的具體測試方法和工具,請讀者查閱參考資料鏈接。
      下面,我們結合一些我們經常使用的場景來形象化地解釋一下打洞的實現方式。這些場景可能是:點對點的通信,或者服務器端的的Bypass功能。以下圖例是經過雙方協(xié)商以后,實現雙方互通的流程。
      如果終端都在同一NAT的內網環(huán)境中,系統(tǒng)也可以實現互通連接。這里,我們拿一個目前最為典型的云托管的FreePBX舉例。如果兩個終端都在同一內網,而且?guī)AT環(huán)境。首先,兩個終端都需要實現SIP信令的連接,確保連接成功。
      在這種情況下,IPPBX可以支持內網之間的互通,兩個同一內網的終端就可以實現語音或視頻的通話。這樣相對節(jié)省了很多網絡的資源。但是,也存在很多缺點,例如,影響計費功能,影響系統(tǒng)錄音功能。關于IPPBX終端直接互通的功能的設置和影響,我們在以前的Asterisk功能設置的講座中已經提及,這里不再繼續(xù)討論。
      但是,在現實的網絡環(huán)境中,我們的網絡架構也遠遠不是我們介紹的那樣簡單。很多網絡已經涉及了多個NAT的環(huán)境,多個網絡地址,而且不同的防火墻對SIP的過濾也有所不同。
      在實際運行環(huán)境中,比較典型的實例就是關聯(lián)了SIP內網地址,如果內網的終端SIP消息在出局時,防火墻經過了NAT以后,相關的內網SIP 頭消息都會被丟棄或者修改(Via,Contact,SDP中的c),發(fā)送出去的只有公網IP地址的消息。如果外網終端返回響應的消息時,路由器就可能丟棄這些無效的消息,或者無法做出路由策略的判斷,返回的消息也不知道如何路由到內網相應的終端。
      3、剛才,我們介紹了NAT對SIP的影響,現在,我們介紹一下NAT的四種類型和各自的不同。完整的NAT類型的定義可以參考維基百科的定義。
      根據以下圖例我們可以看到,不同的NAT類型,對IP地址和端口的定義是完全不一樣的,通過不同的IP地址和端口的組合限制來確定NAT的類別。
      以上圖例來自思科網絡資料
      簡單來說,以上四種類型的定義為:
    • Full Cone來自網絡所有的請求都轉發(fā)到一個內網地址,IP地址,端口都不受到限制。
    • Restricted Cone則限定某些外網的IP可以可以轉發(fā)到相應的一個內網地址,端口可以變動。
    • Port Restricted Cone則要求具體的IP地址和端口都限定。
    • Symmetric Cone則可以同時支持多個IP地址/端口的版本,端口和IP地址必須是一組的限定。
      從幾個類型的定義看,NAT類型對網絡的要求是完全不同的,Full Cone是最為寬松的,而Symmetric是最為嚴格的。我們這里根據不同的顏色和字體表示對NAT轉換的寬松程度。當然,越來越寬松勢必帶來很多的網絡安全隱患問題和其他的問題。
      運營商或者網絡本身也有對NAT的很多方面的限制。幾年前,德國研究人員在德國和美國針對中小型企業(yè)和家庭網絡調查得出的各種NAT的比例:
     Tribler 公司對用戶做的NAT環(huán)境的調查結果,幾種NAT對用戶網絡的影響:
    • 基于全球的NAT分布狀態(tài):
    • 因為NAT連接超時的頻率:

    • 盡管NAT問題非常復雜,很多商業(yè)公司提供了NAT測試的工具,用戶可以下載測試。Nattest 公司提供關于NAT檢測的一些解決方案,這家公司也提供檢測NAT的工具檢測超時,端口存活等狀態(tài)數據。
    • 客戶端對服務器端發(fā)送請求,服務器端返回響應消息。這樣的交互大約要互相發(fā)送100多次,才能獲取到真實的數據。
      以下是檢測關閉的測試流程。
      4、在上一個部分我們介紹了NAT的幾種類型,現在我們主要針對SIP終端結合NAT做一個簡單的介紹。以下圖例簡單解釋了SIP失敗的原因,用戶可以查閱RFC6314對NAT做更多了解。
      以下圖例表示了UA呼叫外網的NAT類型,full cone 對所有外網開發(fā)。
      以下圖例限定僅對IP地址開發(fā),即使用戶使用不同的端口。
      以下圖例限定了用戶使用的端口和IP地址。
      以下圖例說明用戶同時限定了在同一會話時IP地址和端口的匹配。
      總結,在本章節(jié)中我們介紹了關于防火墻的基本概念,另外,我們也討論了NAT的形成和一些關于NAT的打洞的技術討論,以及市場上各種NAT所在比例,我們還通過各種圖例結合SIP場景介紹了NAT的幾種類型。通過以上對NAT的完整介紹,筆者希望用戶對NAT有一個完整的概念。在接下來的章節(jié)中,我們將介紹如何通過各種解決方案來解決NAT的問題。
      參考資料:
      https://tools.ietf.org/html/rfc6314
      https://tools.ietf.org/html/rfc4787
      http://www.brynosaurus.com/pub/net/p2pnat.pdf
      http://conferences.sigcomm.org/co-next/2013/workshops/HotMiddlebox/program/p43.pdf
      https://www.tribler.org/NATMeasurements/
      http://www.ds.ewi.tudelft.nl/reports/2010/PDS-2010-007.pdf
      更多開源VOIP行業(yè)知識,請關注我們的微信號:asterisk-cn, 訪問技術論壇:www.issabel.cn/forum 獲得開源融合通信軟件。
    【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 华亭县| 邢台县| 贵定县| 兴宁市| 和平县| 永昌县| 孙吴县| 唐海县| 保靖县| 义乌市| 防城港市| 龙泉市| 静安区| 太仓市| 上思县| 肥西县| 萝北县| 开原市| 余庆县| 石河子市| 嘉荫县| 璧山县| 利津县| 德庆县| 娱乐| 鹤山市| 南雄市| 邢台县| 仁布县| 资兴市| 驻马店市| 昭苏县| 洪泽县| 黄石市| 仙游县| 广灵县| 临夏市| 孟州市| 松原市| 新闻| 霸州市| http://444 http://444 http://444 http://444 http://444 http://444