第一部分:遇到的问题
原始症状:动画种子 BT 几乎不动(挂一天下一集)
逐层排查后的完整网络画像:
| 项目 | 状态 | 证据 |
|---|---|---|
| 国内带宽 (v4/v6) | ✅ 极好(423/329 Mbps) | speedtest 实测 |
| v4 入站 | ❌ 双重 NAT(路由器→校园内网→移动 CGN) | tracert |
| 出方向 TCP 端口 | ✅ 全放 | portquiz 全端口探测 |
| 国际 TCP | ❌ 拥塞(0–5 MB/s) | 海外 HTTP 对照实测 |
| v4 国内 UDP 知名端口 53/123/853/3478 | ✅ 通 | DNS/NTP/DoQ/STUN 实测 |
| v4 国内 UDP 高端口(6881+ 等) | ❌ 全封 | 50 个活 DHT 节点 0/50 应答(双轮复测+对照组) |
| v4 国际 UDP | ❌ 53/123 通,其余全灭 | 8.8.8.8 whoami 实测 + STUN 超时 |
| v6 国内 UDP 高端口 | ❌ 全封 | 33 个教育网 peer 0 应答 + qB 自身 v6 表 43→18 衰减 |
| v6 TCP | ✅ 通(教育网公网 v6,PT 满速) | PT 实测 |
| DNS | ⚠️ 曾双重污染 | 路由器劫持(已修)+ GFW 级污染(你真能修吗我请问) |
为什么 BT 下不动,三个环节全断:
- 找不到 peer:DHT 引导域名被 DNS 污染 + UDP tracker 全超时 + DHT 协议本身死于 UDP 高端口封禁
- 连不上 peer:双重 NAT 无入站,公网 swarm 里大多数 peer 也在 NAT 后
- 连上也传不动:幸存 peer 全在海外,走 0–5 MB/s 的拥塞国际出口
第二部分:踩过的所有坑
- 最开始以为是「UDP 全封」:最初只测了海外 UDP(全灭)就下了全封结论;后实测国内 STUN 才修正为「国内通海外死」;最后发现可能是白名单
- NTP 单次超时误判:第一次测 ntp.aliyun.com:123 超时,差点把 123 也划进黑名单
- qB 的 DHT 不应答 127.0.0.1:自检 KRPC 打 loopback 全超时,一度怀疑探测代码坏了;改打本机 LAN IP 秒回,,,libtorrent 不理来自 loopback 的查询
- BT_backup 里的 .torrent 没有 announce:磁链添加的种子,备份文件只有 info 元数据,tracker 信息在 qB 进程里,改用 WebUI API 的
/torrents/trackers 拿。
- 做种+双重 NAT = peer 越来越少:文件完整意味着只有「有公网 IP 的下载者」值得连你,入站又没有,peer 自然枯竭。
第三部分:完整解决方案
解决方案
WireGuard 挂 UDP 123(选定)直接打隧道到vps上面帮着找dht节点 白名单端口过墙,原生 UDP 承载 DHT 零协议开销、NTP 流量特征低调
最终架构
qB DHT (UDP, 源端口固定 = 监听端口是qbee里面的自己设置的)
→ QWRT 路由器: iptables mangle PREROUTING 打标记 0x66
→ ip rule fwmark 0x66 → 路由表 100 → dev wg0
→ WireGuard 隧道 (endpoint vps的ip, UDP 123, keepalive 25s)
→ VPS NetNat → 全球 DHT
← 回包: 双层 NAT 状态回译,原路回家
其他一切流量 (PT / BT 数据 / 网页 / 游戏) → 校园网直连,满速
落地三步
** VPS**
- 停 W32Time → msiexec 静默装 WG →
生成两对密钥 → `C:\wg-server\wg0.conf`(ListenPort 123)→ 隧道服务 →
`Set-NetIPInterface -Forwarding` + `IPEnableRouter` + `New-NetNat WGNAT`
- 云安全组放行 UDP 123(入方向)
- 自检:`wg show wg0` 有握手、`netstat -ano -p udp` 见 123 监听
路由器
# WG 接口(uci)
network.wg0: proto=wireguard, private_key=..., addresses=10.66.0.2/32, mtu=1420
peer: public_key=VPS公钥, endpoint=vpsip, allowed_ips=0.0.0.0/0,
persistent_keepalive=25, route_allowed_ips=0 # 关键:不装默认路由
network.wgroute: 10.66.0.0/24 via wg0 # 仅隧道段,便于诊断
# wg0 加入 wan 防火墙区域(masq,双层 NAT)
# 策略路由 /root/dht-pbr.sh:
iptables -t mangle -A PREROUTING -s 电脑ip -p udp --sport qbee端口 -j MARK --set-mark 0x66
ip rule add fwmark 0x66 priority 100 table 100
ip route replace default dev wg0 table 100
# 持久化:/etc/rc.local + /etc/firewall.user 各引用一次 dht-pbr.sh
# DHCP 静态绑定 desktop-pc → 电脑ip;dropbear 收敛仅 LAN
** qBee(电脑)**
监听端口固定,关闭「随机端口」
##希望有用校园网下载不了bt的各位小登老登都能愉快看动画下资源,,,