Linux搭建Ngrok

參考文章:

http://blog.csdn.net/sdfgsdfg1444/article/details/72793313

http://www.jianshu.com/p/b254547b9fe5

http://blog.csdn.net/u013216667/article/details/50782084

步驟:

1.安裝依賴環境

yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ unzip

 

2.安裝git

先下載:https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz

cd /usr/
wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz

tar zxvf git-2.6.0.tar.gz 

配置git環境

cd /usr/git-2.6.0

make prefix=/usr/local/git all

make prefix=/usr/local/git install

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc

source /etc/bashrc

git version

3.go下載:https://pan.baidu.com/s/1hs1VzjY ; 放到/usr/local

解壓 tar zxvf go1.4.2.linux-amd64.tar.gz

環境go配置  添加環境變量,

編輯

vim /etc/profile 

在最後添加  

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

保存後,使環境變量生效

source /etc/profile

或者創建軟連接: 

 ln -s /usr/local/go/bin/* /usr/bin/

檢查版本

go version

4.ngrok下載:https://pan.baidu.com/s/1i5ckSdR ; zip解壓放到/usr/local/ngrok下

配置ngrok

cd /usr/local/ngrok

export GOPATH=/usr/local/ngrok/

export NGROK_DOMAIN="xxx.xin"

cd /usr/local/ngrok

5.簽名:

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

 

6.複製簽名:

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

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

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

 

7.編譯服務端

cd /usr/local/go/src

GOOS=linux GOARCH=amd64 ./make.bash

cd /usr/local/ngrok/

GOOS=linux GOARCH=amd64 make release-server

8.編譯客戶端

cd /usr/local/go/src

GOOS=windows GOARCH=amd64 ./make.bash

cd /usr/local/ngrok/

GOOS=windows GOARCH=amd64 make release-client

9.啓動服務端

cd 進入根目錄直接輸入

/usr/local/ngrok/bin/ngrokd -domain="xxx.xin" -httpAddr=":80" -tunnelAddr=":4443"

//服務端後臺永久運行

nohup /usr/local/ngrok/bin/ngrokd -domain="xxx.xin" -httpAddr=":80" -tunnelAddr=":4443"

10.客戶端配置新建一個 ngrok.cfg 文件

server_addr: "xxx.xin:4443"

trust_host_root_certs: false

11.客戶端啓動新建一個xxx.bat文件

ngrok -config=ngrok.cfg -subdomain xxx 8080

注意:

1.如果客戶端啓動顯示reconnection,請檢查防火牆端口是否開放80和4443端口

vi /etc/sysconfig/iptables    



# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 4443 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

編輯防火牆配置文件 按 i 編輯、按esc退出編輯、輸入 :wq

圖片

//重啓防火牆

service iptables restart

2.如果可以連接,但是不能訪問,請檢查域名是否開啓CNAME記錄

路由上虛擬機服務器是否設置端口80/4443/443

192.168.5.110(ngrok所在Linux的ip)、4443是http訪問的端口、443是https訪問的端口

常用服務器    外部端口    內部端口    IP地址         協議類型

                        443            443         192.168.5.110    ALL

                        80                80         192.168.5.110    ALL

                        4443        4443         192.168.5.110    ALL

圖片

--window服務端啓動

ngrokd -domain="xxx.xin" -tunnelAddr=":4443" -httpAddr=":80" 

ngrokd -tlsKey="server.key" -tlsCrt="server.crt" -domain="xxx.xin"  -tunnelAddr=":4443" -httpsAddr=":443" -httpAddr=":80"

編譯32位用go32位,可能會出現以下錯誤

bash: /usr/local/bin/rar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

是因爲64位系統中安裝了32位程序

解決方法:

yum install glibc.i686

 

重新安裝以後還有如下類系錯誤 再繼續安裝包

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

yum install libstdc++.so.6

 

window服務端啓動,新建bat命令文件,添加以下內容:

ngrokd -tlsKey="server.key" -tlsCrt="server.crt" -domain="xxx.xin"  -tunnelAddr=":4443" -httpsAddr=":443" -httpAddr=":80"

 

說明:

-tlsKey="server.key" -tlsCrt="server.crt"

是對應自己申請的SSL證書,Apache,找到server.key server.crt 這兩個證書文件

注意:如何你只是申請了頂級域名的證書、二級域名使用頂級域名的證書是無效的。除非你申請的是泛型*.頂級域名的證書  例如:*.xxx.xin證書

 

客戶端啓動:要用證書時設置下面爲:trust_host_root_certs: true,沒用證書trust_host_root_certs: false

客戶端配置新建一個 ngrok.cfg 文件

server_addr: "xxx.xin:4443"

trust_host_root_certs: false

 

11.客戶端啓動新建一個xxx.bat文件(頂級域名:-hostname、二級域名:-subdomain)

-- 頂級域名

ngrok -config=ngrok.cfg -hostname xxx.xin192.168.0.106:8080

 

-- 二級域名

ngrok -config=ngrok.cfg -subdomain weixin.xxx.xin192.168.0.106:8080

 

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