一、介绍
frp是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网IP的节点进行中转。
1.工作原理
FRP的基本工作流程如下:
- 客户端(frpc): 部署在内网中,负责将内网服务通过FRP协议发送到公共服务器。
- 服务器(frps): 部署在外网中,接收来自客户端的数据,并将请求转发到相应的内网服务。
当外网用户访问公共服务器上的特定端口时,FRP服务器会将请求转发给相应的FRP客户端,从而实现对内网服务的访问。
FRP工作原理图
2.FRP的优点
- 高性能:FRP对流量进行了优化,支持高并发连接。
- 配置灵活:支持多种协议,且可以对不同服务进行不同的配置。
- 开源免费:FRP 是一款开源软件,用户可以根据需要自由修改和使用。
二、FRP的安装与配置
接下来我们将介绍如何在你的服务器和内网设备上安装和配置FRP。所以,要使用 FRP 实现内网穿透,首先需要拥有一台 VPS。
1.环境准备
在开始之前,你需要准备以下环境:
- 一台公网服务器(用于部署FRP服务器),本案例是采用ubuntu的系统。具体的版本如下所示:
- 一台内网设备(用于部署FRP客户端),内网的机器我采用的是pve系统,具体版本如下所示:
2.服务器端(frps)安装与配置
FRP 服务端(frps)的安装方式多种多样,您可以选择使用二进制文件或 Docker 进行部署。
(1) 二进制部署
通过github获取最新版文件下载,如下图所示:
登录系统后,切换到指定目录。在本例中,我选择了opt目录。
cd /opt
下载frp文件,将wget后面的连接换下最新版本。
wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz
下载完成后执行下面的命令解压文件:
sudo tar -zxvf frp_0.60.0_linux_amd64.tar.gz
执行下面的命令对frp应用重命名:
mv frp_0.60.0_linux_amd64 frp_0.60.0
文件介绍:
- frps:服务端启动文件。
- frps.toml:服务端的配置文件。
所以,服务端只需要留下 frps 和 frps.toml 即可。编辑 frps.toml ,完成的配置文件选项可访问官方模板[1]。
bindAddr = "0.0.0.0"
bindPort = 7000
auth.method = "token" # 用于客户端和服务器通信的身份验证令牌
auth.token = "user1@1234" #秘钥格式建议配置 用户+@+密码 的格式,方便区分用户
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "user" #管理面板的用户
webServer.password = "密码" #管理面板的密码
# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
配置服务端systemd管理frp,执行下面的命令创建frps.service文件。
vim /etc/systemd/system/frps.service
并在该文件写入如下内容:
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /opt/frp_0.60.0/frps -c /opt/frp_0.60.0/frps.toml
[Install]
WantedBy = multi-user.target
执行下面的命令启用开机自器和启动服务。
systemctl enable frps && sudo systemctl start frps
检查服务是否正常,使用如下命令查看,如果服务异不是active请检查日志。
systemctl status frps
(2) 1Panel部署
如果觉得上面的二进制部署方式复杂,可以尝试使用 1Panel部署。由于我的VPS已经安装了 1Panel,可以直接通过 1Panel 轻松安装 frps。
打开1panel应用商店,直接找到frp服务端,安装:
部署完成如下图所示:
认证方式,默认是token,token的设置和获取,在应用市场、已安装,点进入安装目录按钮。
frps状态
frps配置文件
三、客户端安装配置
客户端只需要留下frpc和frpc.toml文件。编辑frpc.toml,并在该文件添加如下内容:
serverAddr = "x.x.x.x" #VPS服务器的IP地址(公网IP)
serverPort = 7000 #frps服务端口,对于的上面的frps配置文件bindPort的值
auth.method = "token"
auth.token = "token" #frps服务认证token,对于的上面的frps配置文件auth.token的值
[[proxies]]
name = "pve-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 1022
上述[[proxies]]代码块的意思是把本地的22端口,通过公网IP的1022端口进行转发。说明白一点就是通过公网的1022端口即可访问内网的本机的22端口。
注意:这个1022端口需要在VPS的防火墙上进行放通。
配置客户端systemd管理frpc,执行下面的命令创建frpc.service文件。
vim /etc/systemd/system/frpc.service
并在该文件添加如下内容:
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frpc/frpc -c /usr/local/frp/frpc/frpc.toml
[Install]
WantedBy = multi-user.target
执行下面的命令启用开机自器和启动服务。
systemctl enable frpc && sudo systemctl start frpc
执行下面的命令检查客户端状态是否正常,如果服务异不是active请检查日志。
systemctl status frpc
frpc状态
四、访问管理web
默认看板只监听本地 127.0.0.1 地址,如果你通过内网地址请修改 webServer.addr = "x.x.x.x" 配置字段。
服务端看板
五、总结
通过本文的介绍,相信你已经对FRP有了较为全面的了解。从基本的安装配置到高级功能的使用,FRP都能满足你不同场景下的内网穿透需求。如果你正在寻找一款高效、易用的内网穿透工具,FRP无疑是一个非常不错的选择。赶快动手试试吧,让你的远程访问不再受限!