自己服务区搭建ngrok

ngrok源码地址https://github.com/inconshreveable/ngrok.gitidiz源码dyuanmyuangrokyngrnhttps://github.com/inconshreveable/ngrok.git

生成证书,GO版本1.15以下参考这个理云服务器搭建自己的ngrok服务-实现内网穿透-腾讯云开发者社区-腾讯云

cat > cert.conf << EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = v3_req

[dn]
CN = ${NGROK_DOMAIN}

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = ${NGROK_DOMAIN}
DNS.2 = *.${NGROK_DOMAIN}
EOF

cd /data/ngrok
#生成并替换源码里默认的证书,注意域名要修改为你自己的,这里是一个虚拟的测试域名
NGROK_DOMAIN="ngrok.域名.cn"
#测试一下有没有设置成功
echo $NGROK_DOMAIN #输出{你的域名-ngrok.xgss.域名net}表示成功

# 1. 生成 CA 根证书私钥
openssl genrsa -out rootCA.key 2048

# 2. 生成 CA 根证书(自签名)
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=${NGROK_DOMAIN}" -days 5000 -out rootCA.pem

# 3. 生成设备证书私钥
openssl genrsa -out device.key 2048

# 4. 生成带 SAN 扩展的设备证书请求(CSR)
openssl req -new -key device.key -out device.csr -config cert.conf

# 5. 用 CA 签发设备证书(保留 SAN 扩展)
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 -extensions v3_req -extfile cert.conf

# 3. 复制到正确的位置(关键一步)
# 客户端信任根证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
# 客户端信任服务端证书(Debug模式)
cp device.crt assets/client/tls/snakeoilca.crt
# 服务端使用设备证书
cp device.crt assets/server/tls/snakeoil.crt
# 服务端使用设备私钥
cp device.key assets/server/tls/snakeoil.key

编译程序


#生成服务端
GOOS=linux GOARCH=amd64 GO111MODULE=off make release-server
#生成客户端
GOOS=windows GOARCH=amd64 GO111MODULE=off make release-client

#启动服务端
./bin/ngrokd -domain="ngrok.域名.cn" -httpAddr=":8181" -httpsAddr=":8443"  -tunnelAddr=":4443"

添加服务自启动


#写入自启动
cat > /etc/systemd/system/ngrokd.service << EOF
[Unit]
Description=ngrok Server Daemon
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=simple
# ⚠️ 修改为你的 ngrokd 实际绝对路径
ExecStart=/home/jtg/ngrok/ngrok/bin/ngrokd -domain="ngrok.域名.cn" -httpAddr=":8181" -httpsAddr=":8443" -tunnelAddr=":4443"
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF


# 重载 systemd 配置
sudo systemctl daemon-reload

# 设置开机自启
sudo systemctl enable ngrokd

# 立即启动服务
sudo systemctl start ngrokd

# 验证运行状态
sudo systemctl status ngrokd


# 查看实时日志
journalctl -u ngrokd -f

# 重启服务
sudo systemctl restart ngrokd

# 停止服务
sudo systemctl stop ngrokd

# 检查端口是否正常监听
ss -tlnp | grep ngrokd

客户端配置ngrok.yml

server_addr: "ngrok.域名.cn:4443"
trust_host_root_certs: false

tunnels:
  test:
    subdomain: "app"    # 自定义子域名
    proto:
      http: 8080
#启动带日志方式客户端
ngrok.exe -config=ngrok.cfg --log=stdout --log-level=debug start test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值