ngrok(內網穿透)配置全過程

2021-08-17 20:20:53 字數 2097 閱讀 1585

ngrok是乙個開源的內網穿透服務(1.7之前的版本),通過反向**實現埠間的對映,使得內網服務(內網中所有的機器)能夠通過外網ip/網域名稱進行訪問(將請求**至指定機器,內網中安裝乙個客戶端即可)。

一台有外網ip的可提供服務的伺服器(用來執行ngrok服務端)

go語言環境

開放防火牆埠

ngrok github位址

github上面提供的是服務端的原始碼,客戶端是在指定配置之後編譯生成的。

安裝go語言環境

安裝ngrok,編譯生成客戶端

git clone  

cd ngrok

配置證書資訊,以生成專屬的客戶端(可寫入shell指令碼執行)
ngrok_domain="abc.com"

#換成你的網域名稱(繫結外網ip的網域名稱)

openssl genrsa -out base.key

2048

openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/cn=$ngrok_domain" -out base.pem

openssl genrsa -out server.key

2048

openssl req -new -key server.key -subj "/cn=$ngrok_domain" -out server.csr

openssl x509 -req -in server.csr -ca base.pem -cakey base.key -cacreateserial -days 10000 -out server.crt

cp base.pem assets/client/tls/ngrokroot.crt

編譯生成客戶端和服務端(有針對不同系統生成的客戶端,自行搜尋)
make release-server release-client
編譯生成的執行檔案放在ngrok/bin下,ngrok為客戶端,ngrokd為服務端。

ngrok-server引數說明

-httpaddr  # http埠(通過外網ip或網域名稱加上這個埠進行http訪問內網)

-httpsaddr #同http,只是這個是https

-tunneladdr #隧道埠,內網和外網建立的隧道埠,預設為4443(客戶端配置連線的埠)

ngrokd啟動命令
nohup ./bin/ngrokd -tlskey=server.key -tlscrt=server.crt -domain="your domain" -httpaddr=":8081"  &

#nohup可將程序置入後台,且ssh連線斷開不受影響

netstat -tpln|grep ngrokd #檢視程序埠狀態

在內網機器上寫乙個配置檔案ngrok.cfg

該配置檔案可一次性**多個埠,建議按這種格式,配置檔案為yaml語法,所有縮排需要使用空格

server_addr: ngrok.abc.com:4443

啟動特定的隧道
./ngrok -config ngrok.cfg start ssh ftp

啟用配置檔案中所有的隧道
./ngrok -config ngrok.cfg start-all

內網穿透Ngrok安裝

參考資料 domain表示使用的父網域名稱 後面在ngrok客戶端配置的 網域名稱是該網域名稱的子網域名稱 docker做埠對映時,為了支援tcp 如ssh登入,需要除了ngrok和ngrokd連線的埠 http https埠外,還需要額外的埠修改 etc hosts檔案 增加如下配置 以便通過ss...

ngrok內網穿透教程

由於開發web專案,經常需要將本地部署的 讓外網能直接訪問到,最便捷的做法當然是在adsl路由器上直接做埠對映,很不幸大部分運營商都遮蔽了80等常用埠,曾經的做法是在公網一台vps上架設openvpn,將筆記本和vps連到乙個虛擬區域網,再用iptables做埠 來達到目的,雖然可行,但速度比較慢,...

Ngrok搭建內網穿透

什麼是ngrok ngrok是一款用go語言開發的開源軟體,它是乙個反向 它可以通過乙個公共的斷點和本地執行的web伺服器建立乙個安全通道,實現內網穿透功能。情況一 無外網網域名稱,使用二級網域名稱 mac os linux amd64 windows x64 linux arm 解壓 在linux...