CentOS7.3下搭建Ngrok内网穿透服务日志
一、准备
1、首先你需要一个服务器,我是用的阿里云轻量应用服务器,系统是CentOS7.3,
2、然后你需要一个域名,你可以去万网或者其他域名服务商租用,记得备案域名不然访问不了
3、把你的域名和服务器绑定起来(具体的操作很简单,不讲了)
4、域名做dns解析
二、开始安装
# 安装依赖
yum -y install openssl-devel wget gcc gcc-c++
# 安装git
yum install git -y
# 安装go
yum install -y mercurial bzr subversion golang
# 查看go版本
go version
# 拉取ngrok源码
git clone https://github.com/inconshreveable/ngrok.git
# 生成证书
cd ngrok
export NGROK_DOMAIN="你的域名"
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
# 将新生成的证书替换掉旧的 过程会让你输入y 回车
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
# 编译生成ngrokd服务端,运行在当前系统CentOS
GOOS=linux GOARCH=amd64 make release-server
#这里GOOS后面是你的系统,我是linux,GOARCH 后面是系统,64位是amd64,32位是386
#生成的服务端在你的ngrok下面的bin下面的ngrokd文件
#生成客户端
GOOS=windows GOARCH=amd64 make release-client
#这里GOOS后面是你的系统,我是要在window上启动客户端,GOARCH 后面是系统,64位是amd64,32位是386
#都在bin下,服务端是ngrokd客户端是ngrok
#然后你就可以把客户端拷贝到你的电脑里面了
#这里就可以测试一下你的ngrok可不可以启动了
./bin/ngrokd -domain="你的域名" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
#-domain后面你上面写的域名 -httpAddr http端口 -httpsAddr https 端口
#-tunnerlAddr 客户端端口,连接端口
# 如果可以启动,那你就可以开始下一步了,如果不能就再检查检查上面几步
# 创建快捷启动脚本
vi start-ngrokd.sh
# 下面是内容
#!/bin/sh
/opt/app/ngrok/bin/ngrokd -domain="你的域名" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
# 前面的路径记得改
#-domain后面你上面写的域名 -httpAddr http端口 -httpsAddr https 端口
#-tunnerlAddr 客户端端口,连接端口
# 设置文件权限
chmod 755 start-ngrokd.sh
# 然后添加到自启动列表
vi /etc/init.d/ngrok
# 写入以下内容 #!/bin/sh 这个也是内容
#!/bin/sh
### BEGIN INIT INFO
# Provides: ngrok
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the ngrok Proxy.
### END INIT INFO
# 记得修改你的路径!!
ngrok_path=/opt/app/ngrok/
case "$1" in
start)
echo "start John's ngrok service.."
sh ${ngrok_path}/start-ngrokd.sh
;;
*)
exit 1
;;
esac
# 到这里结束
# 然后 给ngrok脚本文件权限
chmod 755 /etc/init.d/ngrok
# 添加启动服务 ngrok
chkconfig --add ngrok
# 尝试启动 确定可以启动就行了
service ngrok start
# 然后关掉它 运行下面这个指令
nohup /opt/app/ngrok/bin/ngrokd -domain="你的域名" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" &
# 这是后台启动的指令
# 然后还记得你刚刚拷贝下来的客户端吗
# 在ngrok.exe同目录下创建文件ngrok.cfg
server_addr: "xxxx.com:4443"
# 你上面自己写的域名 这里的域名还有端口一定要记得注意和你配置的tunnelAddr端口要一致
trust_host_root_certs: false
#目录下打开命令行
ngrok -config=ngrok.cfg -subdomain test 80
# -subdomain 前缀 端口
如果不出意外
你会看到这样子的
然后你可以新建一个bat文件 把刚刚那行命令拷进去
你就可以一键启动了
是不是很简单~
三、注意事项
1、如果你ngrok服务宕机了(毕竟这是常有的事情),那么你可以运行
nohup /opt/app/ngrok/bin/ngrokd -domain="你的域名" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" &
或者
nohup /opt/app/ngrok/bin/ngrokd -domain="你的域名" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" > /dev/null 2>&1 &
来重启你的ngork服务,第一个会保存日志,第二个不会保存日志
2、客户端ngrok.cfg中server_addr后域名必须严格与-domain以及证书中的NGROK_DOMAIN相同,否则Server端就会出现如下错误日志:
Failed to read message: remote error: bad certificate
资料来源:
https://segmentfault.com/a/1190000014094827?utm_source=tag-newest
https://blog.csdn.net/kxwinxp/article/details/88393572