當我嘗試在家搭建私人網盤nextcloud時,遇到一個難題:如何隨時隨地訪問家裡的伺服器 ?業界有幾種解決方案:
option1: 租用公網伺服器,把應用部署在公網伺服器上。優點:安全穩定,不需要維護裝置;缺點:需要定期支付租賃費用。
option2: 應用部署在家用伺服器上,用“內網穿透”訪問家庭網路。優點:硬體、資料在自己手裡,免租賃費用,一次付出永久回報;缺點:需要自己做裝置維護,網路安全,資料安全,有技術門檻。
我嘗試過兩種方案,出於成本考慮我選擇價效比高的方案二,畢竟長期租用伺服器價格不菲,並且頻寬越大費用也越高。本文是我個人的內網穿透經驗總結,供大家參考。
1 前提
開始之前,請確認是否滿足下列條件,缺一不可。
需要寬頻撥號賬號和密碼;需要確認寬頻使用公網IP;需要路由器有DDNS功能;需要獲取光貓超級許可權。1.1 需要寬頻撥號賬號和密碼
家庭寬頻採用撥號上網,即PPPOE上網。通常寬頻上門安裝時,運營商工作人員會設定好光貓撥號上網,並提供使用者名稱密碼。如果不記得使用者名稱密碼,可撥打運營商熱線電話詢問。
1.2 確認寬頻是否有公網IP
電信寬頻往往會有動態公網IP(ipv4),而移動寬頻通常沒有動態公網IP,需要自己確認清楚。有一種方法可供確認:
1)查詢家用網路對外IP地址:
IP地址查詢
2)登入光貓檢視WAN口IP地址:
以電信光貓為例,光貓背後往往有IP地址、賬號、密碼,如下圖:
“光貓”銘牌
瀏覽器位址列訪問192.168.1.1,使用賬號useradmin和密碼登入,查詢WAN口IP地址。
如果上述兩個IP一致,表示家用寬使有公網IP。否則,可以嘗試撥打運營商熱線電話要求提供動態公網IP。
1.3 確認路由器DDNS功能
我使用的是小米AC2100,登入路由器管理地址選擇“高階設定”會看到“DDNS”,這表示路由器具有DDNS(動態域名服務)功能。
小米路由器webUI
1.4 獲取光貓的超級許可權
光貓銘牌上的useradmin不是超級賬號,telecomadmin才是超級賬號,這裡需要獲得telecomadmin賬號的密碼。由於我的光貓年代久遠(2015年),獲取密碼很簡單,可以參考豆瓣文章《烽火HG261GS破解超級使用者密碼》。其他型號如果百度不到就求助萬能的淘寶吧。
2 開始配置
2.1 配置光貓為橋接模式
瀏覽器登入光貓IP 192.168.1.1,輸入超級賬號telecomadmin,以及密碼。
光貓webUI
進入“網路”——“寬頻設定”——“Internet連線”,連線名稱選擇“4_INETERNET_B_VID_41”,連線型別選擇“Bridge”,儲存配置。注意,修改光貓配置會導致暫時斷網。
光貓配置橋接模式
2.2 配置路由器PPOE上網
小米路由器webUI
路由器設定PPPoE上網
檢視“上網資訊”——“外網狀態”出現“撥號成功”,即表示路由器撥號成功,網路已恢復。做到這一步,表示內網穿透配置已完成了重要的一半。
路由器撥號成功
2.3 申請免費域名
我使用“公雲(www.pubyun.com)”申請免費域名,註冊登入後選擇“動態域名”——“建立域名”,輸入域名字首,這裡就填你想要的域名名字;僅勾選.f3322.net這個免費域名字尾。
pubyun申請免費域名
申請成功後透過“會員中心”可檢視自己的域名:
pubyun會員中心
2.4 配置路由器DDNS
瀏覽器登入小米路由器管理IP地址(192.168.0.1),“常用設定”——“高階設定”——“DDNS”——“新增服務”。這裡的“服務提供商”可以自由選擇,因為我的免費域名是在“公雲”申請的,因此選擇“公雲”。當狀態顯示“連線成功”,表示DDNS配置成功。現在離內網穿透只有一步之遙。
DDNS配置
DDNS配置成功
域名解析測試
瀏覽器登入小米路由器管理IP地址(192.168.0.1),“常用設定”——“高階設定”——“埠轉發”——“新增規則”,配置你想暴露出去的【名稱、協議、外部埠、內部IP地址、內部埠】,除了80和443埠不能用,其他埠都可以配置。以我的配置test為例,協議選擇“TCP和UDP”,外部埠“8888”,內部IP地址為“windows本機IP”,內部埠“8888”。
3 測試
3.1 啟動windows本地測試服務
我用了nodejs的一個簡單命令列http伺服器http-server(需要安裝nodejs,http-server庫)做測試,伺服器監聽本地IP地址192.168.0.81的8888埠,如下所示:
啟動測試程式http-server
瀏覽器輸入http://192.168.0.81:8888測試http-server是否可訪問,出現下面介面表示訪問成功。
http-server訪問測試
3.2 測試內網穿透
瀏覽器輸入“http://域名:8888”測試,出現下面介面表示內網穿透成功!開啟手機瀏覽器(關閉wifi,避免連上家裡的區域網)訪問“http://域名:8888”也能同樣出現下面介面!這就是內網穿透的魅力,即使不連線無線路由器,也能訪問家裡的服務。
內網穿透測試
這是我搭建的nextcloud網盤介面,已經可以透過“域名:埠”的形式訪問。
內網穿透訪問nextcloud
4 結語
儘管內網穿透看起來很美好,但它仍然美中不足。最重要的一點是免費域名只能透過http訪問,而不是https!http協議不會對資料進行加密,就好比你的資料在網路上傳輸是毫無防備的。
隨時隨地訪問私人網盤(或NAS)只是一種應用,內網穿透更像打開了一扇網路大門,讓你有了更多的可能性。你可以在自己的伺服器上部署各樣的應用,如同私人定製一樣。