文章目录
1 摘要
关于什么是内网穿透,有什么作用,需要哪些必备条件等可参考:
Ngrok 是一个开源的、通过反向代理的方式实现内网穿透服务的软件
本文将以CentOS 7 为基础搭建 Ngrok 内网穿透服务
2 依赖安装
2.1 安装 Go 语言环境
sudo yum install -y golang
验证Go语言环境
go env
2.2 安装最新版本 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
3 安装 Ngrok
3.1 下载 Ngrok 最新源码
Ngrok Gtihub 地址:
https://github.com/inconshreveable/ngrok/releases
保存 Ngrok 源码
cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
3.2 生成自签名证书
其中 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
3.3 生成客户端软件
编译生成服务端运行软件
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
4 运行软件
4.1 防火墙设置
永久开启 Ngrok 服务端口
firewall-cmd --add-port=6666/tcp --zone=public --permanent
firewall-cmd --reload
4.2 域名解析配置
需要配置的解析:
主机记录 | 记录值 |
---|---|
* | 服务器公网 ip |
@ | 服务器公网 ip |
www | 服务器公网 ip |
4.3 Nginx 配置
如果为安装 Nginx,先安装 Nginx
官方文档 Installing NGINX Open Source
官方文档 Controlling NGINX Processes at Runtime
官方文档 Creating NGINX Plus and NGINX Configuration Files
将 xxx.com
替换为自己的域名
server {
listen 80;
listen 443;
server_name *.xxx.con xxx.com;
charset utf-8;
access_log /var/log/nginx/ngrok.log main;
location / {
proxy_pass http://127.0.0.1:8864;
proxy_redirect off;
proxy_set_header Host $http_host:8864;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4.4 运行服务端软件
将 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.crt" -httpAddr=":8864" -httpsAddr=":8865" -tunnelAddr=":6666" &
4.5 启动客户端软件
在运行客户端软件之前需要在软件的同级文件夹下创建配置文件ngrok.yml
server_addr: "xxx.com:6666"
trust_host_root_certs: false
在客户端目录下运行 cmd
客户端
d:
cd D:\develop\software\windows_amd64
ngrok.exe -config ngrok.yml -subdomain api 8022
-subdomain
: 后边接二级域名名称
8022
: 本地映射端口
5 推荐参考资料
CentOS7搭建ngrok服务器
CentOS7.4 搭建ngrok 内网穿透
ngrok绑定多个顶级域名、多个二级域名及转发tcp同时启动的方法
搭建ngrok远程桌面的环境
关于玩转内网穿透系列:
玩转内网穿透(2):CentOS 7使用Ngrok搭建内网穿透服务
玩转内网穿透(3):进阶,Ngrok绑定多域名、多端口设置远程桌面连接
个人公众号:404Code,记录半个互联网人的技术与思考,感兴趣的可以关注.