天天看點

Linux下ngrok内網穿透

ngrok内網穿透:能夠将你本機的HTTP服務(站點)或TCP服務,通過部署有ngrok服務的外網伺服器暴露給外網通路!實作本地開發,外網調試。

準備:一台外網可通路的主機,且有域名解析至該主機上。

Linux下ngrok内網穿透
  1. 橘色螢幕的筆記本是你的工作機器,安裝了ngrok用戶端
  2. 伺服器安裝了ngrok的服務端(ngrokd)
  3. 利用ngrok 8080指令可以将你本機的8080端口暴露給反向代理至伺服器的某個二級域名如:kl.ngrok.wili.us.cn
  4. 别人通過kl.ngrok.wili.us.cn就可以通路你本機8080端口上的站點内容了。

一、安裝go、git工具

sudo apt-get update
sudo apt-get install git
sudo apt-get install golang
# 檢視go版本
go version
           
Linux下ngrok内網穿透

二、擷取ngrok源碼

git clone https://github.com/inconshreveable/ngrok.git
           
Linux下ngrok内網穿透

三、更改ngrok域名

export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="ngrok.wili.us"
           

ngrok.wili.us 替換成自己的域名

四、生成證書

$NGROK_DOMAIN 替換成自己的域名。這裡我的是 ngrok.wili.us

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
           
Linux下ngrok内網穿透

生成六個檔案:

Linux下ngrok内網穿透

Ngrok通過bindata将ngrok源碼目錄下的assets目錄(資源檔案)打包到可執行檔案(ngrokd和ngrok)中去,assets/client/tls和assets/server/tls下分别存放着用于ngrok和ngrokd的預設證書檔案,我們需要将它們替換成我們自己生成的(是以這一步務必放在編譯可執行檔案之前)

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
           

五、編譯ngrok服務端

make release-server
           
Linux下ngrok内網穿透

ngrokd 就是服務端

六、編譯用戶端

linux用戶端

GOOS=linux GOARCH=amd64 make release-client
           

Linux下ngrok内網穿透

編譯Mac版本用戶端

GOOS=darwin GOARCH=amd64 make  release-client
           

七、服務端啟動

ngrokd -domain="ngrok.wili.us" -httpAddr=":80" -httpsAddr=":8089"
           

八、用戶端啟動

在和用戶端相同檔案目錄bin下,建立一個 

ngrok.cfg

配置檔案

vim ngrok.cfg
           

添加:

server_addr: "ngrok.wili.us:4443"
trust_host_root_certs: false
           

啟動:subdomain後面的自定義就好

./bin/ngrok -subdomain mp -config=./ngrok.cfg 5000
           
Linux下ngrok内網穿透

備注:用戶端和服務端必須在相同證書下編譯,不能分開編譯。

參考:   手把手教你搭建ngrok服務-輕松外網調試本機站點

             一分鐘實作内網穿透(ngrok伺服器搭建)

             https://github.com/inconshreveable/ngrok/blob/master/docs/SELFHOSTING.md

             https://github.com/inconshreveable/ngrok/blob/master/docs/DEVELOPMENT.md