啥是內網穿透?舉個栗子,工作中我們經常遇到以下場景:
- web 應用開發
向別人展示我們本機(局域網)的web demo以及調試一些遠程的API (比如微信公眾號,企業號的開發)
- 內網項目的訪問
一般項目部署在內網環境之后,遠程調試(包括數據庫訪問)是比較困難的一件事。這個時候可以使用 tcp 協議去連接訪問,減少了出差的必要性。
- 硬件設備操控
從事物聯網相關行業的用戶和設備打交道比較多,但是大多數情況下,設備很難有自己的公網IP。
這些情況下我們就需要一款神器來讓我們的服務暴露在公網之中,以從其它任何地方進行訪問。那到底我們該怎么做?按照以往的經驗,我們可以選擇花生殼,或者ngrok。
但是今天我要介紹的是一個更好的選擇:serveo。
神奇之處就在于無需下載安裝任何的軟件,一條命令搞定!,更重要的是它免費,完全免費,真的免費,重要的事說三遍!
基本用法
假設你想要在公網之中暴露3000端口,那么你只需在命令終端中輸入以下命令:
ssh -R 80:localhost:3000 serveo.net
終端會用綠色字體提供一個網址(如果是初次輸這條命令,會詢問你是否相信傳送過來的RSA鑰匙指紋,請選擇 yes),你就可以用提供的網址從任何一臺能夠訪問互聯網的電腦,用瀏覽器來進行訪問。如下圖:

其它用法
- 端口轉發
如果對80,443,22以外的端口進行轉發,那將是原始的tcp包
- 自定義域名
綁定自己已有的域名或子域名
更多用法詳情請訪問官網。
windows用戶
由于這個命令是用ssh來生成的,因此只適用于類unix系統,如linux和mac。
但是window用戶也不是沒法使用,只是得走些彎路(經網友提醒,win10已自帶OpenSSH,這里一并討論)。
- 安裝OpenSSH客戶端
- win10
win10默認自帶OpenSSH,如果cmd無法識別ssh命令,那可能是此功能未啟用,需要配置啟用一下。
啟用方法:
- 在Win10任務欄的Cortana小娜搜索框中輸入“可選功能”,然后點擊搜索結果中的“添加可選功能”打開“管理可選功能”窗口。
- 點擊“添加功能”按鈕,在可選功能列表中即可看到“OpenSSH客戶端”。
- 選中它,點擊“安裝”按鈕即可安裝OpenSSH客戶端。
安裝成功之后,在cmd命令提示符窗口中即可運行ssh命令。
- 其它window系統
微軟的Powershell團隊已將OpenSSH進行開源,大家可以到github上下載,請戳這里?;蛘吖P者也將早前下載的上傳了度盤,下載請戳這里。
下載解壓后將解壓目錄添加進PATH環境變量或者進入解壓目錄啟動cmd即可進行ssh操作。
- 安裝git for window,從git bash執行命令
Git for Windows 提供了一個仿真環境,這樣我們可以通過git bash執行ssh命令。
其它問題
- Invalid Host Header
使用了webpack-dev-server的前端項目進行內網穿透的時候,瀏覽器顯示Invalid Host Header。
原因:webpack-dev-server出于安全考慮,默認檢查hostname,如果hostname不是配置內的,將中斷訪問。
解決辦法:設置 webpack-dev-server 的配置項 disableHostCheck 為 true 以禁用這一檢測。