Linux搭建ngrok内网穿透服务

一. 安装gcc
二.安装go环境
三.下载ngrok源码
1.解压
2.生成证书

cd ngrok
NGROK_DOMAIN="cutedou.com"
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

3.替换证书

cp base.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

4.编译生成ngrokd服务端

#这里是交叉编译,linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386
#当前系统可用go env查看
GOOS=linux GOARCH=amd64
make release-server

5.启动服务

./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="$NGROK_DOMAIN"  -httpAddr=":8888" -httpsAddr=":8889" -tunnelAddr=":9999"

6.出现下面信息,启动成功

[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8081
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:8082
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

7.编译生成ngrok客户端
生成windows环境客户端如下:

#这里是交叉编译,linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386
#当前系统可用go env查看
GOOS=windows GOARCH=amd64 make release-client

生成的客户端在bin目录下:windows_amd64.

注意:
不同平台使用不同的GOOS和GOARCH
Linux平台32位系统:GOOS=linux GOARCH=386
Linux平台64位系统:GOOS=linux GOARCH=amd64

MAC平台32位系统:GOOS=darwin GOARCH=386
MAC平台64位系统:GOOS=darwin GOARCH=amd64

Windows平台32位系统:GOOS=windows GOARCH=386
Windows平台64位系统:GOOS=windows GOARCH=amd64

ARM平台:GOOS=linux GOARCH=arm

  1. 将生成的客户端windows_amd64拷贝到windows系统中
  2. 在ngrok.exe的同级目录下创建ngrok.cfg文件,配置如下:
server_addr: "cutedou.com:8888"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"
    proto:
      http: "80"

  https:
    subdomain: "www"
    proto:
      https: "80"

  ssh:
    remote_port: 2222
    proto:
      tcp: "22"

10.在ngrok.exe所在目录下打开DOS窗口, 执行以下命令:

ngrok.exe -config=ngrok.cfg start http https ssl

11.启动成功显示如下:
这里写图片描述

显示RECONNECTING,启动不来的原因可能:

①. ping 一下你的域名, 确认可以访问(服务器设置禁Ping除外)

②.确定ngrok服务端端口(tunnel端口,http端口和https端口)是开放的.

③等等等等

猜你喜欢

转载自blog.csdn.net/lx_nhs/article/details/79474568