1. 项目简介
FRP 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
2. 为什么使用 FRP
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。
采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。
代理组间的负载均衡。
端口复用,多个服务通过同一个服务端端口暴露。
支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。
多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。
服务端和客户端 UI 页面。
3. 项目地址
GITHUB地址:https://github.com/fatedier/frp/releases/tag/v0.58.0
4. 使用教程
4.1. 下载安装
Debain系统下载:frp_0.58.0_linux_amd64.tar.gz 文件
上传到Linux中的opt目录下进行解压
解压命令:tar -zxvf 文件名.tar.gz
修改文件夹名称,要不然太长:mv frp_0.58.0_linux_amd64 frp
4.2. 服务端配置
服务端进行配资,修改frp文件夹内的frps.toml文件,内容如下
bindPort = 7000 #frp服务端口,确保服务器开启该端口(可以相同也可以自行更改,但是服务端一定要和客服端填写的端口号一致)
vhostHTTPPort = 5000 #frp http协议服务端口,确保服务器开启该端口(可以相同也可以自行更改,但是服务端一定要和客服端填写的端口号一致)
vhostHTTPSPort = 5001 #frp https协议服务端口,确保服务器开启该端口(可以相同也可以自行更改,但是服务端一定要和客服端填写的端口号一致)
subdomainHost = "xxx.com" #子域名,如果你的域名是google,就填写google.com,如果配置这个,需要到服务器配置泛解析(也就是二级域名的名字填写:*),否则就不要填写
auth.token = "token " #访问的token,与下面的客户端一定要相同,最好设置复杂的字符
webServer.addr = "0.0.0.0" #这个必须填写,官方文档介绍没有填写,很容易以为不用写,如果不写讲无法访问dashboard
webServer.port = 6443 #dashboard的服务访问端口,配置好之后,可以通过服务器ip+端口的方式打开dashboard,比如服务器地址是48.120.188.32,则可以通过48.120.188.32:6443(可以相同也可以自行更改,但是服务端一定要和客服端填写的端口号一致)
webServer.user = "xxx" #dashboard的服务的账号
webServer.password = "xxx" #dashboard的服务的密码
log.to = "./frps.log"
log.level = "info"
log.maxDays = 3
log.disablePrintColor = false
4.3. 客户端配置
服务端进行配资,修改frp文件夹内的frpc.toml文件,内容如下
serverAddr = "127.0.0.1" #服务器地址
serverPort = 7000 #frp服务端口,确保服务器开启该端口,与服务器端口bindPort相同值
auth.method = "token"
auth.token = "xxxxxx" #token值,一定要与服务端相同
#配置第一个web服务
[[proxies]]
name = "test-tcp"
type = "http"
localIP = "127.0.0.1"
localPort = 8003 #本地web服务发布的端口
remotePort = 8090 #服务器配置的vhostHTTPPort端口值
#customDomains = ["mac.xxx.com"] #服务器如果没有配置subdomainHost,则要配置这个值,下面的subdomain则删除。访问时,直接输入mac.xxx.com:8090访问本地8003的web服务
subdomain = "mac" #服务端配置了subdomainHost,就必须配置这个,代表二级域名的名字,访问时,直接输入mac.xxx.com:8090访问本地8003的web服务
#配置第二个web服务
[[proxies]]
name = "game-tcp"
type = "http"
localIP = "127.0.0.1"
localPort = 8004 #本地web服务发布的端口
remotePort = 8090 #服务器配置的vhostHTTPPort端口值
#customDomains = ["game.xxx.com"] #服务器如果没有配置subdomainHost,则要配置这个值,下面的subdomain则删除。访问时,直接输入game.xxx.com:8090访问本地8003的web服务
subdomain = "game" #服务端配置了subdomainHost,就必须配置这个,代表二级域名的名字,访问时,直接输入game.xxx.com:8090访问本地8003的web服务
#配置mac远程桌面访问
[[proxies]]
name = "mac-desk"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5900 #mac的远程默认端口是5900
remotePort = 5900 #确保服务器开启该端口
#subdomain = "imac" #如果配置域名,则可以通过域名的方式访问:vnc://imac.xxx.com:5900,否则直接用服务器ip+端口访问:vnc://48.120.188.32::5900
#配置windows远程桌面访问
[[proxies]]
name = "mac-desk"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389 #windows的远程默认端口是3389
remotePort = 5901 #确保服务器开启该端口
#subdomain = "windows" #如果配置域名,则可以通过域名的方式访问:windows.xxx.com:5901,否则直接用服务器ip+端口访问:48.120.188.32::5901
4.4. 开机自启配置
安装systemd
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd
创建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/frps -c /opt/frp/frps.toml
[Install]
WantedBy = multi-user.target
4.5. 服务启停命令
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置 frps 开机自启动
sudo systemctl enable frps
# 手动调试时临时启用方法
./frps -c ./frps.toml
评论区