當我嘗試在家搭建私人網盤nextcloud時,遇到一個難題:如何隨時隨地訪問家裡的服務器 ?業界有幾種解決方案:
option1: 租用公網服務器,把應用部署在公網服務器上。優點:安全穩定,不需要維護設備;缺點:需要定期支付租賃費用。
option2: 應用部署在家用服務器上,依賴「內網穿透」(如frps/frpc)訪問家庭網絡。優點:適用家庭寬帶沒有公網IP的場景;缺點:需要租用公網服務器做「代理」,帶寬受公網服務器限制。
option3: 應用部署在家用服務器上,用「端口映射」訪問家庭網絡。優點:帶寬大,且無需租賃服務器;缺點:依賴運營商臨時公網IP。
我嘗試過option1和option2,出於成本考慮我選擇性價比高的option3,畢竟長期租用服務器價格不菲,並且帶寬越大費用也越高。本文是我個人的經驗總結,供大家參考。
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上網
瀏覽器登錄小米路由器管理IP地址(我已改為192.168.0.1),「常用設置」——「上網設置」,上網方式改為「PPPoE」,輸入PPPoE撥號賬號和密碼,點擊「應用」。
小米路由器webUI
路由器設置PPPoE上網
查看「上網信息」——「外網狀態」出現「撥號成功」,即表示路由器撥號成功,網絡已恢復。做到這一步,表示已完成了重要的一半。
路由器撥號成功
2.3 申請免費域名
我使用「公雲(www.pubyun.com)」申請免費域名,註冊登錄後選擇「動態域名」——「創建域名」,輸入域名前綴,這裡就填你想要的域名名字;僅勾選.f3322.net這個免費域名後綴。
pubyun申請免費域名
申請成功後通過「會員中心」可查看自己的域名:
pubyun會員中心
2.4 配置路由器DDNS
瀏覽器登錄小米路由器管理IP地址(192.168.0.1),「常用設置」——「高級設置」——「DDNS」——「添加服務」。這裡的「服務提供商」可以自由選擇,因為我的免費域名是在「公雲」申請的,因此選擇「公雲」。當狀態顯示「連接成功」,表示DDNS配置成功。
DDNS配置
DDNS配置成功
打開windows CMD輸入”ping 域名”測試域名解析,如果ping通,表示域名解析已生效,否則可以點擊「手動更新」。
域名解析測試
2.5 配置端口轉發
瀏覽器登錄小米路由器管理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協議不會對數據進行加密,就好比你的數據在網絡上傳輸是毫無防備的。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/209828.html
微信掃一掃
支付寶掃一掃