玩转内网穿透(2):CentOS 7使用Ngrok搭建内网穿透服务

1 摘要

关于什么是内网穿透,有什么作用,需要哪些必备条件等可参考:

玩转内网穿透(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 : 本地映射端口

Ngrok客户端运行-1
Ngrok客户端运行-2

5 推荐参考资料

CentOS7搭建ngrok服务器
CentOS7.4 搭建ngrok 内网穿透
ngrok绑定多个顶级域名、多个二级域名及转发tcp同时启动的方法
搭建ngrok远程桌面的环境

关于玩转内网穿透系列:

玩转内网穿透(1):内网穿透是什么?有什么用

玩转内网穿透(2):CentOS 7使用Ngrok搭建内网穿透服务

玩转内网穿透(3):进阶,Ngrok绑定多域名、多端口设置远程桌面连接

个人公众号:404Code,记录半个互联网人的技术与思考,感兴趣的可以关注.
404Code

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值