欢迎光临
我们一直在努力

FreeBSD系统下架设Ngrok穿透内网

Ngrok介绍

Ngrok是一款使用可以轻松穿透内网的工具,使用Go语言进行编写,开放源代码,且附带服务器端及客户端,而且,因为使用Go语言编写,天生就具有了很好的跨平台特性,可谓特别方便!

要使用Ngrok进行内网穿透,具有几种方案:

  1. 直接使用官网提供的免费服务器,即:http://ngrok.com/,官网提供了免费服务,不过域名不可自定义,且服务器位于国外,速度方面不太理想。
  2. 使用国内第三方Ngrok服务器,国内有很多人提供了Ngrok内网穿透方案,找到第三方,然后使用即可。
  3. 自己搭建Ngrok服务器进行使用。

要自己架设Ngrok服务器,需要具备以下几点条件:

  1. 一台可外网访问的VPS(或独立服务器)。
  2. 一个可正常使用的域名。

服务端架设

域名解析

要进行服务端架设,咱们把准备工作先做了,就是域名解析,这一步非常重要,将决定了之后的客户端连接等问题。

这里假设我有一个域名b.com,为了不影响域名的使用,使用一个二级域名来作为Ngrok的解析,这里架设为a.b.com

那么,现在直接设置解析,b.com无需变动,以前解析的什么就是什么,咱们添加一条A记录,a.b.com,指向服务器的IP地址,这里假设为1.1.1.1

这里已经把子域名解析完成了,但还没完,咱们还需要添加一个泛解析,添加一条cname记录,*.a.b.com,指向服务器IP地址,或者直接指向a.b.com

为什么要添加泛解析?因为根据Ngrok的模式,可以自行指定子域名进行内网穿透,所以咱们就解析下吧!

基础软件安装

Ngrok是使用Go语言编写的,要进行服务器搭建,咱们要先安装一下Go语言,同时安装下Git,至于怎么安装,直接pkg install即可,这里不再多说了!

编译服务端

网上已经有网友提供了一份修改版代码,这是因为原版代码的引入存在一些不太理想的地方,新手容易出错,所以咱们直接使用别人提供的修改版,轻轻松松编译运行!

set GOOS=freebsd
set GOARCH=amd64
go get github.com/newflydd/ngrok/main/ngrokd

执行后会在$GOPATH/bin下生成一个ngrokd的可执行文件,把这个文件移动到一个方便访问的目录,比如:/data/

生成证书

接着咱们需要生成证书,这是必须的步骤,注意,将其中的a.b.com改为您自己的域名。

cd /data
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=a.b.com" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=a.b.com" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem ngrokroot.crt
cp device.crt snakeoil.crt
cp device.key snakeoil.key

ngrokroot.crtsnakeoil.crtsnakeoil.key三个文件下载到本地,服务器上的继续保留,待会儿要用。

编译客户端

注意下,由于客户端也是freebsd的,所以编译为freebsd版本,若您的客户端系统不一样,请注意修改GOOS及GOARCH项。

set GOOS=freebsd
set GOARCH=amd64
go get github.com/newflydd/ngrok/main/ngrok

同样的在$GOPATH/bin下生成了一个ngrok的可执行文件,咱们把这个文件下载到本地。

启动服务端

执行完以上步骤后,咱们就可以运行服务端了,执行命令:

/data/ngrokd -domain="a.b.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

解释下:

-domain:ngrok所用域名,与证书相匹配。
-httpAddr:http访问所用端口。
-httpsAddr:https访问所用端口。
-tunnelAddr:ngrok通讯端口。

客户端配置

把刚才下载下来的证书和ngrok可执行文件上传或复制到客户端内,这里继续保存到/data/下。

然后使用ee /data/ngrok.cfg创建一个配置文件,内容如下:

server_addr: "a.b.com:4443"
trust_host_root_certs: false

注意把a.b.com:4443修改下为您的域名及Ngrok通讯端口。

启动客户端

OK,现在咱们可以启动客户端了,测试下是否架设成功!

/data/ngrok -config=/data/ngrok.cfg -subdomain=kk 80

解释下:

-config:表示刚才创建的配置文件路径
-subdomain:表示自己指定一个子域名,指定后访问的域名变为kk.a.b.com

执行后会有一个连接界面,连接成功后可以看到访问域名,按照域名访问了试试看吧!

赞(0) 打赏
未经允许不得转载:老赵部落 » FreeBSD系统下架设Ngrok穿透内网

评论 抢沙发