摘要:FRP 全名:Fast Reverse Proxy。FRP 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。...
对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题。
今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy。
FRP 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。
FRP 项目地址:https://github.com/fatedier/frp
更多平台的软件包下载地址:https://github.com/fatedier/frp/releases
FRP 的作用
利用处于内网或防火墙后的机器,对外网环境提供 HTTP 或 HTTPS 服务。
对于 HTTP, HTTPS 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口。
利用处于内网或防火墙后的机器,对外网环境提供 TCP 和 UDP 服务,例如在家里通过 SSH 访问处于公司内网环境内的主机。
开发状态
frp 仍然处于开发阶段,未经充分测试与验证,不推荐用于生产环境。
master 分支用于发布稳定版本,dev 分支用于开发,您可以尝试下载最新的 release 版本进行测试。
目前的交互协议可能随时改变,不保证向后兼容,升级新版本时需要注意公告说明同时升级服务端和客户端。
架构

FRP 安装
FRP 采用 Go 语言开发,支持 Windows、Linux、MacOS、ARM等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包,并解压就可用。
这里以 Linux 为例,安装的是 frp_0.30.0 版 64 位软件,为了方便管理,解压后的目录重命名为 frp
# GitHub.com 下载
wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz && tar xzvf frp_0.30.0_linux_amd64.tar.gz && mv frp_0.30.0_linux_amd64 frp
# Pan.NasGe.com 下载(推荐)
wget http://pan.nasge.com/frp/v0.30.0/frp_0.30.0_linux_amd64.tar.gz && tar xzvf frp_0.30.0_linux_amd64.tar.gz && mv frp_0.30.0_linux_amd64 frp
更多平台的软件包下载地址:https://github.com/fatedier/frp/releases
FRP 公网服务端配置
配置 FRP 服务端的前提条件是需要一台具有**公网 IP **的设备,得益于 FRP 是 Go 语言开发的,具有良好的跨平台特性。你可以在 Windows、Linux、MacOS、ARM等几乎任何可联网设备上部署。
这里以 Linux 为例,FRP 默认给出两个服务端配置文件,一个是简版的 frps.ini,另一个是完整版本 frps_full.ini。
我们先来看看简版的 frps.ini,通过这个配置可以快速的搭建起一个 FRP 服务端,这里使用了最简化的配置。
# frps.ini 内容
[common]
bind_port = 7000
# frps.ini 内容结束
----------------------分割线----------------------
root@U-NAS:~/frp# cat frps.ini
[common]
bind_port = 7000
# 默认配置中监听的是 7000 端口,可根据自己实际情况修改。
在frp目录下输入【./frps -c ./frps.ini】命令启动 frps
root@U-NAS:~/frp# ./frps -c ./frps.ini
2019/12/17 18:06:54 [I] [service.go:141] frps tcp listen on 0.0.0.0:7000
2019/12/17 18:06:54 [I] [root.go:205] start frps success
出现【Start frps success】代表运行成功
通过上面简单的两步就可以成功启动一个监听在 7000 端口的 FRP 服务端。
FRP 内网客户端配置
和 FRP 服务端类似,FRP 默认也给出两个客户端配置文件,一个是简版的 frpc.ini,另一个是完整版本 frpc_full.ini
这里同样以简版的 frpc.ini 文件为例,假设 FRP 服务端所在服务器的公网 IP 为 192.168.44.130
root@U-NAS:~/frp# vi frpc.ini
[common]
# server_addr 为 FRP 服务端的公网 IP
server_addr = 192.168.44.130
# server_port 为 FRP 服务端监听的端口
server_port = 7000
[ssh]
type = tcp
# local_ip 为 内外客户端IP
local_ip = 127.0.0.1
# local_port 为 内外客户端端口
local_port = 22
# remote_port 为 内网服务端端口
remote_port = 6000
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 6001
在frp目录下输入【./frpc -c ./frpc.ini】命令启动 frpc
root@U-NAS:~/frp# ./frpc -c ./frpc.ini
2019/12/17 17:33:31 [I] [service.go:249] [35481b55cd500a76] login to server success, get run id [35481b55cd500a76], server udp port [0]
2019/12/17 18:33:31 [I] [proxy_manager.go:144] [35481b55cd500a76] proxy added: [ssh web]
2019/12/17 18:33:31 [I] [control.go:164] [35481b55cd500a76] [ssh] start proxy success
2019/12/17 18:33:31 [I] [control.go:164] [35481b55cd500a76] [web] start proxy success
这样就可以成功在 FRP 公网服务端上成功建立一个内网客户端连接,在 FRP 服务端上成功注册了一个端口为 6000、6001 的服务,接下来我们就可以通过这两个端口访问内网客户端上 SSH 22端口、WEB:80端口服务。
- 公网服务端 192.168.44.130:6000 定向为 内网客户端 127.0.0.1:22【SSH端口】
- 公网服务端 192.168.44.130:6001 定向为 内网客户端 127.0.0.1:80【WEB端口】
总结
根据对应的操作系统及架构,从 Release 页面下载最新版本的程序。
将 frps 及 frps.ini 放到具有公网 IP 的机器上。
将 frpc 及 frpc.ini 放到处于内网环境的机器上。
拓展阅读
内网穿透工具 FRP 客户端-Linux、群晖、U-NAS 一键安装命令
内网穿透工具 FRP 服务端、客户端 frps.ini 、frpc.ini 快速配置文件说明
内网穿透工具 FRP 客户端 frpc.ini 配置文件说明
内网穿透工具 FRP 服务端 frps.ini 配置文件说明
内网穿透工具 FRP 服务端增加仪表盘控制界面 Dashboard
---------------------------------- THE END ----------------------------------