1. 程式人生 > >一分鐘實現內網穿透(ngrok伺服器搭建)

一分鐘實現內網穿透(ngrok伺服器搭建)

簡單來說內網穿透的目的是:讓外網能訪問你本地的應用,例如在外網開啟你本地http://127.0.0.1指向的Web站點。

最近公司的花生殼到期了,要續費,發現價格一直在漲,都是5年以上的老使用者,旗艦版都沒有實現內網完全穿透,打算自己動手替換這個服務,中間走了不少的彎路,這裡記錄一些文字為大家提供參考。

隨著開發與執行移動網際網路的應用越來越多對打通內外網的需要也更加迫切,如微信開發、IOS與Android開發等。

雖然租用VPS、ECS等伺服器可以解決很多問題但高效能的外網伺服器價格非常貴還有資料安全問題,我選擇的是公網伺服器僅做代理與輕量應用,複雜的應用部署到內網伺服器再穿透訪問。

一、內網穿透概要

為了理解內網穿透我們先來了解幾個概念:

1.1、IP地址

網路中唯一定位一臺裝置的邏輯地址,類似我們的電話號碼

在網際網路中我們訪問一個網站或使用一個網路服務最終都需要通過IP定位到每一臺主機,如訪問baidu網站:

這裡寫圖片描述

其中119.75.213.61就是一個公網的IP地址,他最終指向了一臺伺服器。

IP地址是IP協議提供的一種統一的地址格式,它為網際網路上的每一個網路和每一臺主機分配一個邏輯地址,以此來遮蔽實體地址的差異。

內網IP可以同時出現在多個不同的區域網絡中,如A公司的U1使用者獲得了192.168.0.5,B公司的U3使用者也可以獲得192.168.0.5;但公網IP是唯一的,因為我們只有一個Internet。

//區域網可使用的網段(私網地址段)有三大段:
10.0.0.0~10.255.255.255(A類)
172.16.0.0~172.31.255.255(B類)
192.168.0.0~192.168.255.255(C類)

1.2、域名

域名是IP的別名,便於記憶,域名最終通過DNS解析成IP地址。

這裡寫圖片描述

IP V4是一個32位的數字,IP V6有128位,要記住一串毫無意義的數字非常困難,域名解決了這個問題。

如www.zhangguo.com.cn就是一個域名,cn表示地區,com表示商業機構,zhangguo是公司名稱,www是主機名

這裡寫圖片描述

DNS查詢過程如下,最終將域名變成IP地址

這裡寫圖片描述

1.3、NAT

NAT(Network Address Translation)即網路地址轉換,NAT能將其本地地址轉換成全球IP地址。

內網的一些主機本來已經分配到了本地IP地址(如區域網DHCP分配的IP),但現在又想和因特網上的主機通訊(並不需要加密)時,可使用NAT方法。

通過使用少量的公有IP 地址代表較多的私有IP 地址的方式,將有助於減緩可用的IP地址空間的枯竭。

NAT不僅能解決了lP地址不足與共享上網的問題,而且還能夠有效地避免來自網路外部的攻擊,隱藏並保護網路內部的計算機。

多路由器可完成NAT功能。

NAT的實現方式:

靜態轉換是指將內部網路的私有IP地址轉換為公有IP地址,IP地址對是一對一。

動態轉換是指將內部網路的私有IP地址轉換為公用IP地址時,IP地址是不確定的,是隨機的。

埠多路複用(Port address Translation,PAT),內部網路的所有主機均可共享一個合法外部IP地址實現對Internet的訪問,從而可以最大限度地節約IP地址資源。同時又可隱藏網路內部的所有主機,有效避免來自internet的攻擊。因此,目前網路中應用最多的就是埠多路複用方式。

應用程式級閘道器技術(Application Level Gateway)ALG:傳統的NAT技術只對IP層和傳輸層頭部進行轉換處理,ALG它能對這些應用程式在通訊時所包含的地址資訊也進行相應的NAT轉換。

這裡寫圖片描述

這裡寫圖片描述