一、环境说明
FRP,全称 Fast Reverse Proxy,是一款高性能、开源的反向代理框架,由 frps 服务端与 frpc 客户端组成,高效实现内网穿透与服务安全暴露。FRP 支持 TCP、UDP、HTTP、HTTPS 等常用协议,也支持 P2P 直连模式。
FRP 开源地址:https://github.com/fatedier/frp
我的环境:
服务端 OS:CentOS 7
客户端 OS:路由器 OpenWRT 固件
拓扑说明:
阿里云服务器作为 frps 服务端,拥有公网 IP
家庭路由器作为 frpc 客户端,通过 frp 将内网(Web 面板 8083、SSH 6000)暴露到公网。
二、frps 服务端部署
1、下载与安装
# 进入常用软件目录
cd /opt
# 下载 frp(以 v0.48.0 为例,可去 GitHub 查看最新版本)
wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
# 解压
tar -xzf frp_0.48.0_linux_amd64.tar.gz
# 进入目录
cd frp_0.48.0_linux_amd64
解压后目录中主要关注两个文件:
frps:服务端可执行文件
frps.ini:服务端配置文件
2、配置文件详解(frps.ini)
[common]
# frps 服务监听端口,frpc 需要连接此端口
bind_port = 7000
# 是否启用 TLS 加密
tls_enable = false
# 认证 token,客户端必须配置相同 token 才能连接
token = 9July2026@gavin
# ===== 日志配置 =====
# 日志文件存放路径
log_file = /opt/frp_0.48.0_linux_amd64/frps.log
# 日志保留天数
log_max_days = 3
# 日志级别:trace, debug, info, warn, error
log_level = trace配置要点:
bind_port:服务端核心端口,需要在防火墙和安全组中放行
token:相当于密码,服务端和客户端必须一致
log_level = trace:可输出最详细的日志,便于排查问题,生产环境建议改为 info。默认 info
log_max_days:默认 3
log_file:默认在 frps 程序所在目录下生成 frps.log 文件
3、启动与开机自启
方式一:临时手动启动(测试用)
cd /opt/frp_0.48.0_linux_amd64
# 前台启动(观察日志,Ctrl+C 停止)
./frps -c ./frps.ini
# 后台启动(nohup)
nohup ./frps -c ./frps.ini &说明:配置指定了日志位置,nohup 无需再指定。
方式二:systemd 服务管理(推荐)
创建服务文件:
vim /etc/systemd/system/frps.service写入以下内容:
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp_0.48.0_linux_amd64/frps -c /opt/frp_0.48.0_linux_amd64/frps.ini
WorkingDirectory=/opt/frp_0.48.0_linux_amd64
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target启动并设置开机自启:
systemctl daemon-reload
systemctl start frps
systemctl enable frps
systemctl status frps常用管理命令:
systemctl start frps # 启动
systemctl stop frps # 停止
systemctl restart frps # 重启
systemctl status frps # 查看状态
systemctl enable frps # 设置开机自启三、frpc 客户端部署
1、安装
说明:frp 服务端和客户端使用同一个压缩包,解压后根据实际角色保留对应的可执行文件和配置文件即可。
# 服务端部署:删除客户端相关文件
rm -f frpc frpc.ini
# 客户端部署:删除服务端相关文件
rm -f frps frps.ini2、配置文件(frpc.ini)
[common]
# 服务端公网 IP 和端口
server_addr = <你的云服务器公网IP>
server_port = 7000
# 与服务端一致的 token
token = 9July2026@gavin
# 连接失败后保持运行并持续重试
login_fail_exit = false
# 日志配置
log_file = /opt/frp_0.48.0_linux_amd64/frpc.log
log_level = info
log_max_days = 3
# ===== 代理配置 =====
# 代理路由器的 Web 管理面板
[web-router]
type = tcp
local_ip = 192.168.1.1
local_port = 80
remote_port = 8083
# 代理路由器的 SSH 终端
[ssh-router]
type = tcp
local_ip = 192.168.1.1
local_port = 22
remote_port = 6000配置要点:
server_addr:填写 frps 服务器的公网 IP
server_port:必须与 frps 的 bind_port 一致
local_ip:要代理的内网服务 IP(路由器网关通常是 192.168.1.1)
remote_port:外网访问时使用的端口,需在服务端防火墙放行
我的 frpc 和反代端口都是同一机器(路由器),local_ip 也可以直接填 127.0.0.1。
3、启动与保活配置
方式一:临时启动
cd /opt/frp_0.48.0_linux_amd64
./frpc -c ./frpc.ini
# 后台启动(nohup)
nohup ./frps -c ./frps.ini &方式二:systemd 服务(推荐)
与服务端类似,创建 /etc/systemd/system/frpc.service:
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp_0.48.0_linux_amd64/frpc -c /opt/frp_0.48.0_linux_amd64/frpc.ini
WorkingDirectory=/opt/frp_0.48.0_linux_amd64
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target四、防火墙与安全组配置
1、iptables
放行 frps 服务端端口、反代端口
# 放行端口
iptables -I INPUT -p tcp --dport 7000 -j ACCEPT
iptables -I INPUT -p tcp --dport 8083 -j ACCEPT
iptables -I INPUT -p tcp --dport 6000 -j ACCEPT2、云服务商安全组配置
以阿里云为例,配置位置位于:控制台 → 安全组 → 入方向规则。
依次放行上述端口。
五、常用命令速查
1、进程、端口、日志管理
# 一、进程
# 查看 frps 进程
ps aux | grep frps | grep -v grep
# 查看 frps 工作目录
pwdx <PID>
ls -l /proc/<PID>/cwd
# 进入工作目录
cd /proc/21709/cwd
# 杀掉 frps 进程
kill <PID>
# 二、 端口
# 查看端口监听状态
netstat -tulpn | grep -E "7000|8083|6000"
# 三、日志
# 实时查看日志
tail -f /opt/frp_0.48.0_linux_amd64/frps.log2、连通性测试
# 从外部测试端口是否通
telnet <公网IP> 7000
telnet <公网IP> 8083
telnet <公网IP> 6000
# 使用 curl 测试 HTTP 代理
curl -v http://<公网IP>:8083
# 测试 SSH 代理
ssh -p 6000 root@<公网IP>六、常见问题
Q1:怎么确认 frpc 已经成功连接到 frps?
在服务端查看日志:
tail -f /opt/frp_0.48.0_linux_amd64/frps.log看到类似日志表示客户端已连接:
[I] [service.go:...] client login info: ip <客户端IP> version <版本>
[I] [proxy.go:...] [tcp] [web-router] proxy start successQ2:frp 包含 frps 和 frpc,我需要 Linux 的 frps 和 Windows 的 frpc,可以吗?
frp 采用 Go 语言编写,天生支持跨平台。分别下载不同操作系统的安装包安装即可。
七、扩展:Windows 11 部署 frpc 客户端
todo