CentOS 7使用Ngrok搭建内网穿透服务

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
发布了5 篇原创文章 · 获赞 0 · 访问量 1473

猜你喜欢

转载自blog.csdn.net/qq_32562005/article/details/104175863