天天看点

Linux下ngrok内网穿透

ngrok内网穿透:能够将你本机的HTTP服务(站点)或TCP服务,通过部署有ngrok服务的外网伺服器暴露给外网访问!实现本地开发,外网调试。

准备:一台外网可访问的主机,且有域名解析至该主机上。

Linux下ngrok内网穿透
  1. 橘色屏幕的笔记本是你的工作机器,安装了ngrok客户端
  2. 服务器安装了ngrok的服务端(ngrokd)
  3. 利用ngrok 8080命令可以将你本机的8080端口暴露给反向代理至服务器的某个二级域名如:kl.ngrok.wili.us.cn
  4. 别人通过kl.ngrok.wili.us.cn就可以访问你本机8080端口上的站点内容了。

一、安装go、git工具

sudo apt-get update
sudo apt-get install git
sudo apt-get install golang
# 查看go版本
go version
           
Linux下ngrok内网穿透

二、获取ngrok源码

git clone https://github.com/inconshreveable/ngrok.git
           
Linux下ngrok内网穿透

三、更改ngrok域名

export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="ngrok.wili.us"
           

ngrok.wili.us 替换成自己的域名

四、生成证书

$NGROK_DOMAIN 替换成自己的域名。这里我的是 ngrok.wili.us

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
           
Linux下ngrok内网穿透

生成六个文件:

Linux下ngrok内网穿透

Ngrok通过bindata将ngrok源码目录下的assets目录(资源文件)打包到可执行文件(ngrokd和ngrok)中去,assets/client/tls和assets/server/tls下分别存放着用于ngrok和ngrokd的默认证书文件,我们需要将它们替换成我们自己生成的(因此这一步务必放在编译可执行文件之前)

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

五、编译ngrok服务端

make release-server
           
Linux下ngrok内网穿透

ngrokd 就是服务端

六、编译客户端

linux客户端

GOOS=linux GOARCH=amd64 make release-client
           

Linux下ngrok内网穿透

编译Mac版本客户端

GOOS=darwin GOARCH=amd64 make  release-client
           

七、服务端启动

ngrokd -domain="ngrok.wili.us" -httpAddr=":80" -httpsAddr=":8089"
           

八、客户端启动

在和客户端相同文件目录bin下,新建一个 

ngrok.cfg

配置文件

vim ngrok.cfg
           

添加:

server_addr: "ngrok.wili.us:4443"
trust_host_root_certs: false
           

启动:subdomain后面的自定义就好

./bin/ngrok -subdomain mp -config=./ngrok.cfg 5000
           
Linux下ngrok内网穿透

备注:客户端和服务端必须在相同证书下编译,不能分开编译。

参考:   手把手教你搭建ngrok服务-轻松外网调试本机站点

             一分钟实现内网穿透(ngrok服务器搭建)

             https://github.com/inconshreveable/ngrok/blob/master/docs/SELFHOSTING.md

             https://github.com/inconshreveable/ngrok/blob/master/docs/DEVELOPMENT.md