Ngrok实现内网穿透

2020-05-29  本文已影响0人  霡霂976447044

先决条件:

下载源码和生成证书

git clone https://github.com/inconshreveable/ngrok.git
cd ngrok
NGROK_DOMAIN="你的域名"

openssl rand -writerand ~/.rnd  # linux mint19

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
cp base.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

编译

先自行安装Go

export GO111MODULE=off
make release-server release-client

出现下载失败的,先

export GOPROXY="goproxy.io";export GO111MODULE=on

再使用go get下载无法下载的包
然后切换回go path模式

export GO111MODULE=off
make release-server release-client

服务端运行

scp ./bin/ngrokd user@host:/path/to/save

ssh连接进服务器,运行

./ngrokd -domain="你的域名" -httpAddr=":9091" -tunnelAddr=":4443" -httpsAddr=":9092"

打开云平台安全组设置,将这几个端口开放

客户端运行

创建ngrok.cfg文件,编辑

server_addr: 你的域名:4443
trust_host_root_certs: false
tunnels:
 myserver:
  remote_port: 9093
  proto:
   tcp: 3000

remote_port为服务器转发端口,同样的,打开云平台安全组设置,将这个端口开放。

3000为局域网主机端口,使用tcp方式(http一样可以用)

运行

./ngrok -config=./ngrok.cfg start myserver

根据提示打开网址即可, 如果你的局域网端口实际是http协议,那么直接浏览器打开即可。

临时的后台运行

nohup ./start_ngrok.sh &

start_ngrok.sh文件内容如下

./ngrokd -domain="你的域名" -httpAddr=":9091" -tunnelAddr=":4443" -httpsAddr=":9092"

参考:
https://www.jianshu.com/p/69b4f10ad954

上一篇 下一篇

猜你喜欢

热点阅读