ngrok實(shí)現(xiàn)內(nèi)網(wǎng)映射和反向代理
安裝gcc
yum install gcc
安裝git
yum install git
安裝GO語言環(huán)境
yum install go
go version
下載ngrok源碼
cd /usr/local/src
git clone https://github.com/inconshreveable/ngrok.git
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=flask.huchangyi.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=flask.huchangyi.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
將新生成的證書,替換掉assets/client/tls下的證書
yes|cp rootCA.pem assets/client/tls/ngrokroot.crt
yes|cp device.crt assets/server/tls/snakeoil.crt
yes|cp device.key assets/server/tls/snakeoil.key
編譯生成ngrokd(服務(wù)端)
#這里是交叉編譯,linux系統(tǒng)GOOS=linux,64位系統(tǒng)GOARCH=amd64,32位系統(tǒng)GOARCH=386
#當(dāng)前系統(tǒng)可用go env查看
GOOS=linux GOARCH=amd64 make release-server
啟動(dòng)服務(wù)端(/usr/local/src/ngrok目錄下)?
nohup /usr/local/src/ngrok/bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="flask.huchangyi.com"? -httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":8083" &
添加新的域名解析
*.flask
編譯生成ngrok(客戶端)
linux版客戶端: make release-client
windows客戶端32位: GOOS=windows GOARCH=386 make release-client
windows客戶端64位: GOOS=windows GOARCH=amd64 make release-client
MAC: GOOS=darwin GOARCH=amd64 make release-client
客戶端執(zhí)行
nohup /home/ngrok/bin/ngrok -config /home/ngrok/bin/ngrok.cfg -proto tcp 22 &
nohup /home/ngrok/bin/ngrok -subdomain rasp -config /home/ngrok/bin/ngrok.cfg 80 &
或者
nohup /home/ngrok/bin/ngrok -subdomain rasp -config /home/ngrok/bin/ngrok.cfg start http https ssh
配置文件格式(ngrok.cfg)
server_addr: "flask.huchangyi.com:8083"
trust_host_root_certs: false
tunnels:
? http:
? ? subdomain: "www"
? ? proto:
? ? ? http: "8090"
? ? ??
? https:
? ? subdomain: "www"
? ? proto:
? ? ? https: "8091"
?
? ssh:
? ? remote_port: 3333
? ? proto:
? ? ? tcp: "22"
編譯樹莓派上的ngrok客戶端
將剛才用來編譯ngrok服務(wù)端的ngrok源碼文件夾全部復(fù)制到樹莓派上:?
cd ./ngrok?
make release-client?
出錯(cuò)時(shí)
把源碼目錄下bin/go-bindata刪除,然后執(zhí)行make release-client
直接下載已經(jīng)編譯好的
wget http://huchangyi.com/doc/ngrok-rasp.zip
unzip ngrok-rasp.zip
mv ngrok-rasp ngrok
vim /etc/rc.local
bash /home/ngrok/start-ngrok.sh