网络配置TUN设置网卡命名持久化

快连Linux端如何手动指定TUN网卡名称并持久生效?

快连技术团队
快连Linux端如何手动指定TUN网卡名称, 快连TUN网卡名称持久生效, 快连Linux客户端TUN接口重命名, 快连TUN网卡重启后名称恢复怎么办, 快连Linux如何固定虚拟网卡名, TUN网卡名称持久化配置方法, 快连多实例TUN命名冲突解决

功能定位与版本脉络

在快连 privacy tool(Kuailian privacy tool)的 Linux 客户端里,TUN 网卡名称默认由内核按 tunX 顺序分配。对于需要固定防火墙规则、流量统计或容器侧用网卡名做链式代理的场景,手动指定 TUN 网卡名称并持久生效就成了刚需。自 2025 年 12 月引入 --tun-name 参数后,官方在 2026 年 3 月的 v6.3.0 中把该能力写进 systemd 模板,至此「一次配置,重启不丢」才彻底落地。

功能定位与版本脉络
功能定位与版本脉络

最短可达路径:临时生效

命令行快速指定

在终端直接启动快连守护进程,可附加 --tun-name 参数:

sudo /opt/kuailian/bin/kuailian-daemon --tun-name privacy tool0 --config /etc/kuailian/daemon.json

此时内核会创建 privacy tool0 而非默认的 tun0。该方式适合「调试完即走」,机器重启或守护进程被系统服务重新拉起后,名称又会回到默认池。

持久化方案:systemd 模板

1. 确认安装路径

截至当前的最新版本,快连的 systemd 单元文件位于 /usr/lib/systemd/system/[email protected](某些发行版可能在 /lib/ 下,请以实际为准)。

2. 创建实例覆盖

systemd 模板允许「一文件多实例」。在 /etc/systemd/system/ 建立同名目录并写入:

sudo mkdir -p /etc/systemd/system/[email protected]
cat <<'EOF' | sudo tee /etc/systemd/system/[email protected]/tun-name.conf
[Service]
ExecStart=
ExecStart=/opt/kuailian/bin/kuailian-daemon --tun-name %i --config /etc/kuailian/daemon.json
EOF

解释:第一行 ExecStart= 用于清空父级定义,第二行把实例名 %i 直接映射为 TUN 名,例如 privacy tool0

3. 启用实例

sudo systemctl daemon-reload
sudo systemctl enable --now kuailian-daemon@privacy tool0.service

重启后,systemd 会始终拉起 privacy tool0,名称固定不变。

桌面端差异:GUI 无法直接填

快连 Linux GUI(基于 Qt 的 kuailian-desktop)目前未暴露 TUN 名称输入框。若你依赖图形界面,需要:

  1. 先退出 GUI(防止它自动拉起守护进程);
  2. 按上文配置 systemd 实例;
  3. 再启动 GUI,取消「随软件启动内核」选项,仅作为前端展示。

这样既能保持名称固定,又不损失桌面提醒与节点切换便利。

例外与副作用

1. 名称冲突

若系统已有同名的 privacy tool0(例如 Openprivacy tool 残留),快连会启动失败并报 File exists。经验性观察:在裸机与 LXC 容器混布环境,冲突概率明显升高。缓解:先用 ip link delete privacy tool0 清理,或选用更独特的 ku0kl0 前缀。

2. 防火墙规则漂移

很多用户把 iptables -A FORWARD -i tun0 -j ACCEPT 写进 /etc/rc.local,一旦 TUN 名不再是 tun0 就会「断网」。解决:把规则里的接口名换成你指定的 privacy tool0,或使用 iptables -m physdev --physdev-in privacy tool0 做匹配。

2. 防火墙规则漂移
2. 防火墙规则漂移

3. NetworkManager 重新枚举

在桌面版 Ubuntu 24.04 上,NetworkManager 的 /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf 默认把 tun* 视为 unmanaged。若你改成 privacy tool0,需要同步把:

[keyfile]
unmanaged-devices=interface-name:privacy tool*

写进 /etc/NetworkManager/conf.d/99-kuailian.conf,否则 NM 可能反复尝试接管,导致路由被冲掉。

验证与回退

1. 验证固定生效

  1. 重启机器
  2. 执行 ip link show | grep privacy tool0,确认接口存在且处于 UP
  3. 执行 curl -4 ip.sb,出口 IP 变为快连节点即代表流量已进隧道

2. 回退到默认命名

若发现副作用,可:

  • 停止实例:sudo systemctl stop kuailian-daemon@privacy tool0.service
  • 禁用实例:sudo systemctl disable kuailian-daemon@privacy tool0.service
  • 删除覆盖目录:sudo rm -rf /etc/systemd/system/[email protected]
  • 重新加载并启动默认:sudo systemctl daemon-reload && sudo systemctl start [email protected]

整个过程无需重装软件,配置即回滚。

适用/不适用场景清单

场景 建议 原因
家用 NAS 做策略路由 强烈固定名称 iptables/ip rule 按接口名分流,重启后不能变
多人共享开发机 谨慎使用 若他人也固定同名,谁先启动谁占用,后启动失败
K8s 宿主机 不推荐 CNI 插件会批量创建 tun/tap,名称易撞车
合规审计要求接口固定 必须使用 审计脚本按 privacy tool0 抓流量,名称漂移即漏审

最佳实践 5 条

  1. 命名加前缀 kl*,降低与 Openprivacy tool、Tailscale 等冲突概率。
  2. 把固定名称写进 systemd 模板而非 /etc/rc.local,确保重启、崩溃、升级都能一致。
  3. 在防火墙规则里用 interface-name 匹配,而非硬写 tun0,方便以后改名无需改规则。
  4. 升级快连前,先 systemctl disable 实例,防止新 RPM/deb 把二进制路径换掉导致启动失败。
  5. 把「名称固定」纳入 CI 验收:脚本里 ip link | grep -q $expected 不通过即报警。

故障排查速查表

现象:systemctl 启动失败,日志报 "TUNSETIFF: File exists"

原因:接口名已被占用 → 验证 ip link → 用 ip link delete <name> 清理或改名。

现象:固定名称成功,但 curl 仍走原生出口

原因:默认路由未切换 → 验证 ip route | default → 检查 Kill-Switch 是否把 UDP 443 也拦了,导致守护进程无法握手。

FAQ(使用 FAQPage Schema)

能否在 CLI 里一次指定多个 TUN 名称?

快连当前版本仅支持单 TUN,若需多隧道可在不同 systemd 实例里分别指定不同名称,再手动做策略路由。

升级 RPM 后 systemd 覆盖会丢失吗?

/etc/systemd/system/ 下的 .d 目录属于管理员配置,包管理器不会覆盖;但二进制路径若变更,需同步更新 ExecStart。

名称固定后还能用 Split-App 分流吗?

可以。分流规则由守护进程在 socket 层标记,与 TUN 接口名无关,固定名称仅影响系统层路由和防火墙。

总结与下一步

通过 systemd 模板把 --tun-name 参数固化,是目前快连 Linux 端「手动指定 TUN 网卡名称并持久生效」最简洁、可回退、可审计的方案。若你仅需临时调试,直接命令行加参数即可;一旦涉及防火墙、流量计费或合规审计,就应立即采用模板化固定,并在 CI 里对接口名做断言。下一步,可把命名规范写进团队运维手册,再辅以自动化测试,确保任何版本升级都不会让「名字」成为故障导火索。

关键词:快连Linux端如何手动指定TUN网卡名称快连TUN网卡名称持久生效快连Linux客户端TUN接口重命名快连TUN网卡重启后名称恢复怎么办快连Linux如何固定虚拟网卡名TUN网卡名称持久化配置方法快连多实例TUN命名冲突解决