1. 程式人生 > >阿里雲搭建自己的ngrok服務-實現內網穿透

阿里雲搭建自己的ngrok服務-實現內網穿透

參考博文:https://blog.csdn.net/qq_34292044/article/details/78559128

https://blog.csdn.net/huanxiang201311/article/details/72725891

一.環境準備

        1.固定的ip地址,我用的是阿里雲,系統cenos6,比較老的系統。阿里雲有自己的安全組策略,請把你自己的埠加進安全組裡。如圖


        2.需要有域名,已經域名解析。本文使用阿里萬網域名以及阿里dns解析。如圖

,域名當初買的是一年一塊錢,DNS解析如圖所示

點選解析設定,設定要解析的ip,然後域名要經過實名驗證才會生效

完成之後可以本地ping一下我們自己的域名,看會不會解析成我們自己的ip地址,網路是否通順

二 linux伺服器上安裝ngrok,開啟ngrok服務

1.安裝git和golang,其中git不是必須的,安裝git僅僅是為了後面下載ngrok原始碼方便,golang是因為ngrok是用go語言寫的

        1.yum install gcc

        2.yum install git ,若存在最好先執行yum remove git,再安裝,怕到時候下載不下來ngrok原始碼

     3.安裝golang語言環境-wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz。下載地址在https://studygolang.com/dl中找的,想換版本可以在這裡找

        4.tar -zxvf go1.8.linux-amd64.tar.gz

        5.vi /etc/profile 加上這兩句話

        export GOROOT=你的go解壓地址

        export PATH=$PATH:$GOROOT/bin

        source /etc/profile 是環境生效

        go version 檢視go是否安裝成功

    2,。下載ngro原始碼,安裝

        1.cd /software/git

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

        3.ngrok配置,執行一下命令。使用ngrok.com官方服務時,我們使用的是官方的SSL證書。自建ngrokd服務,如果不想買SSL證書,我們需要生成自己的自簽名證書,並編譯一個攜帶該證書的ngrok客戶端。
證書生成過程需要一個NGROK_BASE_DOMAIN。 填寫我們的域名地址

cd ngrok

NGROK_DOMAIN="你的域名"

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

經過以上步驟,證書已經生成

4  cp base.pem assets/client/tls/ngrokroot.crt 複製證書

5  make release-server release-client

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

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

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":80" -httpsAddr=":8082"

若正常的話會提示


7.生成ngrokwindows客戶端

GOOS=windowsGOARCH=amd64 make release-client windown系統

GOOS=windowsGOARCH=amd64 make release-client  mac系統

8.然後在同級目錄下新建一個配置檔案ngrok.cfg:
server_addr: "你的域名:4443"  
trust_host_root_certs: false  
同目錄下新建一個start.bat
@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web

ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=wechat 80

雙擊start.bat 正常情況下有如下所示


三,優化ngrok服務-設定開機啟動

一,在ngrok程式目錄下新建一個啟動指令碼,例如:
    start.sh
    path=/software/git/ngrok
    $path
    ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":80" -httpsAddr=":8082"

path為當前目錄的路徑
啟動指令碼要寫後臺啟動的指令碼,後面的啟動專案根據自己需要來寫

二,把ngrok程式製作成系統服務

在 /etc/rc.d/init.d目錄下新建一個服務專案(ngrok),如下:

[plain] view plain copy

    #!/bin/sh  
    #chkconfig:2345 70 30  
    #description:ngrok  
      
    ngrok_path=/software/git/ngrok  
    case "$1" in  
        start)  
            echo "start ngrok service.."  
            sh ${ngrok_path}/start.sh  
            ;;  
        *)  
        exit 1  
        ;;  
    esac  


給該檔案賦許可權755

chmod 755 ngrok


三,註冊ngrok服務自啟動

chkconfig --add  ngrok

測試服務是否能啟動成功

service ngrok start

檢查自啟動的服務

chkconfig

reboot重啟就實現自啟後臺運行了