CentOS 7使用Ngrok搭建内网穿透服务
依赖安装
安装go语言环境
sudo yum install -y golang
验证go语言环境
go env
安装最新版本git
sudo yum remove git
sudo yum install epel-release
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install git2u
验证git版本
git --version
安装 Ngrok
下载 Ngrok 最新源码
Ngrok Gtihub 地址:
https://github.com/inconshreveable/ngrok/releases
保存 Ngrok 源码
cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
生成自签名证书
其中 xxx.com 替换成自己的域名
cd /usr/local/ngrok/
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=xxx.com" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=xxx.com" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
证书生成后,将其拷贝,覆盖原来Ngrok 的证书:
拷贝时提示是否覆盖源文件,输入 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
生成客户端软件
编译生成服务端运行软件
cd /usr/local/ngrok/
GOOS=linux GOARCH=amd64 make release-server
生成的软件目录: /usr/local/ngrok/bin
服务端软件文件名: ngrokd
编译生成客户端运行软件:
# 32位linux客户端:
GOOS=linux GOARCH=386 make release-client
# 64位linux客户端:
GOOS=linux GOARCH=amd64 make release-client
#32位windows客户端:
GOOS=windows GOARCH=386 make release-client
#64位windows客户端:
GOOS=windows GOARCH=amd64 make release-client
#32位mac平台客户端:
GOOS=darwin GOARCH=386 make release-client
#64位mac平台客户端:
GOOS=darwin GOARCH=amd64 make release-client
#ARM平台linux客户端:
GOOS=linux GOARCH=arm make release-client
生成的软件目录: /usr/local/ngrok/bin/
Linux 平台客户端软件文件名: ngrok
Windows 64平台: windows_amd64/ngrok.exe
mac 64 平台: darwin_amd64/ngrok
运行软件
防火墙设置
永久开启 Ngrok 服务端口
firewall-cmd --add-port=6666/tcp --zone=public --permanent
firewall-cmd --reload
域名解析配置
需要配置的解析:
主机记录 记录值
* 服务器公网 ip
@ 服务器公网 ip
www 服务器公网 ip
运行服务端软件
将 xxx.com 替换为自己的域名
直接运行
cd /usr/local/ngrok/bin/
ngrokd -domain="xxx.com" -httpAddr=":8864" -httpsAddr=":8865" -tunnelAddr=":6666" &
使用证书启动
cd /usr/local/ngrok/bin/
ngrokd -domain="xxx.com" -tlsKey="../assets/server/tls/snakeoil.key" -tlsCrt="../assets/server/tls/snakeoil.
启动客户端软件
在运行客户端软件之前需要在软件的同级文件夹下创建配置文件ngrok.yml
server_addr: "xxx.com:6666"
trust_host_root_certs: false
在客户端目录下运行 cmd
客户端
ngrok.exe -config ngrok.yml -subdomain api 8022
-subdomain : 后边接二级域名名称
8022 : 本地映射端口
优化ngrok服务-设置开机启动
一,在ngrok程序目录下新建一个启动脚本,例如:
start.sh
path=/software/git/ngrok
$path
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt
-domain=“你的域名” -httpAddr=":80" -httpsAddr=":8082"
path为当前目录的路径
启动脚本要写后台启动的脚本,后面的启动项目根据自己需要来写
二,把ngrok程序制作成系统服务
在 /etc/rc.d/init.d目录下新建一个服务项目(ngrok),如下:
#!/bin/sh
#chkconfig:2345 70 30
#description:ngrok
ngrok_path=/software/git/ngrok
case "$1" in
start)
echo "start ngrok service.."
sh ${ngrok_path}/start.sh
;;
*)
exit 1
;;
esac
给该文件赋权限755
chmod 755 ngrok
三,注册ngrok服务自启动
chkconfig --add ngrok
测试服务是否能启动成功
service ngrok start
检查自启动的服务
chkconfig