当前位置: 首页 > news >正文

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 配置文件被正确读取
  • 后台运行,无需占用终端
  • 开机自动启动,长期稳定

📝 四、踩坑总结

  1. 权限问题

    • 低端口或系统服务需要 root 权限
    • 解决:使用 sudo 或端口 > 1024
  2. 路径与拼写

    • toml 配置文件路径必须是绝对路径
    • 拼写错误会导致 frpc 回退到默认配置
  3. 多进程冲突

    • 多次执行 nohup 或 systemd 启动可能端口占用
    • 解决:先 pkill frpc 清理进程

🌟 五、最终收获

  • frpc 成功后台运行
  • systemd 自动启动,日志统一管理
  • 避免默认配置回退和权限问题

经验教训

  1. 配置文件路径用绝对路径
  2. 低端口需要 root 权限
  3. 后台运行 + systemd 是长期稳定方案

http://www.lryc.cn/news/621919.html

相关文章:

  • Floyd 判圈算法(龟兔赛跑算法)
  • Linux运维新手的修炼手扎之第29天
  • 【网络】IP总结复盘
  • Claude Opus 4.1深度解析:抢先GPT5发布,AI编程之王主动出击?
  • day31 UDP通信
  • Ansible 学习笔记:变量事实管理、任务控制与文件部署
  • 计算机视觉(opencv)实战四——图片阈值处理cv2.threshold()
  • Android RxJava变换操作符详解
  • 从0开始学习Java+AI知识点总结-15.后端web基础(Maven基础)
  • 使用 PyQt5 构建 Python 人脸采集系统实战指南
  • 16进制pcm数据转py波形脚本
  • 来火山引擎「算子广场」,一键处理多模态数据
  • 标题:移动端安全加固:发散创新,筑牢安全防线引言:随着移动互联网
  • OpenCV Python——VSCode编写第一个OpenCV-Python程序 ,图像读取及翻转cv2.flip(上下、左右、上下左右一起翻转)
  • 【数据结构初阶】--排序(三):冒泡排序、快速排序
  • 有红帽认证证书可以0元置换华为openEuler-HCIA/HCIP认证
  • html抽奖功能
  • 【Twincat3】IO的SCAN 不可选中,SCAN中后扫描不到设备
  • langGraph--2--langServe+langGraph示例
  • 高等数学 8.3 平面及其方程
  • 开发Chrome/Edge插件基本流程
  • 使用 Serverless 架构快速构建基于 Iceberg 的事务型实时数据湖
  • redis6的多线程原理
  • 永磁同步电机控制 第一篇、认识电机
  • 图像生成适配器对比与选择:LoRA、ControlNet、T2I-Adapter 与 IP-Adapter
  • UE UDP通信
  • tun/tap 转发性能优化
  • 记录一下 StarRocks 点查的 Profile Metrics
  • C++结构体详解
  • 局部变量与全局变量的关系及应用