视频加载失败

FRP跑不满宽带

1300 字
7 分钟
FRP跑不满宽带
FRP跑不满宽带

第1步:初始测速 – 确认带宽天花板#

  • 操作:在云服务器上执行 speedtest-cli
  • 结果:Download: 18.90 Mbit/s, Upload: 15.80 Mbit/s
  • 结论:云服务器带宽就是 20M 档位,物理下载上限约 2.36 MB/s。这是后续所有优化的绝对天花板。

第2步:本地宽带测速 – 排除本地上传瓶颈#

  • 操作:在本地电脑执行 speedtest-cli
  • 结果:Download: 59.44 Mbit/s, Upload: 42.56 Mbit/s, 延迟 322.23 ms(连接到菲律宾测速节点)
  • 结论:本地上传远高于服务器下载,因此瓶颈不在本地上行;但延迟极高(322ms),怀疑本地到服务器线路可能绕路。

第3步:澄清服务器位置,排除测速节点误导#

  • 讨论:指出服务器实际在香港,测速节点在菲律宾,所以延迟 322ms 不代表真实路径。
  • 行动:建议用 ping 或 tcping 测试真实延迟,但 ping 不通(服务器禁ICMP)。

第4步:用 nc 测试真实延迟#

  • 操作:在本地执行 time nc -zv -w2 38.244.14.16 22
  • 结果:real 0m0.175s → 175ms
  • 结论:大陆到香港并非直连,延迟高达 175ms,属于绕路(大概率经美日)。高延迟会严重影响 TCP 效率,必须启用 BBR。

第5步:开启 BBR 加速(服务器端)#

  • 操作:在云服务器依次执行:
    Terminal window
    echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    sysctl -p
    lsmod | grep bbr
  • 结果:tcp_bbr 出现,BBR 已生效。
  • 作用:提升高延迟下 TCP 吞吐量,后续所有速度改善的基础。

第6步:第一次下载测试 – 发现速度极低#

  • 操作:本地 wget 下载云服务器 5244 端口的文件(实际是 Alist 挂载的夸克网盘资源)
  • 速度:仅 182 KB/s (≈1.45 Mbps)
  • 疑惑:按理说 BBR 生效后应明显提速,但实际没变化。

第7步:识别 Alist 为本地服务,分析环形路径#

  • 信息澄清:Alist 运行在树莓派(本地),通过 FRP 穿透到云服务器公网。
  • 数据流向:本地 wget → 云服务器(FRP服务端) → FRP隧道返回 → 树莓派(Alist) → 夸克网盘 → 原路返回。
  • 结论:速度受限于“夸克网盘限速”和“FRP隧道效率”双重因素。但用户有夸克会员且直连树莓派能跑满,所以排除夸克限速,问题锁定在 FRP 隧道。

第8步:黄金诊断 – 用 iperf3 剥离 FRP 裸测#

  • 服务器端:iperf3 -s(云服务器)
  • 客户端(本地):iperf3 -c 38.244.14.16 -t 30
  • 结果:带宽 7.89 Mbits/sec (≈0.99 MB/s),峰值 13.1 Mbits/sec
  • 结论:底层 TCP 能跑 8~13 Mbps,但 FRP 只用了不到 1.5 Mbps,说明 FRP 配置不当,而非网络或限速问题。

第9步:针对性优化 FRP 配置(树莓派客户端)#

  • 推测问题:树莓派 CPU 弱,加密/压缩耗能;或缓冲区太小,高延迟下效率低。
  • 操作:在树莓派的 frpc.toml 的 [transport] 中添加:
    tcpMux = true
    poolCount = 10
    bufferSize = 2097152
    同时建议关闭加密压缩(useEncryption = false, useCompression = false,若存在)。
  • 结果:重启 FRP 服务后,服务启动失败(状态 failed)。

第10步:排查配置错误 – 手动运行查看报错#

  • 操作:在树莓派进入 FRP 目录,手动执行 ./frpc -c frpc.toml
  • 报错:json: unknown field "bufferSize"
  • 原因:FRP v0.70.1 的 toml 配置中,bufferSize 不是 [transport] 下的有效字段,应放在代理内部(或不支持)。
  • 修正:移除 bufferSize,只保留 tcpMux 和 poolCount。
  • 最终配置:[transport] 下保留 tcpMux = true poolCount = 10。

第11步:重新启动并测试速度#

  • 操作:修改后手动启动成功,再用 systemctl 启动服务。
  • 再次下载同一个文件:
    Terminal window
    wget http://38.244.14.16:5244/...(同上)
  • 结果:速度 2.28 MB/s (≈18.24 Mbps)
  • 对比:达到云服务器带宽上限(18.90 Mbps)的 96.5%。
  • 结论:问题彻底解决,FRP 隧道已跑满。

✅ 最终结论#

导致速度慢的唯一真凶是 frpc.toml 中错误地放置了 bufferSize 参数,导致 FRP 加载配置失败或回退到默认劣化参数,严重影响了传输效率。移除该无效参数后,配合 tcpMux = true poolCount = 10 和 BBR 加速,内网穿透速度瞬间从 1.45 Mbps 飙升到 18.24 Mbps。


🧰 所有生效的关键措施#

  1. 云服务器开启 BBR(提升高延迟 TCP 效率)
  2. FRP 客户端启用 tcpMux = true poolCount = 10(多路复用,提高单连接利用率)
  3. 清理无效配置项(bufferSize 错误放置导致的性能退化)
  4. 确认 FRP 服务正常启动(通过手动启动排查错误)

📌 最终验证#

  • iperf3 裸跑 7.89 Mbps → 穿透实际 18.24 Mbps(超过裸跑是因为 iperf3 测试受 Ctrl+C 中断影响,实际峰值更高,且 FRP 复用后效率提升)
  • 云服务器测速 18.90 Mbps → 穿透速度 18.24 Mbps → 跑满带宽。

至此,问题已完美解决。任何单独忽略上述某一步,都可能无法定位到最终的配置错误。

【注】clash影响网速的问题解决:

在clash配置文件中开启多路复用
proxy-groups:
- name: Proxies
type: select
# 添加smux 配置
smux:
enabled: true
protocol: h2mux
max-streams: 32
proxies:
- 🇭🇰 Hong Kong | 01
- 🇭🇰 Hong Kong | 02
- 🇭🇰 Hong Kong | 03
- 🇭🇰 Hong Kong | 04

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

FRP跑不满宽带
https://chachaprj.top/posts/frp跑不满宽带/
作者
ChaCha
发布于
2026-10-07
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
ChaCha
Pain Equals Gain
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
15
分类
7
标签
19
总字数
21,598
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录