Ngrok實現內網穿透

聲明:本文主要參考以下文章
https

環境

服務器:centos 7.x
客戶機:centos 7.x
正常解析的域名:mydoyou.cn

1、基礎環境準備

[root@ngrokd ~]# yum install gcc git -y
[root@ngrokd ~]# wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz
[root@ngrokd ~]# tar -zxvf go1.8.linux-amd64.tar.gz -C /usr/local
[root@ngrokd ~]# echo "export GOROOT=/usr/local/go" >>/etc/profile
[root@ngrokd ~]# echo "export PATH=\$PATH:\$GOROOT/bin " >>/etc/profile
[root@ngrokd ~]# source  /etc/profile


2、在服務器上搭建Ngrok服務


下載ngrok源碼
[root@ngrokd ~]# cd /usr/local/src/
[root@ngrokd src]# git clone https://github.com/inconshreveable/ngrok.git
[root@ngrokd src]# cd /usr/local/src/ngrok
[root@ngrokd ngrok]# export NGROK_DOMAIN="mydoyou.com"
[root@ngrokd ngrok]# openssl genrsa -out rootCA.key 2048
[root@ngrokd ngrok]# openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
[root@ngrokd ngrok]# openssl genrsa -out device.key 2048
[root@ngrokd ngrok]# openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
[root@ngrokd ngrok]# openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
[root@ngrokd ngrok]# \cp rootCA.pem assets/client/tls/ngrokroot.crt
[root@ngrokd ngrok]# \cp device.crt assets/client/tls/snakeoilca.crt (這一步原作者及網上大部分教程沒有,但是我操作的時候開始沒加,會報證書錯誤,卡了好久)
[root@ngrokd ngrok]# \cp device.crt assets/server/tls/snakeoil.crt
[root@ngrokd ngrok]# \cp device.key assets/server/tls/snakeoil.key

## 編譯服務端、客戶端二進制文件
[root@ngrokd ngrok]# GOOS=linux GOARCH=amd64 make release-server
[root@ngrokd ngrok]# GOOS=linux GOARCH=amd64 make release-client
[root@ngrokd ngrok]# ll bin/
total 21964
-rwxr-xr-x 1 root root  2527810 Mar 12 16:20 go-bindata
-rwxr-xr-x 1 root root 11101496 Mar 12 16:27 ngrok  #(客戶端)
-rwxr-xr-x 1 root root  8855200 Mar 12 16:27 ngrokd #(服務端)
# 啓動服務端
[root@ngrokd ngrok]# ./bin/ngrokd -domain="mydoyou.cn"  -httpAddr=":88" -httpsAddr=":443" -tunnelAddr=":4443" &
#如果需要編譯其它客戶端,可以修改GOOS參數,如下在編譯客戶端的時候需要指明對應的操作系統和構架:
#Linux 平臺 32 位系統:GOOS=linux GOARCH=386
#Linux 平臺 64 位系統:GOOS=linux GOARCH=amd64
#Windows 平臺 32 位系統:GOOS=windows GOARCH=386
#Windows 平臺 64 位系統:GOOS=windows GOARCH=amd64
#MAC 平臺 32 位系統:GOOS=darwin GOARCH=386
#MAC 平臺 64 位系統:GOOS=darwin GOARCH=amd64
#ARM 平臺:GOOS=linux GOARCH=arm

3、客戶端

[root@ngrok-client ~]# cat /etc/ngrok/ngrokd.cfg 
#新建客戶端配置文件ngrokd.cfg
server_addr: "mydoyou.cn:4443" ## 4443 默認的監控端口
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"  #域名需要解析
    proto:
      http: "88"    ## http 端口 httpAddr=":80"

  https:
    subdomain: "www"  #域名需要解析
    proto:
      https: "443"  ## https 端口 httpsAddr=":443"

  ssh:
    remote_port: 10022
    proto:
      tcp: "22"

啓動客戶端
[root@ngrok-client ~]# ngrok -config=ngrok.cfg -log=ngrok.log  start-all  
## start-all表示啓動所有配置,也可以單獨指定 如 替換成 
[root@ngrok-client ~]# ngrok -config=ngrok.cfg -log=ngrok.log http https ssh
[root@ngrok-client ~]# nohup ngrok -config=ngrok.cfg -log=stdout  start-all > ngrok.log 2>&1 &

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章