跳转至

Ngrok

介绍:内网穿透服务。

软件官网:ngrok.com

自建ngrok服务

服务器防火墙开启端口4443 域名解析到相应IP(*全部解析,@剩下)

yum install gcc git golang
系统提供的golang版本较低时可
wget https://studygolang.com/dl/golang/go1.12.linux-amd64.tar.gz
tar -zxvf go1.8.linux-amd64.tar.gz
.vim /etc/profile 加上这两句话
export GOROOT=你的go解压地址
export PATH=$PATH:$GOROOT/bin
source /etc/profile 是环境生效
go version 查看go是否安装成功
如重复安装可按照此法删除 which go rm 相应文件夹即可 获取ngrok源码
git clone https://github.com/inconshreveable/ngrok.git
cd ngrok
NGROK_DOMAIN="你的域名"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
cp base.pem assets/client/tls/ngrokroot.crt  # 复制证书
make release-server release-client  # 生成服务端和客户端文件
nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":80" -httpsAddr=":8082" &  # 启动服务
生成win和mac客户端
GOOS=windows GOARCH=amd64 make release-client
GOOS=darwin GOARCH=amd64 make release-client
在客户端同级目录下新建一个配置文件ngrok.cfg:
server_addr: "你的域名:4443"  
trust_host_root_certs: false
然后复制到相应客户机上运行

linux设置为系统程序并后台运行

cd /etc/systemd/system/
vim ngrok.service
[Unit]
Description=ngrok
After=network.target
[Service]
ExecStart=/myweb/ngrok/bin/ngrokd -tlsKey=/myweb/ngrok/server.key -tlsCrt=/myweb/ngrok/server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"
[Install]
WantedBy=multi-user.target

windows配置启动

配置文件ngrok.cfg

server_addr: "weixin.yangjiace.xyz:4443"  
trust_host_root_certs: false  
startup.bat文件
@echo off
if "%1"=="hide" goto CmdBegin
start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
:CmdBegin
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=yjc 8080
将startup.bat快捷方式复制到启动下

客户端配置

小米球ngrok 在程序目录新建文件start.sh

path=/usr/local/ngrok
nohup $path/ngrok -config=$path/ngrok.cfg -subdomain xxx -log=stdout 80 >/dev/null 2>&1 &
在/etc/init.d/新建文件ngrok
#!/bin/sh  
#chkconfig:2345 70 30  
#description:ngrok  
ngrok_path=/usr/local/ngrok
case "$1" in
    start)
        echo "start ngrok service.."  
        sh ${ngrok_path}/start.sh
        ;;
    *)
    exit 1
    ;;
esac