自己动手搭建ngrok实现内网穿透

1,157 阅读2分钟

第一步:安装go和git

yum install gcc -y

yum install git -y

yum install mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386 -y

第二步:下载ngrok源码

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

第三步:编译及安装

执行以下命令

注意:NGROK_DOMAIN是你要使用的域名地址(二级域名也可以)

cd ngrok

NGROK_DOMAIN="xxxx.com"

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

第四步:拷贝替换证书

提示是否覆盖 则输入 y

cp base.pem assets/client/tls/ngrokroot.crt

第五步:编译并生成服务端启动程序

make release-server release-client

此次操作需要一点点等待时间(取决于服务器网络和性能),如果编译成功后会在bin目录生成ngrokd文件

ngrokd是服务端启动程序 (====下边会有启动命令====)

第六步:编译客户端(在ngrok目录下)

mac环境

GOOS=darwin GOARCH=amd64 make release-client

windows环境

GOOS=windows GOARCH=amd64 make release-client  

第七步:将编译出的客户端下载到自己的本机(需要内网穿透的机器上)

第八步:在刚才从服务器下载来的客户端同级目录里创建配置文件

文件名: ngrok.cfg

server_addr: "xxx.xxx.com:4443"  
trust_host_root_certs: false 

server_addr 端口则与服务端tunnelAddr配置相同

第九步:启动服务端和客户端

启动服务端

 ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xxx.xxx.com" -httpAddr=":80" -httpsAddr=":443"

-httpAddr=80 指定映射域名http访问的端口 默认80

-httpsAddr=443 https的访问端口 默认443

-tunnelAddr=4443 客户端连接的端口 默认4443

可自定义修改

启动客户端

./ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=ngrok 8088

后边的端口号代表本地服务的端口号 mac出现 -bash: ./xx.sh: Permission denied报错解决方法

chmod 777 文件名