奧推網

選單
科技

...聰明的少年呦,耐心點啊!這真的是最後一篇了呦!——內網穿透基礎篇3.0

作者:月色夜冷

導言

在上篇文章中,我們已經討論了怎麼簡單高效的在有公網的情況部署內網穿透服務。但是,很可惜的是,現在的寬頻基本上已經不可能給你公網ip了(在這裡,點名批評一下移動寬頻,就是一個大內網),能分給你的只有10開頭的內網(私網)IP(已經在運營商那裡NAT(網址轉換,公網轉私網)一次或者多次了),這種情況就沒有辦法再用簡單的DDNS+埠對映進行內網穿透了。這個時候我們就需要透過搭建隧道+埠轉發來實現內網穿透了。

正文

現在大部分家庭寬頻的網路結構都是下面這種情況

在開始之前,先確認一下自己的寬頻是否有公網IP。

先開啟百度搜索,在搜尋欄裡輸入 IP

這裡顯示的是你正在使用的公網IP,比如我正在使用的是117開頭的公網IP。

然後再去撥號裝置的WAN側檢視裝置獲取的IP

如果撥號裝置WAN側獲取的IP地址和你在百度詢的IP地址一樣,那麼,恭喜你!你的寬頻能獲取公網IP地址。如果你的撥號裝置WAN側獲取的IP地址跟我一樣,是一個10開頭的私網IP地址,那就是沒有公網IP。

沒有公網IP的話,那就只能透過搭建隧道+埠轉發的方式進行內網穿透了。根據實現搭建隧道+埠轉發的原理,可以簡單的分為兩種穿透型別:

伺服器中轉穿透和點對點穿透

伺服器中轉穿透

透過伺服器中轉這種方式穿透成功率很高,基本上可以達到100%。而且它不限網路NAT型別,只要連線上了網際網路就能被網際網路上的其它裝置訪問到。所以,市面上大多數內網穿透產品都是採用這種型別實現穿透,比如向日葵遠端控制、teamvierwer遠控、ngrok反向代理、FRP反向代理等等。

可以把伺服器中轉穿透的過程簡單的分為三步:打通隧道>>埠轉發>>原路轉發響應報文。

以FRP反向代理為例簡單說一下伺服器中轉穿透的原理:

有一天,韓梅梅跟李雷說她下載了一部很好看的電影,存放在家裡的NAS裡,問李雷有沒有什麼辦法用隨時隨地用手機觀看家裡NAS裡。身為技術宅的李雷覺得是時候向美女展示真正的技術了。經過實地考察,李雷發現韓梅梅家的寬頻是移動寬頻,沒有公網,所以需要內網穿透才能訪問到她家裡的NAS。考慮到手上剛好還有一臺有公網的雲伺服器(VPS),於是決定搭建FRP反向代理伺服器進行內網穿透。

經過不懈的努力,李雷終於在有公網VPS(公網地址是:183。216。230。121)搭建好了FRP服務端,又在韓梅梅家部署了FRP客戶端。完全部署好後,在手機或者其它聯網裝置瀏覽器上輸入:183。216。230。121+埠號就能訪問韓梅梅家的NAS了。韓梅梅試用了之後表示很滿意,表示願意一起觀看電影。但李雷表示網路太有趣太好玩了,要好好的研究一段時間,很乾脆的拒絕了韓梅梅的建議,並提醒她雲伺服器只有一個月的有效期了,要趕緊續費。

透過上面的場景,各位值友應該知道需要一個有公網的雲伺服器或者電腦安裝服務端作為節點,被訪問的裝置安裝客戶端。網際網路的裝置先訪問節點,節點接收到請求後轉發給被訪問裝置的客戶端,客戶端把資料轉發給被訪問的裝置,被訪問的裝置收到請求後把應答原路傳送到網際網路的訪問裝置。

伺服器中轉穿透的資料傳輸速度取決於寬頻的上行速度和伺服器(節點)寬頻。

點對點穿透

伺服器中轉穿透最大的缺點就是在內網穿透傳輸大量資料時如果都經過伺服器中轉的話,這樣會對伺服器端頻寬壓力比較大。這個時候,可以考慮用點對點穿透,即P2P技術。但是,並不是所有網路環境下,都可以採用 點對點穿透。理論上來說,只要是Cone NAT(錐形網路)就可以用點對點穿透,Port Restricted Cone(埠限制圓錐型)、Address Restricted Cone(地址限制圓錐型)、Full Cone(完全圓錐型)都可以。但是Symmetic(對稱性網路)不行,只能透過伺服器中轉穿透。網路型別可以用NatTypeTester。exe 測試。

點對點穿透實際執行過程是比較複雜的,在這裡大致的說一下原理。點對點穿透也需要一個具有公網的伺服器,不過用途不一樣,在這裡是作為信使使用。李雷的電腦對信使說我要訪問韓梅梅家的NAS。信使說你等會兒,我幫你聯絡一下,信使對韓梅梅家的NAS說,有人要訪問你,告訴我你的地址和埠,我轉告給他。韓梅梅家的NAS告知了信使自己的地址和埠,並且從信使那裡獲取了李雷家電腦的地址和埠。雙方都知道對方的地址和和埠後就開始進行資料交換了,這個時候資料傳輸是不經過信使的,都是點對點進行傳輸。這個時候的傳輸速度取決於雙方的寬頻。

用點對點穿透技術的有zerotier、pwnat、FRP的XTCP協議等。這種穿透方式雖然看起來很美好,但是有一個致命的缺陷,那就是不穩定。即使是在Full Cone網線環境下,也有很大的機率穿透失敗。

總結

接下來就可以根據各自的網路環境來部署內網穿透了。祝大家玩的愉快!