系统代理2026年4月15日作者: 快连官方团队

快连kuailian如何在Linux下配置系统代理并跳过局域网地址?

系统代理Linux局域网排除路由配置代理设置快连kuailian
快连kuailian Linux 系统代理 设置, 如何排除局域网地址, 快连kuailian 配置 全局代理, Linux 下 快连kuailian 代理 不生效 怎么办, kuailian proxy bypass LAN, 系统代理 与 局域网冲突 解决方案, 快连kuailian 支持哪些 Linux 发行版

功能定位:为什么要在 Linux 下“跳过局域网”

在 Linux 桌面或服务器环境启用快连 kuailian 的系统代理时,默认会把全部流量送进隧道,包括 192.168.0.0/16、10.0.0.0/8 这类 RFC1918 地址。结果 SSH 到内网主机、访问 NAS 管理页、甚至 ping 网关都会绕到远端节点再折返,延迟陡增且产生不必要的审计日志。本文以“合规与数据留存”为主线,给出一条可复现、可审计、可回退的完整路径,让“全局加速”与“本地直通”同时成立。

功能定位:为什么要在 Linux 下“跳过局域网”
功能定位:为什么要在 Linux 下“跳过局域网”

前置条件与版本前提

1. 客户端:快连 kuailian 截至当前的最新版本(10.x 系列)已把“系统代理”模块开源在 GitHub,可直接拉取二进制或自行编译。
2. 系统:Debian 12、Ubuntu 22.04、Fedora 38 及以上,systemd-resolved 或 dnsmasq 均可,NetworkManager 非必须。
3. 权限:需 sudo 写入 /etc/environment、/etc/proxychains.conf 或 iptables/nftables 规则;生产服务器建议先在测试机验证。

方案总览:三条主流实现路线

1. 环境变量 + 桌面级 PAC(最简单)

适用:个人桌面、开发机,GUI 已安装 gnome-control-center 或 kde-settings。
原理:export 标准变量(http_proxy、https_proxy、no_proxy),让 Chrome、Edge、curl 直接识别;同时把 no_proxy 写成“localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8”即可跳过局域网。

2. TUN 模式 + nftables 分流(最干净)

适用:服务器、无头盒子、需要精确审计的场景。
原理:kuailian 自带 --tun 参数创建虚拟网卡,再写 nftables 规则把 RFC1918 流量 return 到原始路由表,其余走 tun0。所有策略落在内核,应用层零感知,便于后续做 netflow/sFlow 留存。

3. proxychains-ng 局部劫持(最灵活)

适用:只想让特定命令(如 git、wget、docker pull)走代理,其余保持默认。
原理:LD_PRELOAD 级动态劫持,配合 proxychains.conf 里的“localnet”段写 CIDR 即可排除内网。

路线 1 实战:GNOME 桌面 90 秒落地

  1. 打开快连 kuailian → 右上角“系统代理”开关 → 选择“手动模式”。
  2. 监听地址默认 127.0.0.1:7890(端口因版本而异,请以实际为准)。
  3. 设置 → Network → Network Proxy → Manual:
    • HTTP Proxy 127.0.0.1 7890
    • HTTPS Proxy 127.0.0.1 7890
    • Ignore Hosts 填写:localhost, 127.0.0.0/8, ::1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
  4. 点击 Apply System-Wide,输入密码;立即生效,无需重启。

验证:终端执行curl -v https://192.168.1.1,应直接 TCP 三次握手,无“Via”头;而curl https://www.google.com出现“proxy-agent: kuailian/10.x”即表明隧道生效。

提示:Ignore Hosts 的语法与 Windows 相同,逗号后必须有空格,否则 GNOME 会静默失败。

路线 2 实战:服务器 TUN + nftables 精确分流

步骤 1:启动 kuailian 并暴露 TUN

sudo kuailian --tun --tun-name tun0 --gateway 198.18.0.1 --dns-hijack

经验性观察:加上 --dns-hijack 可把 53 端口重定向到 kuailian 内置的 K-DNS,防止运营商污染;若本地已有 bind9,请关闭 53 占用或改用 DoH 专用端口。

步骤 2:编写 nftables 规则集

table inet kuailian { set lan { type ipv4_addr; flags interval; elements = { 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } } chain mangle-output { type route hook output priority mangle; policy accept; ip daddr @lan return meta mark set 0x66 } chain mangle-prerouting { type filter hook prerouting priority mangle; policy accept; ip daddr @lan return meta mark set 0x66 } }

解释:先匹配目的地址为内网段时直接 return,不进入隧道路由;其余流量打标 0x66,由 kuailian 的 policy-route 全部接管。

步骤 3:持久化与回退

把上述文件存入 /etc/nftables/kuailian.nft,在 /etc/nftables.conf 里加一行 include \"/etc/nftables/kuailian.nft\",重启 nftables 即可。回退时执行sudo nft delete table inet kuailian,流量立即回到原始默认路由。

路线 3 实战:proxychains-ng 单命令劫持

  1. 安装:sudo apt install proxychains-ng
  2. 编辑 /etc/proxychains.conf,末尾加:
    localnet 127.0.0.0/255.0.0.0
    localnet 192.168.0.0/255.255.0.0
    localnet 172.16.0.0/255.240.0.0
    localnet 10.0.0.0/255.0.0.0
    [ProxyList]
    socks5 127.0.0.1 7890
  3. 使用:proxychains git clone https://github.com/xxx/yyy.git,只有 git 走隧道,访问公司 GitLab 192.168.x.x 时直接直连。

警告:proxychains 对静态编译的 Go 程序无效,因 Go 自带 syscall 不经过 glibc。此时可改用 graftcp 或 redsocks。

例外清单:哪些地址必须额外放行

  • 企业内网 DNS:若公司 DNS 为 10.10.10.53,务必在 no_proxy 或 nftables set 里声明,否则解析记录会出现在 kuailian 的远端日志。
  • Docker 网桥:默认 172.17.0.0/16,与 RFC1918 冲突,需在规则里再细分。
  • VMware / VirtualBox 宿主机:192.168.56.0/24、192.168.122.0/24 常见于 vboxnet0 / virbr0,开发测试环境记得加白。

验证与观测:如何确认“真的没走隧道”

1. 内核计数器

nftables 规则里给 lan 流量 return 后,可用sudo nft list chain inet kuailian mangle-output -a查看 pkts 计数,若访问 192.168.x.x 后对应规则计数增加,说明未进隧道。

1. 内核计数器
1. 内核计数器

2. kuailian 实时日志

客户端加 --log-level debug 会在 stderr 输出每条会话的目的地址,若访问内网 IP 无日志即表明 bypass 成功。

3. sFlow 留存(可选)

在服务器部署 pmacct + sFlow,设置采样率 1:100,把 mark!=0x66 的流量打上标签“tunneled”,后续可用 Grafana 区分合规流量与本地管理流量,满足审计要求。

不适用场景清单

场景风险建议
CI 容器集群频繁创建网桥,CIDR 动态变化用路线 3,仅对需要外网拉包的步骤显式加 proxychains
远程桌面跳板机RDP 192.168.x.x 若漏加白会黑屏nftables 里单独加一条 ip daddr 192.168.0.10 counter return
金融隔离网监管要求“零隧道”直接物理隔离,放弃任何系统代理

最佳实践 10 条检查表

  1. 永远先用ip route get 192.168.x.x确认下一跳,再写规则。
  2. 把 no_proxy 写成小写,部分 Java 应用只认小写。
  3. 服务器场景优先 nftables,桌面场景优先环境变量,CI 场景优先 proxychains。
  4. 任何新网段上线,先在测试机加白,24 h 无投诉再推生产。
  5. 审计日志至少保留 30 天,sFlow 采样率不要高于 1:50,防止磁盘爆。
  6. 升级 kuailian 前,把 nft 规则备份到 /etc/nftables/backup/,升级后 diff 确认语义未变。
  7. 若用 Docker,把 daemon.json 里“bip”改成 172.31.0.0/16,避开常用办公网段。
  8. 对静态编译程序,提前用 ldd 检查是否受 LD_PRELOAD 支持,不行就改用 redsocks。
  9. 开启 kuailian 的 --audit-export 开关,每小时把日志 POST 到内部 SIEM,方便合规抽查。
  10. 最后一条:永远留一条“救命”控制台,物理带外或 iDRAC,防止把自己锁在隧道外。

故障排查速查表

现象最可能原因验证命令处置
SSH 内网卡顿no_proxy 漏写 192.168.0.0/16ssh -v 看 Via 头补环境变量后重开会话
Docker pull 超时proxychains 对静态 docker 无效ldd $(which dockerd)改用 systemd 级 http_proxy
nft 规则不生效优先级被 iptables-legacy 抢占sudo iptables -L 仍有链卸载 iptables-nft 兼容包,重启

FAQ(使用 FAQPage Schema)

为什么 export 了 no_proxy,curl 还是走隧道?

部分发行版把 curl 编译为使用 libproxy,优先读取 /etc/proxychains.conf 而非环境变量。解决:确认 curl -v 出现“Via”头后,再检查 /etc/environment 是否遗漏小写 no_proxy,或临时用 proxychains -q curl 验证。

TUN 模式下如何排除 IPv6 内网?

在 nftables set 里加 type ipv6_addr,元素写 fd00::/8 和 fe80::/10,即可把 IPv6 局域网一并 return。

kuailian 日志会记录我访问的内网 IP 吗?

按照官方无日志声明,隧道内仅保留 30 天内会话元数据用于故障排查;若你本地启用 --audit-export,则内网 bypass 流量不会上传,仅本地 SIEM 可见。

升级后规则消失怎么办?

kuailian 升级不会触碰 /etc/nftables,但内核更新可能重置 nft 表。建议把规则写进 /etc/nftables.conf 并启用 systemd 的 nftables.service,随开机自动加载。

可以在一台机器上同时跑三种路线吗?

可以,但端口与标记要错开。例如:桌面会话用环境变量 7890,CI 任务用 proxychains 1080,服务器后台用 TUN+mark 0x66,只要路由表优先级不冲突即可。

收尾:下一步行动建议

读完本文,你已拥有三条可落地的“跳过局域网”路线和一套可审计的验证方法。建议先在测试机挑一条最顺手的方案跑 24 小时,用上面提供的计数器与日志双重确认无内网流量进隧道后,再推到生产。记得把 nftables 规则或 no_proxy 写进代码仓库,合并请求通过后再上线,让“合规”与“效率”同时可追溯。祝你配置顺利,也欢迎把实测经验贡献回 kuailian 开源仓库,供全球用户复现。