ngrok自建服务器搭建

自建ngrok服务器,一把梭子干,笔记类型

0x00 安装需要程序

安装依赖编译程序

yum -y install golang git openssl gcc

下载Ngrok源码
cd /opt
git clone https://github.com/inconshreveable/ngrok.git


0x01 配置

更改ngrok源码配置客户端默认服务器域名

vim ngrok/client/model.go
#第24行
defaultServerAddr = "ngrok.yourself:4443"
#更具需要更改,这个是客户端ngrok web显示的监听配置
defaultInspectAddr = "127.0.0.1:4040"


0x02 生成证书

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.yourself.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=ngrok.yourself.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

复制自签名证书到软件

cp -f rootCA.pem assets/client/tls/ngrokroot.crt
cp -f device.crt assets/server/tls/snakeoil.crt
cp -f device.key assets/server/tls/snakeoil.key


0x03 编译ngrok

1
2
3
4
5
6
7
8
9
make release-server
#不同平台的client
#linux
GOOS=linux GOARCH=amd64 make release-client
#win
GOOS=windows GOARCH=amd64 make release-client
#树莓派
GOOS=linux GOARCH=arm GOARM=6 make release-client


0x04启动

服务端启动:

/opt/ngrok/bin/ngrokd -tlsKey=/opt/ngrok/server.key -tlsCrt=/opt/ngrok/server.crt -domain='ngrok.yourself.com' -httpAddr=':8081' -httpsAddr=':8082'

客户端启动:

配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server_addr: "ngrok.kionf.com:4443"
trust_host_root_certs: false
tunnels:
#配置名称可以自己取
ssh:
#转发到远程端口
remote_port: 6665
proto:
#协议:本地端口
tcp: 110
fucc:
#转发到远程端口
remote_port: 777
proto:
#协议:本地端口
tcp: 120

nohup /data/ngrok/ngrok -config=/data/ngrok/cfg start-all > /data/ngrok/log &
start ssh指定转发, start-all 启动所有