ngrok是一款用go语言开发的开源反向代理软件,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。ngrok可捕获和分析所有通道上的流量,便于后期分析和重放。官方网站

*提前放行端口或者关闭防火墙,关闭/禁止防火墙命令:

systemctl stop firewalld.service
systemctl disable firewalld.service

准备环境

1.准备

一台云服务器或者VPS,一个域名(二级域名也可以),并且域名正确解析到云服务器。

2.安装git(用于下载ngrok源码):

yum install git -y

3.安装go环境:

yum install golang -y

安装ngrok

1.下载ngrok源码:

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

2.进入ngork所在目录、添加环境变量、生成证书:

cd /opt/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

3.之后会在ngrok目录下生成六个文件,替换默认证书:

cp -r rootCA.pem assets/client/tls/ngrokroot.crt
cp -r device.crt assets/server/tls/snakeoil.crt
cp -r device.key assets/server/tls/snakeoil.key

4.编译服务器端ngrokd:

make release-server

这样就会在bin目录下生成ngrokd这个文件,就是我们ngrok的服务器程序。

5.编译客户端ngrok:

#  linux:
GOOS=linux GOARCH=amd64 make release-client
#  windows:
GOOS=windows GOARCH=amd64 make release-client
#  mac:
GOOS=darwin GOARCH=amd64 make release-client

6.启动服务器端:

cd /opt/ngrok/bin
./ngrokd  -domain="xxx.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

*httpAddr 是访问普通的http使用的端口号,用后面用.xxx.com来访问服务。
*httpsAddr 是访问的https使用的端口号(一般用不上)。
*tunnelAddr 是ngrok通道的端口号,这个端口是Ngrok用来通信的,服务器和客户端需要一致,默认端口是4443。

使用教程

1.客户端文件所在目录新建ngrok.yml写入:

server_addr: xxx.com:4443
trust_host_root_certs: false

2.目录下打开cmd命令行,然后使用以下任一命令运行ngrok(也可以写入.bat脚本):

ngrok -config ngrok.yml 80
ngrok -config ngrok.yml -subdomain xxx 80

*xxx或者指定域名xxx.xxx.com。

Last modification:April 6, 2022
如果觉得我的文章对你有用,请随意赞赏