搭建ngrok服务器
ngrok已经不再维护了,建议使用frp
如今ipv4资源日渐匮乏,静态公网ip不容易获取,若是想从公网访问本机资源将会变得比较麻烦,ngrok可以通过流量转发来实现内网穿透,让外网更加容易访问本机资源。
准备
- 一个有固定公网ip的服务器
- 一个域名
- 把某个子域名以及其泛解析解析到服务器
例: 将ngrok.plusls.com
解析为1.2.3.4
并将*.ngrok.plusls.com
解析为1.2.3.4
生成可执行文件
下载源码
1 | git clone https://github.com/inconshreveable/ngrok.git |
生成自签名证书
生成证书需要提供一个NGROK_BASE_DOMAIN
,要求该地址指向服务器地址,在本次的例子中则是ngrok.plusls.com
,若是NGROK_BASE_DOMAIN与连接时提供的域名不同,则无法连接
执行
1 | NGROK_BASE_DOMAIN="ngrok.plusls.com" |
执行完成后会生成device.crt
,divice.csr
,device.key
,rootCA.key
,rootCA.pem
,rootCA.srl
ngrok会把ngrok源码下的assets目录编译到ngrokd和ngrok中,assets/client/tls
和assets/server/tls
下分别存放着客户端和服务器的默认证书文件,接下来把它们替换为刚才生成的
1 | cp rootCA.pem assets/client/tls/ngrokroot.crt |
编译
在ngrok目录执行
1 | make release-server release-client |
配置
服务端
1 | ngrokd -domain="ngrok.plusls.com" |
若出现
1 | [03/29/17 20:51:30] [INFO] [registry] [tun] No affinity cache specified |
则说明启动成功
注:
- domain不一定是刚刚的,可以是其它的,但是必须解析到服务器上
- 可以用
-httpAddr=":80"
指定web转发的端口,如果不为80则访问时需要加上端口号
客户端
将生成的ngrok下载到电脑后,在主目录创建.ngrok
(默认配置文件位置,也可以用-config=xxxx
指定配置文件)
输入
1 | server_addr: "ngrok.plusls.com:4443" |
子域名,端口,目标端口可自行配置
server_addr必须与前面相同!否则无法连接服务器
之后执行
1 | ./ngrok start-all |
若是看到
1 | ngrok (Ctrl+C to quit) |
则说明成功
其它指令可以自行查看帮助