1. 程式人生 > >阿里雲搭建ngrok實現內網穿透

阿里雲搭建ngrok實現內網穿透

內網穿透想必是開發微信的同志所必須的,大部分人首先想到的是去網上找各種現成的吧,比如sunny-ngrok或者向日葵之類的,但是世界上沒有免費的午餐,免費的都是會崩的!!!下面我就來教大家怎麼用阿里雲和ngrok搭建一個內網穿透!!!!

1.準備工作:

要能實現內網穿透,你必須得有個域名,然後還有個伺服器!!兩者缺一不可

2.新增dns解析:

到你的阿里雲伺服器裡邊添加個dns解析,如下:

這樣解析就新增好了,接下來就是伺服器的設定了!

2.伺服器配置ngrok:

按照下邊的命令一步一步敲

Step1:安裝git 和Golang

Git是啥,是幹什麼用的,在此我就不過多闡述了!

# sudo apt-get install build-essential golang mercurial git

Golang,Go語言支援,因為Ngrok是基於Go語言編寫的

這裡我都已經安裝了,沒有安裝的按照提示安裝即可

Step2:獲取 ngrok 原始碼

此處使用非官方地址,修復了部分包無法獲取

# git clone https://github.com/tutumcloud/ngrok.git ngrok

# cd ngrok

Step3:生成自簽名證書

使用ngrok.com官方服務時,我們使用的是官方的SSL證書。自建ngrokd服務,如果不想買SSL證書,我們需要生成自己的自簽名證書,並編譯一個攜帶該證書的ngrok客戶端。

證書生成過程需要一個NGROK_BASE_DOMAIN。 以ngrok官方隨機生成的地址693c358d.ngrok.com為例,其NGROK_BASE_DOMAIN就是“ngrok.com”,如果你要 提供服務的地址為“example.ngrok.xxx.com”,那NGROK_BASE_DOMAIN就應該 是“ngrok.xxx.com”。這裡呢,我替換成自己的域名 “ngrok.mdzz2333.cn”
這個地方大家也要提前準備好自己的域名,沒有多餘域名的同學呢,就可以給自己的域名新增一個二級域名來解決.

*注意:下述指令中的域名要換成大家自己的哦,不然就繫結到我的域名上去了~

$ cd ngrok

 NGROK_DOMAIN="ngrok.mdzz2333.cn"
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

Step4:編譯

 sudo make release-server release-client

這一步驟等待時間較長,成功編譯後,會在bin目錄下找到ngrokd和ngrok這兩個檔案。

Step5:啟動服務端

前面生成的 ngrokd 就是服務端程式了,指定證書、域名和埠啟動它(證書就是前面生成的,注意修改域名):

# sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.mdzz2333.cn" -httpAddr=":8081" -httpsAddr=":8082"

到這一步,ngrok 服務已經跑起來了,可以通過螢幕上顯示的日誌檢視更多資訊。httpAddr、httpsAddr 分別是 ngrok 用來轉發 http、https 服務的埠,可以隨意指定。ngrokd 還會開一個 4443 埠用來跟客戶端通訊(可通過 -tunnelAddr=":xxx" 指定),如果你配置了 iptables 規則,需要放行這三個埠上的 TCP 協議。

訪問後看到提示:

Tunnel pub.imququ.com:8081 not found

這說明萬事俱備,只差客戶端來連了。

下面的這一句是編譯windows客戶端和mac客戶端的!!!

GOOS=windows GOARCH=amd64 make release-client
GOOS=darwin GOARCH=amd64 make release-client

到bin目錄下有個windows的資料夾開啟資料夾把exe檔案傳到你的windows機器上:

然後在同級目錄下新建一個配置檔案ngrok.cfg:

server_addr: "zzhmmd.huahuayu.com.cn:4443"
trust_host_root_certs: false

最後開啟cmd執行ngrok客戶端監聽8080埠:

ngrok.exe -config=ngrok.cfg -log=ngrok.log -subdomain=test 8080

這樣就基本可以連上了來寫微信用的那麼你的命令得改下了,因為微信的配置的伺服器裡邊是不能有埠的:

# sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="ngrok.mdzz2333.cn" -httpAddr=":80" -httpsAddr=":443"