最近,我?guī)鸵晃慌笥雅渲昧讼聫墓W(wǎng)訪問家里 Web 應(yīng)用。

背景
這位朋友自己基于 Django 寫了一個(gè) Web 應(yīng)用,部署在自己電腦的虛擬機(jī)上。但是想讓其他同事訪問時(shí),卻犯了難,應(yīng)該該怎樣將這個(gè) Web 應(yīng)用暴露到公網(wǎng)上呢?
解決方案
我首先想到的是通過 NAT 轉(zhuǎn)換來實(shí)現(xiàn)。NAT 轉(zhuǎn)換是一種將內(nèi)網(wǎng) IP 地址映射到公網(wǎng) IP 地址的技術(shù),可以支持通過公網(wǎng) IP 訪問到位于內(nèi)網(wǎng)的 Web 應(yīng)用。
但是,在實(shí)際配置過程中,我需要解決兩個(gè)問題。
第一個(gè)問題
朋友家里使用的是運(yùn)營商提供的光貓和路由器。光貓負(fù)責(zé)撥號(hào)上網(wǎng),路由器負(fù)責(zé)將光信號(hào)轉(zhuǎn)為電信號(hào)并提供無線網(wǎng)絡(luò)。但是,運(yùn)營商提供的光貓和路由器并沒有 NAT 轉(zhuǎn)換功能。
為了解決這個(gè)問題,我讓朋友聯(lián)系運(yùn)營商,將光貓的網(wǎng)絡(luò)模式改為橋接模式。橋接模式下,光貓將光信號(hào)轉(zhuǎn)為電信號(hào)后,將數(shù)據(jù)直接傳遞給路由器,路由器負(fù)責(zé)進(jìn)行撥號(hào)和其他網(wǎng)絡(luò)功能。好在聯(lián)通很好說話,當(dāng)即答應(yīng)可以修改。
早幾年運(yùn)營商的設(shè)備是可以通過超級(jí)用戶登錄進(jìn)去自己修改的,但現(xiàn)在可能都禁用掉了,我搜索了幾個(gè)賬號(hào)密碼,測(cè)試都沒成功。
修改為橋接模式后,朋友將路由器也升級(jí)為華碩的 AX5400,這已經(jīng)屬于是比較高端的設(shè)備了。
撥號(hào)成功連上網(wǎng)絡(luò)后,我再次遠(yuǎn)程過去,進(jìn)行配置。在這臺(tái)路由器上配置 NAT 轉(zhuǎn)換非常簡(jiǎn)單,只需在路由器的管理界面中找到 端口轉(zhuǎn)發(fā) 功能,然后添加一條規(guī)則,將內(nèi)網(wǎng) IP 地址和端口映射到公網(wǎng) IP 地址和端口即可。

當(dāng)時(shí)沒有截圖,網(wǎng)圖一張,侵權(quán)即刪
第二個(gè)問題
當(dāng)我們通過公網(wǎng) IP 加端口號(hào)訪問時(shí),每當(dāng)家用寬帶公網(wǎng) IP 地址發(fā)生變化,我們就得使用新的公網(wǎng) IP 進(jìn)行訪問,這非常不方便。
但好在一分錢一分貨,這臺(tái)華碩的路由器功能一應(yīng)俱全,除了 NAT 還有 DDNS。DDNS 是動(dòng)態(tài)域名解析的縮寫,可以將一個(gè)固定的域名映射到一個(gè)動(dòng)態(tài)變化的公網(wǎng) IP 地址,以便訪問者能夠通過域名訪問web應(yīng)用。
這臺(tái)路由器上有很多 DDNS 服務(wù)商,我選用了華碩自己的 DDNS,
一個(gè)是方便,不需要另外去配置,
第二個(gè)是軟硬一體,使用起來會(huì)更有優(yōu)勢(shì)。
我自己的華為路由器配置 Oray 花生殼 DDNS 就碰到過經(jīng)常斷開連接的問題,后來去花粉論壇發(fā)帖尋找售后,推送了更新才解決。
在路由器上配置 DDNS 也非常簡(jiǎn)單,只需在路由器的管理界面中找到 DDNS 功能,然后選擇一個(gè) DDNS 服務(wù)商并填寫相關(guān)信息即可。

當(dāng)時(shí)沒有截圖,網(wǎng)圖一張,侵權(quán)即刪
避開運(yùn)營商常見封禁端口
在完成了 NAT 轉(zhuǎn)換和 DDNS 配置后,朋友的 Web 應(yīng)用已經(jīng)可以通過域名訪問了。但是,在測(cè)試過程中,我們發(fā)現(xiàn) Web 應(yīng)用的端口(8000)無法訪問。經(jīng)過檢查,我們發(fā)現(xiàn)運(yùn)營商可能封禁了8000端口。將 Web 應(yīng)用的端口改為隨機(jī)端口后,就可以正常訪問了。
順利完成需求
經(jīng)過一番努力,我們最終成功地將朋友的 Web 應(yīng)用暴露到了公網(wǎng)上,可以通過域名直接訪問。
整個(gè)過程雖然遇到了一些問題,但大家配合得很好,最終都取得了圓滿的結(jié)果。
實(shí)現(xiàn)內(nèi)網(wǎng)穿透的其他方案
實(shí)際上,如今實(shí)現(xiàn)內(nèi)網(wǎng)穿透的方式有很多,也有一些其他的軟件可以使用,比如 FRP、Ngrok 等,或者直接使用現(xiàn)有的商業(yè)方案,比如花生殼。
大家只需要按照實(shí)際情況,選擇最適合自己的方案就行了