frp踩坑 以及进阶教程
🚀 FRP 客户端(frpc)后台运行及开机自启实践笔记
今天在使用 FRP 做内网穿透时,踩了不少坑 🕳️,最终成功实现了 frpc 后台运行 + 开机自启。整理成博客,方便自己和大家参考。
🛠️ 一、环境说明
- FRP 服务端:已正常运行
- FRP 客户端可执行文件:
/path/to/frpc
- FRPC 配置文件(toml 格式):
/path/to/frpc.toml
(替换成实际路径) - 本地 SSH 服务:确保已启动 🔑
⚠️ 二、遇到的问题与踩坑
1️⃣ frpc 连接不到服务端
启动 frpc 时,日志报错:
connect to server error: dial tcp 127.0.0.1:xxxx: connect: connection refused
login to the server failed
原因分析:
- frpc 无法读取 toml 配置文件,回退到默认配置(连接 127.0.0.1)
- 怀疑是配置文件路径或权限问题
2️⃣ 权限问题
尝试修改配置文件权限:
chmod 644 frpc.toml
仍然报错 ❌
真正原因:
- frpc 需要访问低端口(如 22)或系统服务
- 非 root 用户无法启动
3️⃣ 拼写与路径错误
后台启动时,一度写成:
sudo nohup ./frpc -c frpc.toml &
导致 frpc 读取不到配置文件 ❌
✅ 三、解决方案
1️⃣ 使用 sudo 正确启动
sudo /path/to/frpc -c /path/to/frpc.toml
- 确认 frpc 能正确连接服务端 ✔️
- 权限问题解决 ✅
2️⃣ 临时后台运行
cd /path/to/frpc_directory
sudo nohup /path/to/frpc -c /path/to/frpc.toml > frpc.log 2>&1 &
- 使用
nohup
防止终端关闭杀掉进程 - 日志输出到
frpc.log
📜
3️⃣ 开机自动运行(推荐 systemd)
创建 systemd 服务文件:
sudo nano /etc/systemd/system/frpc.service
内容如下:
[Unit]
Description=FRP Client Service
After=network.target[Service]
Type=simple
ExecStart=/path/to/frpc -c /path/to/frpc.toml
Restart=on-failure
User=root
WorkingDirectory=/path/to/frpc_directory
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=frpc[Install]
WantedBy=multi-user.target
启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl start frpc
sudo systemctl enable frpc
sudo systemctl status frpc
journalctl -u frpc -f # 查看实时日志 🔍
特点:
- 使用绝对路径,确保 toml 配置文件被正确读取
- 后台运行,无需占用终端
- 开机自动启动,长期稳定
📝 四、踩坑总结
-
权限问题
- 低端口或系统服务需要 root 权限
- 解决:使用
sudo
或端口 > 1024
-
路径与拼写
- toml 配置文件路径必须是绝对路径
- 拼写错误会导致 frpc 回退到默认配置
-
多进程冲突
- 多次执行 nohup 或 systemd 启动可能端口占用
- 解决:先
pkill frpc
清理进程
🌟 五、最终收获
- frpc 成功后台运行
- systemd 自动启动,日志统一管理
- 避免默认配置回退和权限问题
✅ 经验教训:
- 配置文件路径用绝对路径
- 低端口需要 root 权限
- 后台运行 + systemd 是长期稳定方案