利用ngrok和阿里云訪問內(nèi)網(wǎng)主機(jī)端口

? ? ? ?手頭上有一臺電腦,裝的ubuntu18.04,配置還可以,而我的阿里云服務(wù)器內(nèi)存較小,跑不了太多服務(wù),于是便想到通過ngrok將本地主機(jī)的端口映射出去。

? ? ? ? 在配置內(nèi)網(wǎng)映射前,首先我們要有一臺云主機(jī),如阿里云或者騰訊云,還要有一個(gè)屬于自己的域名(最好是經(jīng)過備案的)。

? ? ? ? step1:? dns泛域名解析

? ? ? ? ? ? ? ? 所謂泛域名解析,就是在正常的域名前加上*. 如下圖中的 *.ngrok

? ? setp2:?配置防火墻?

? ? ? ? ? ngrok默認(rèn)使用4443端口,? ?在運(yùn)行ngrok服務(wù)端時(shí)還需要一個(gè)監(jiān)聽監(jiān)聽端口,如8888, 在防火墻中要放開這兩個(gè)端口。

? ? setp3: 下載安裝ngrok和go語言

? ? ? ? ngrok需要go語言進(jìn)行編譯,首先安裝go:

? ? ? ? ? ? sudo apt install go

? ? ? ? 通過go version 查看go版本,如果版本小魚1.7,可能會報(bào)錯,這是要手動升級. 現(xiàn)將已有的go卸載,

? ? ? ? ? ? ? apt purge golang-go

? ? ? ? 去官網(wǎng)下載最新的安裝包?https://studygolang.com/dl, tar -xzvf? *.tar.gz 命令解壓 并通過 export PATH=$PATH: /*/go/bin? 添加環(huán)境變量

? ? ? ? 接下來下載ngrok:

????????????????git clone https://github.com/inconshreveable/ngrok.git?????

? ? ? ? ?生成自簽名證書:

????????????????使用ngrok.com官方服務(wù)時(shí),我們使用的是官方的SSL證書。自建ngrokd服務(wù),如果不想買SSL證書,我們需要生成自己的自簽名證書,并編譯一個(gè)攜帶該證書的ngrok客戶端。證書生成過程需要一個(gè)NGROK_BASE_DOMAIN。 以ngrok官方隨機(jī)生成的地址693c358d.ngrok.com為例,其NGROK_BASE_DOMAIN就是“ngrok.com”,如果你要 提供服務(wù)的地址為“example.ngrok.xxx.com”,那NGROK_BASE_DOMAIN就應(yīng)該 是“ngrok.xxx.com”。這里呢,我替換成自己的域名 “ngrok.xxx.fun”.

? ? ? ? ? ? ? ? 首先進(jìn)入剛剛下載的ngrok目錄

?cd ngrok

NGROK_DOMAIN="ngrok.xxx.com"

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


? ? ? ? 拷貝證書到指定位置:

????????????????cp rootCA.pem assets/client/tls/ngrokroot.crt

????????????????cp server.crt assets/server/tls/snakeoil.crt

????????????????cp server.key assets/server/tls/snakeoil.key

? ? ? ? ? 接下來進(jìn)行編譯:

????????????????make release-server release-client??

? ? ? ? ? ?編譯完成后,會在bin目錄下出現(xiàn)ngrok(客戶端)和ngrokd(服務(wù)端)兩個(gè)文件,代表編譯成功。

? ? ? ?step4 運(yùn)行服務(wù)端:

? ? ? ? ? ? ?./ngrokd -tlsKey="../assets/server/tls/snakeoil.key" -tlsCrt="../assets/server/tls/snakeoil.crt" -domain="ngrok.yourdomain.com" -httpAddr=":8888" -httpsAddr=":444"> /home/logs/ngrok.log &????????

? ? ? ? ? ? ? ?tips:在運(yùn)行命令的最后加上?&?可以讓程序在后臺運(yùn)行

? ? ? ? ? ? ? ? 這時(shí)我們在瀏覽器訪問ngrok.xxx.com:8888 訪問,如果看到 Tunnel ngrok.xxx.com:8888 not found 說明服務(wù)端已經(jīng)正常啟動 了。

? ? ? ? step5 啟動客戶端:

? ? ? ? ? ? 使用scp命令將阿里云上的ngrok客戶端文件拷貝到本地主機(jī)

? ? ? ? ? ? ? ? ? ? scp root@**.***.**.**:/*/ngrok/bin/ngrok /home/**/ngrok/

? ? ? ? ? ? 接下來進(jìn)入與客戶端同一級目錄添加一個(gè)名為ngrok.cfg的配置文件, 并輸入:

? ??????????????????server_addr: ngrok.***.com:4443

? ? ? ? ? ? ? ? ? ? trust_host_root_certs: false

????????????????????tunnels:

? ? ????????????????????tunnel1:

? ? ? ? ????????????????????subdomain: test1? # 次一級域名

? ? ? ????????????????????? proto:

? ? ? ? ? ? ????????????????????????http: 80? ?#監(jiān)聽本地的80端口

? ????????????????????? tunnel2:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?subdomain: test2

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?proto:

? ? ? ? ? ????????????????????????????? http: 8080? ?

? ? ? ? ? ? tips: yaml文件不可以使用tab,只能用空格,否則會報(bào)錯

? ? ? ? ? ? 運(yùn)行客戶端:

? ??????????????????./ngrok -config ngrok.cfg start tunnel1 tunnel2? ? ? ?

? ? ? ? 現(xiàn)在,我們已經(jīng)完成了內(nèi)網(wǎng)的端口映射。

參考博文:https://my.oschina.net/djsoft/blog/1786635

https://blog.csdn.net/qq_34292044/article/details/78559128

https://free-e.net/112

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容