ngrok内网穿透实现方案

本方案使用 ngrok 来构建内网穿透的环境。

它的核心功能:能够将你本机的HTTP服务或TCP服务,通过部署有 ngrok 服务的外网服务器暴露给外网访问!

1、源码下载

git clone https://github.com/chujieyang/ngrok.git

2、域名配置

使用域名 justlean.cn 来作为内网穿透时使用的域名。

添加域名解析:

ngrok.justlean.cn--->代理服务器外网IP *.ngrok.justlean.cn--->代理服务器外网IP

3、创建和配置证书

#!/bin/sh # 创建证书 openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=ngrok.justlean.cn" -days 5000 -out rootCA.pem openssl genrsa -out server.key 2048 openssl req -new -key server.key -subj "/CN=ngrok.justlean.cn" -out server.csr openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000 # 配置证书 cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key

4、服务端、客户端编译

请提前准备 go1.14.15 编译环境

# 服务端(linux)编译 GOOS="linux" GOARCH="amd64" make release-server # 客户端(mac)编译 GOOS="darwin" GOARCH="amd64" make release-client

5、服务端配置启动

./bin/ngrokd -domain="ngrok.justlean.cn" -httpAddr=":29000" -httpsAddr=":29001"

6、客户端配置启动

客户端配置文件 ngrok.cfg:

server_addr: "ngrok.justlean.cn:4443" trust_host_root_certs: false# 启动客户端 ./ngrok -subdomain pydemo -config=./ngrok.cfg 8888

7、启动本地服务

python -m http.server 8888

8、测试外网访问本地服务