ngrok 搭建內網穿透+遠端桌面連線

小卒過河0104發表於2019-03-26

1、準備一個域名,可以不用備案。

2、為域名新增解析。如域名為:xxx.com   ip地址為:xxx.xx.xx.xx

域名地址解析1:xxx.com   指向ip xxx.xx.xx.xx

域名地址解析2:*.xxx.com 指向ip xxx.xx.xx.xx

NGROK是一個反向代理,它建立了一個從公共端點到本地執行的Web服務的安全隧道。NGROK捕獲和分析隧道上的所有流量,以便以後檢查和重放。

一、搭建ngrok 伺服器

1、安裝GNU編譯器套件、git(用於下載Ngrok原始碼)、以及GO語言環境

yum install gcc -y

yum install git -y

yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386

2、安裝lrzsz ,screen

yum install lrzsz -y

yum install screen -y

3、下載ngrok原始碼。如:下載到opt目錄下,則進入到opt資料夾然後執行以下命令

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

進入ngrok可以看到如下:

4、進入到ngrok資料夾並生成證書。

export ngrok_domain=“xxx.com”這裡為自己購買的域名地址 

cd ngrok 

export NGROK_DOMAIN="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 device.key 2048

openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

5、將生成的證書拷貝到相應目錄下替換,記住不要少了前面的斜槓。不然複製一個就會提示是否覆蓋

\cp -rf rootCA.pem assets/client/tls/ngrokroot.crt

\cp -rf device.crt assets/server/tls/snakeoil.crt

\cp -rf device.key assets/server/tls/snakeoil.key

6、編譯生成ngrok的服務端

GOOS=linux GOARCH=amd64 make release-server

7、生成客戶端。

生成windows 64位客戶端:

GOOS=windows GOARCH=amd64 make release-client

生成windows 32位客戶端(以下生成客戶端同理,將goarch值改為386即可):

GOOS=windows GOARCH=386 make release-client

生成mac 客戶端:

GOOS=darwin GOARCH=amd64 make release-client

生成linux客戶端:

GOOS=linux GOARCH=amd64 make release-client

8、獲取生成的客戶端。

客戶端在ngrok 的bin目錄下。可以看到,我在這裡生成了windows及mac版本的客戶端,進入相應資料夾,下載客戶端到本地電腦。

9、開啟screen功能。以便檢視相應日誌,及切回到終端,達到後臺執行的目的

screen -S aaa
screen -ls   ;    找到screen會話

切換到相應的會話。

10、開啟ngrok服務程式,命令如下:

./ngrokd -domain="snibean.online" -httpAddr=":8099" -httpsAddr=":443" -tunnelAddr=":8083"

可以看到這裡http我使用的是8099 埠,https用的443埠。。tunnel使用8083埠。

11、為伺服器開放以上埠。我這裡系統是centos7,命令如下:

firewall-cmd --zone=public --add-port=8099/tcp --permanent  

firewall-cmd --zone=public --add-port=443/tcp --permanent  

firewall-cmd --zone=public --add-port=8083/tcp --permanent  

#由於本人要使用到遠端桌面連線。故開放3389埠

firewall-cmd --zone=public --add-port=3389/tcp --permanent  

12、新建檔案ngrok.cfg 內容如下:

server_addr: "域名地址:8083"
trust_host_root_certs: false
tunnels:
    http:
        subdomain: "aaa"
        proto:
            http: "8082"
    https:
        subdomain: "bbbb"
        proto:
            https: "443"
    mstsc:
        remote_port: 3389
        proto:
            tcp: "127.0.0.1:3389"

注意,內容裡面不能使用tab來進行對齊 ,只能使用空格。我這裡只保留了mstsc做遠端桌面連線使用。

server_addr: "域名:8083"
trust_host_root_certs: false
tunnels:
   mstsc:
        remote_port: 3389      
        proto:
         tcp: "127.0.0.1:3389"

儲存後將此檔案與下載的客戶端檔案ngrok.exe放到同級目錄。

13、執行客戶端。

ngrok -config=ngrok.cfg start  mstsc

出現如下圖所示則表示連線成功。

到此搭建完畢,即可以進行遠端桌面連線。

輸入:  域名地址:3389     以及使用者名稱密碼即可

14、新建start.bat檔案,將以下內容加入到此檔案後儲存,即可以雙擊start.bat進行啟動。

ngrok -config=ngrok.cfg start  mstsc

相關文章