“服务器中转访问”是本地设备经由公网上的服务器转发实现对远程设备(开发板)的访问。这里我们采用 “域名解析”+“云服务器”+开发板+frp(内网穿透软件)实现这个功能。具体操作步骤如下。

1) 购买域名注册和云服务器

本例中将采用的阿里云的域名和云服务器。读者可以到阿里云 www.aliyun.com(或其他服务提供商自行购买)进行购买。购买云服务器时,选择“按量付费、国内服务器、最低配置、 ubuntu 16.04 系统”的阿里云服务器。购买域名(后面“测试 web 连接”时用到,如果只是做 TCP 应用通过 IP 访问,可以不用域名) 时, 读者可以选择花生壳域名或非热门的付费域名比如“.top”和,以减少前期测试费用。

2) 配置阿里云服务器

进入“管理控制台” ->“云服务器 ESC” ->“实例” -> “管理” ->“本实例安全组” ->“配置规则” ->“添加安全组规则”,设置开放 6000 至 8000 端口号(下面步骤需要用到端口,不设置这个规则会导致 frq 客户端无法访问云服务器),设置如下图所示

《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图1

点击上图“确定”完成设置。
《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图2

我们用xshell或secureCRT 选择“ssh”并填入在创建云服务器时填写的 ssh 登录密码和用户名,然后登录。
执行
#uname -a
命令,获取系统构架信息,如下图所示
《OpenWrt开发笔记》第33章远程访问开发板(FRP)
由上图可知这个云服务器是“linux、 x86_64”系统。

3) 服务器下载并运行“frp”内网穿透服务端

“frp”官方的下载地址是https://github.com/fatedier/frp/releases
根据上一步得到的云服务器系统信息,我们下载“frp_0.25.3_linux_386.tar.gz”。

《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图3

将文件夹用 xftp或winscp 上传到云服务器的“/root”目录下,并解压。笔者是直接使用wget下载。
#wget https://github.com/fatedier/frp/releases/download/v0.25.3/frp_0.25.3_linux_386.tar.gz
《OpenWrt开发笔记》第33章远程访问开发板(FRP)
进入文件中,执行以下命令:
#./frps -c ./frps.ini
运行 frps,出现类似下图提示
《OpenWrt开发笔记》第33章远程访问开发板(FRP)

4) 开发板下载并运行“frp”内网穿透客户端

开发板上执行命令
#uname -a
如下图所示
《OpenWrt开发笔记》第33章远程访问开发板(FRP)
从上图可知,开发板是“linux、 mips”系统, MT7620、MT7628 、MT7688、MT7621都 是 mipsel 构架,因此我们下载“frp_0.25.3_linux_mipsel.tar.gz”

《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图4

将文件夹用 xftp或winscp 上传到路由器的“/root”目录下,并解压。
vi frpc.ini #打开并修改“frpc.ini”文件,如下所示。
《OpenWrt开发笔记》第33章远程访问开发板(FRP)
(“47.106.72.113”为云服务器 IP)
然后保存退出,接着执行
#chmod +x frpc #给 frpc 添加执行权限
在运行“frpc”之前,请先确保开发板能连接外网,否则 frpc 程序无法正常运行。开发板可以执行 ping www.baidu.com 进行测试是否联网,确保开发板可以联网后,执行
#./frpc -c ./frpc.ini #运行 frpc
《OpenWrt开发笔记》第33章远程访问开发板(FRP)

5) 测试远程登陆

本地用 xshell、secureCRT建立一个 ssh 终端连接,并填写云服务器 IP、开发板的用户名(root)和密码(root)、端口号 6000,如下图。
《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图5

顺利的话,就能连接到开发板的 ssh 控制终端了,如下图所示。
《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图6

通过添加“frpc.ini”文件配置,读者还可以添加其他的一个或者多个 TCP 类型的服务,比如FTP添加配置如下所示。

[ftp_1]
type = tcp
local_ip = 127.0.0.1
local_ip = 21
remote_port = 6001
........

6) WEB测试

首先配置域名的解析,将它的域名 A 记录指向云服务器 IP(记录值)。

《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图7

《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图8

这里我们假设设置了一个域名“frp.bruceou.cn”指向服务器的 IP。云服务器退出“frps”,修改配置文件“frps.ini”,添加如下配置。

vhost_http_port = 8000

《OpenWrt开发笔记》第33章远程访问开发板(FRP)
重新运行服务端,执行命令:
#./frps -c ./frps.ini
《OpenWrt开发笔记》第33章远程访问开发板(FRP)
配置开发板的"frpc.ini"文件,添加如下配置

[web_1]
type = http
local_port = 80
custom_domains = frp.bruceou.cn

开发板重新执行
#./frpc -c ./frpc.ini

《OpenWrt开发笔记》第33章远程访问开发板(FRP)
云服务器出现下图提示
《OpenWrt开发笔记》第33章远程访问开发板(FRP)
说明已经开发板客户端连接到服务器,并且服务运行正常。这时,我们可以用手机或者电脑的浏览器,输入“frp.bruceou.cn:8000”,从外网访问到开发板的配置页面。
《OpenWrt开发笔记》第33章远程访问开发板(FRP)

图9

通过添加“frpc.ini”文件配置,读者还可以添加其他的一个或者多个 web 类型的服务, “摄像头监控网页”,添加类似如下配置。

[web_2]
type = http
local_port = 8080
custom_domains = frp.bruceou.cn

远程访问地址:http://frp.bruceou.cn:8000/?action=stream
【注】在这里要把前面的web_1的配置注释掉,不然会端口冲突,或者再在阿里云添加一条记录。

7) 设置开机启动

如果需要让程序开机启动,可以在开发板的“/etc/rc.local”添加
/root/frp_0.25.3_linux_386/frpc -c /root/frp_0.25.3_linux_386/frpc.ini >/dev/null 2>&1 &
当然。云服务器也可进行类似的配置即可在后台运行。

相关文章: