搭建 Ngrok 服务器
Ngrok 可以实现内网穿透,能够借助一个具有公网 IP 的服务器,使内网电脑的某些端口能够被公网访问到。
准备工作
- 有公网 IP 的服务器
- 域名(顶级域名或二级域名)
- Linux 系统电脑(虚拟机也行)
域名需使用 A 记录解析到服务器
安装环境
- go 环境,由于 ngrok 是使用 go 语言编译,因此需要安装 go 语言环境
- git,也会使用 git 下载源码
在终端中执行
1 | yum install gcc mercurial git bzr subversion golang |
或者
1 | sudo apt-get install gcc mercurial git bzr subversion golang |
下载源码
使用 git 下载 ngrok 源码,在指定目录执行下面语句
1 | git clone https://github.com/inconshreveable/ngrok.git |
完成后会生成 ngrok 目录,进入该目录
1 | cd ngrok |
成证书
将域名”ngrok.hal.wang”改成自己的域名
1 | mkdir cert |
1 | cp rootCA.pem ../assets/client/tls/ngrokroot.crt |
生成后的证书在 cert 目录
生成
切换回 ngrok 目录
执行下面语句,生成对应服务端和客户端
1 | GOOS=(系统) GOARCH=(位) make release-(服务端/客户端) |
- 系统:linux/windows/darwin (Mac)
- 位:386 (32 位)/amd64 (64 位)
- 服务端:server/client
生成后的运行程序在 bin 目录
服务端运行
参数
- tlsKey 生成证书 cert 目录下的 device.key 文件
- tlsCrt 生成证书 cert 目录下的 device.crt 文件
- tunnelAddr:服务端通道端口,任意设置,默认 4443
- httpsAddr:https 端口,任意设置,默认 443
- httpAddr:http 端口,任意设置,默认 80
Windows:
1 | start /b ngrokd |
linux:
1 | ./bin/ngrokd -domain="\$NGROK_DOMAIN" |
客户端运行
Windows:
创建 config 文件,内容如下:
1 | server_addr: "ngrok.hal.wang:4443" |
域名改成自己的,端口是服务端开启的端口tunnelAddr
- remote_port 服务端使用的端口,在公网中使用这个
- tcp 端口 映射到本地使用的端口