飞凌干货丨如何通过FRP反向代理访问内网机器

一、实际使用场景:

针对实际使用中,遇到如下场景,想让其他人测试在本地搭建的WEB服务,由于本地机器没有公网IP,无法域名解析到本地机器。可通过反向代理的方式,实现此功能。

本文FRP反向代理访问处于内网环境中的iMX6UL系列OKMX6UL-C开发板作为说明。

二、F RP 简介

FRP是一个可用于内网穿透的高性能的反向代理应用,支持TCP,UDP协议,为HTTPHTTPS应用协议提供了额外的能力,且尝试性支持了点对点穿透。 

三、FRP  的作用

利用处于内网或防火墙后的机器,对外网环境提供 HTTP 和 HTTPS  服务。

对于HTTP服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

利用处于内网或防火墙后的机器,对外网环境提供 TCP服务,例如可在通过 SSH 访问处于公司内网环境内的主机。

可查看通过代理的所有 HTTP 请求和响应的详细信息。(待开发)

四、具体操作:

根据对应的操作系统及架构,从FRP的 Release 页面下载最新版本的程序。

以本文为例,采用飞凌嵌入式iMX6UL系列OKMX6UL-C开发板

下载frp_0.27.0_linux_arm.tar.gz。

将压缩包中的 frps 及 frps.ini 放到具有公网 IP 的机器上。

将压缩包中的 frpc 及 frpc.ini 放到处于内网环境的机器飞凌iMX6UL系列OKMX6UL-C开发板上。

修改配置文件

公网IP的机器上:

修改 frps.ini 文件,这里使用了最简化的配置:

# frps.ini

[common]

bind_port = 7000

启动 frps:

./frps -c ./frps.ini

内网环境的机器 FCU1101上:

修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x;

# frpc.ini

[common]

server_addr = x.x.x.x

server_port = 7000

[ssh]

type = tcp

local_ip = 127.0.0.1

local_port = 22

remote_port = 6000

启动 frpc:

./frpc -c ./frpc.ini

通过 ssh 访问内网机器飞凌 iMX6UL系列OKMX6UL-C开发板

假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

本文简单介绍了如何通过FRP 服务访问内网机器,其他复杂的应用,请结合自己实际使用,修改。当然,也可以选择其他的反向代理,如Ngrok,也有类似编译好的可执行文件。