簡單聊聊內網穿透(背景-概念-原理-工具對比)

2023-06-20 06:00:38

1、背景

  • 我們平常使用手機和電腦上網,需要存取公網上的網路資源,如逛淘寶和刷視訊,那麼手機和電腦是怎麼知道去哪裡去拿到這個網路資源來下載到原生的呢?
  • 就比如我去食堂拿吃的,我需要知道食堂的地址,手機和電腦還有儲存網路資源的伺服器和我們人用的地址一樣,這些裝置有一個網路ip地址,當我們需要存取公網上的網路資源時,比如逛淘寶或刷視訊,我們的手機和電腦會向公網上的 DNS 伺服器(如常見的8.8.8.8、114.114.114.114 etc.)傳送一個請求,請求其轉換域名(如"www.taobao.com")為相應的 IP 地址。DNS 伺服器會返回相應的 IP 地址給我們的手機和電腦。
  • 目前的網站基本上都是基於IPv4地址。
  • 我們現在用的網路地址是來自1981年釋出的第四代:IPv4,有2^32約等於43億個ip地址,在2019年11月25日日,全球五大區域網際網路註冊管理機構之一的歐洲網路協調中心(RIPE NCC)宣佈IPv4 地址已全部用完。
  • 眾所周知,我們要存取公網上的資源,必須要有公網ip,但是在ip地址已經用完的情況下,我們的裝置又如何去存取呢?
  • 為了解決這個問題,在ipv4地址已經分配完不夠用的情況下,創新派發明瞭ipv6地址,號稱可以給地球的每一粒沙子都可以分配一個IP地址,這個IPv6正在普及中,在沒有ipv6地址的情況下,守舊派在94年提出了Nat地址轉換。
  • 什麼是NAT?打個比喻,在IPv4地址夠用的情況下,整個小區的網路給分配一個外網地址,大家都共用一個,隨著裝置增多,外網ip地址沒有那麼多的情況下,繼續套娃,又多新增了一層NAT網路地址轉換,這時候可能好幾個小區共用一個外網地址。大家共用一個外網ip地址去存取網路上的資源。
  • 這個時候,我們雖然IPv4地址少,存取外網資源的問題是解決了,但是帶來的問題就是從外網存取我們內網的裝置卻無法存取。
  • 在這個背景下,內網穿透誕生了。

2、基礎概念

  內網穿透是一種將內網中的網路服務通過對映到公網伺服器上,使得公網使用者端可以直接存取內網中的網路服務的技術。正常情況下,內網中的計算機和網路裝置只能在內網中互相通訊,對於外網中的計算機來說,無法直接存取內網中的計算機和網路裝置。這就導致了內網與外網之間的資訊交換存在著困難和瓶頸。而內網穿透技術則可以打通這個障礙,讓內網與外網之間的資料流動變得更加暢通和便利。

3、內網穿透原理(用frp舉例)

 

4、內網穿透解決的一些痛點或者使用場景

  • 遠端辦公:內網穿透可以使公司員工在外部網路環境下,通過公網連線到受管控的內部網路,方便地存取內部資源,實現遠端辦公。(目前已經被vpn取代)
  • 雲伺服器:使用內網穿透技術可以讓公司內部的伺服器、資料庫等資源可以通過公網被存取,同時保證資料傳輸的安全性。(有點本地伺服器上雲的意思)
  • 家庭網路:家庭網路中有時會存在一些需要遠端存取的裝置,例如網路儲存、智慧家居裝置、攝像頭等,使用內網穿透可以輕鬆地從外部存取這些裝置,方便使用者進行遠端監控、資料儲存等操作。(常見的有NAS和軟路由)
  • 服務測試:在進行開發或偵錯時,有時需要在本地進行服務測試,使用內網穿透技術可以直接通過公網存取原生的服務,避免了因網路隔離而無法進行測試的情況。(本地搭建一個網站或介面服務,分享給外網的人使用,微信本地開發)

  ps:以上的前提條件是裝置可以存取外網

5、常見的內網穿透工具對比

  

   這四款內網穿透工具我本人有幸都有用過,在我沒有擁有帶公網ip的雲伺服器之前,我最早用的是ngrok和花生殼,這2個工具的優勢就是,只需要設定一個使用者端,你設定好本地需要對映到外網的埠,就可以使用,但是在免費的情況下,有所限制,例如摳搜的花生殼只提供1G流量,我當時用花生殼是在公司內網的伺服器搭建了一個禪道系統,伺服器常開,讓外網的同事也能存取到內網的bug系統。

  

 

  

  有了雲伺服器之後,研究了frp,這個可以不受花生殼和ngrok的流量等限制,但是需要自己去搭建使用者端和伺服器端,一一設定對應的埠,有一個後臺可以自己設定。

  

 

  再後來,就是現在使用的ZeroTier,我的需求只要可以存取到家庭中的裝置即可,這個工具的好處是,可以定義一個虛擬的區域網,然後可以給加入這個網路的裝置定義一個ip地址,這些裝置可以通過這個虛擬的區域網ip地址互相進行存取,不需要和前面3個工具那樣,需要設定每個埠本地和伺服器端的對應關係,這個埠多了極其方便。速度方面,這個會自動嘗試給進行網路打洞,進行p2p連線,只要打洞成功,端對端速度非常快。如果p2p連不上的情況下,才會走類似上面3個工具的埠轉發技術,如果對不能打洞連線的存取速度有要求,或者說免費的25個裝置不夠用,可以自行搭建moon伺服器來進行擴充套件。