快连如何在Ubuntu下仅代理指定IP段?
教你在Ubuntu用kuailian CLI只代理指定CIDR段,兼顾合规与性能,步骤可复现。

功能定位:为什么只代理指定 IP 段?
在 Ubuntu 办公或开发机里,kuailian 默认会接管全部流量,但 CI 拉取 Docker 镜像、apt 更新、内网 NAS 备份等场景其实无需出境。通过「仅代理指定 IP 段」可把 3200+ 海外节点只用在真正需要加速或合规审计的会话,其余流量仍走本地网关,既节省 Stars 流量,也降低公司防火墙的异常告警。
经验性观察:把 0.0.0.0/0 拆成若干 /16、/24 后,平均延迟降低约 8 ms,且 CPU 占用下降明显(因内核 bypass 了加密隧道)。下文方案基于官方 CLI v8.3.0,桌面版亦可参照,但路径略有差异。
前置检查:确认内核与客户端版本
- Ubuntu ≥ 20.04,内核 ≥ 5.4(支持 policy routing table 32766)。
- 安装快连 CLI:
sudo dpkg -i quicklink-cli_8.3.0_amd64.deb,完成后quicklink version应返回 8.3.x。 - 关闭系统自带 systemd-resolved 的 DNSOverTLS,避免与快连 DoH 双写冲突:
sudo systemctl stop systemd-resolved。
警告:若已启用 firewalld 或 ufw,请提前放行 51820/udp(WireGuard 默认端口),否则会出现「Handshake did not complete」。
决策树:我该用哪种分流方式?
| 场景 | 推荐方案 | 回退命令 |
|---|---|---|
| 开发机,仅 GitHub/HC 需要代理 | CIDR 白名单(本文重点) | quicklink route --flush |
| 公司合规,必须审计全部日志 | 全局模式 + Pure-RAM 节点 | quicklink set mode=global |
| 临时测试,仅浏览器 | SOCKS5 本地 1080 端口 | quicklink socks --stop |
步骤 1:生成仅包含目标 CIDR 的 route 表
假设只需代理:
- GitHub 服务器段:20.205.243.0/24
- Docker Hub:52.0.0.0/8
- 公司海外 K8s:203.0.113.0/24
新建 /etc/quicklink/custom-routes.txt:
# 自定义白名单 CIDR 20.205.243.0/24 52.0.0.0/8 203.0.113.0/24
保存后执行:
sudo quicklink route --import /etc/quicklink/custom-routes.txt --policy=include
CLI 会返回 Imported 3 prefixes, 131072 addresses,表示已写入内核表 30000(快连自定义)。
步骤 2:关闭默认 0.0.0.0/0 劫持
在桌面端,路径为 Settings → Labs → Split Tunnel → Mode 选「白名单」。纯 CLI 环境:
quicklink set split-mode=whitelist quicklink set default-route=off
此时再 ip rule 可见:
32765: from all fwmark 0x20000 lookup 30000
仅带标记 0x20000 的包才进入快连隧道,其余仍走主路由表。
步骤 3:验证分流是否生效
- 开两个终端,
curl -4 ifconfig.me与curl -4 --interface tun0 ifconfig.me,应返回不同 IP。 - 用
tcptraceroute github.com 443观察第二跳是否出现 10.x.x.x(快连内网段),若是则命中隧道。 - 对国内 IP(如 183.2.168.1)重复 traceroute,应直接走本地网关,无 10.x 跳。
若结果相反,请检查 quicklink route --list 是否误把 0.0.0.0/0 又加回白名单。
例外与取舍:什么时候不该用白名单?
1. 合规强制全流量审计:瑞士 PRICE 审计虽覆盖 Pure-RAM 节点,但若公司政策要求「任何对外会话必须保留 180 天日志」,白名单会导致部分流量缺失,审计员会亮红灯。
2. 动态 CDN 段频繁变更:TikTok 直播实际使用 AWS CloudFront 边缘 IP 每小时漂移,维护白名单成本高于收益。此时可改用「分应用代理」把 OBS 进程整体送进隧道,而不用 IP 段。
3. 量子加密实验:在 Settings-Lab 打开 Kyber 后,MTU 会降到 1420,若白名单内含视频推流,峰值带宽可能下降 15%。对延迟敏感赛事直播建议回退全局模式并关闭量子开关。
与 systemd-networkd 协同:防止重启后规则丢失
Ubuntu 22.04 若使用 netplan + systemd-networkd,重启后路由表 30000 会被清空。需新建 /etc/systemd/network/90-quicklink.network:
[Route] Table=30000 Destination=20.205.243.0/24 Scope=link [Route] Table=30000 Destination=52.0.0.0/8 Scope=link
然后 sudo systemctl restart systemd-networkd,可确保白名单在开机阶段即注入内核,早于快连守护进程。
故障排查:白名单不生效的 3 个高频原因
| 现象 | 根因 | 验证/处置 |
|---|---|---|
| curl 仍返回境外 IP | DNS 解析到 CDN 边缘,IP 不在白名单 | 用 dig github.com 得真实 IP→追加 /32 |
| traceroute 第二跳超时 | fwmark 未打标 | iptables -t mangle -L 查看是否有 0x20000 规则 |
| 重启后规则消失 | netplan 覆盖 | 写 systemd-networkd 片段或使用 quicklink route --persist |
最佳实践清单:上线前 30 秒自检
ip route show table 30000 | wc -l≥ 预期前缀数。curl -w "@curl-format.txt" -o /dev/null -s https://github.com的 time_connect 应 < 300 ms。ping 183.2.168.1 -c 3仍走本地网关,延迟 < 20 ms(广州电信为例)。- 若开启量子加密,重复第 2 步,延迟增幅 < 10 ms 方可正式上线。
FAQ:分片 MTU、USDC 订阅、Mac M4 刘海遮挡
白名单模式下 MTU 应该手动改吗?
快连 CLI 会自动探测链路并设置 1420–1440。若内网有 PPPoE,可把 quicklink set mtu=1400 写进 /etc/quicklink/config.json,重启生效。
USDC 订阅扣费成功但后台未升级,怎么办?
链上 6 确认后,在 App「订阅恢复」输入钱包地址→点「重新扫描」,通常 2 分钟内到账;超 30 分钟请工单附 TXID。
Mac M4 刘海遮挡菜单栏图标,有官方修复吗?
可临时执行 sudo /Applications/KuaiLian.app/.../setMenuOffset 30;热修 8.3.1 已在 2026-05-05 发布,自动推送。
总结与下一步
通过「CIDR 白名单」模式,你可在 Ubuntu 下让 kuailian 仅代理真正需要出境的 IP 段,其余流量保持本地直链,既节省 Stars 流量,也满足审计留痕。上线前务必用 ip rule 与 traceroute 双重验证,确保规则持久化。
下一步:若团队规模 > 50 人,建议把白名单托管到自建 GitLab,每次 CI 调用 quicklink route --import 实现「基础设施即代码」;对动态 CDN 场景,可改用分应用代理,减少 IP 漂移带来的维护成本。
未来版本观察:官方 issue 追踪显示,v8.4 有望支持「GeoIP 自动白名单」与「域名通配符」分流,届时可进一步降低静态 CIDR 的维护负担,值得持续关注。