实战:构建、调参与组网排障

专栏:VNT 2.0 组网源码 · 第 11 / 11 篇
VNT实战排障

:::info 学习目标 完成本篇后你能够:从源码构建三种载体;按场景选择参数组合;用系统化清单排查组网故障。 前置:第 2~10 篇完成。预计时长:90 分钟(含构建)。 :::

:::note 本章术语速查(新手建议先读)

  • lto / strip:Rust 发布优化——链接期优化与去掉调试符号,产物更小更快。
  • feature:Rust 的可选功能开关,按需编译出不同形态的二进制。
  • QoS:运营商对某些流量限速/降级的行为。
  • wintun:Windows 上的 TUN 驱动(VNT 自带 DLL 并启动时释放)。 :::

从源码构建

git clone -b v2 https://github.com/vnt-dev/vnt.git
cd vnt

# CLI + ctrl(最轻)
cargo build --release -p vnt2 --features vnt-ipc
# 产物: target/release/vnt2_cli / vnt2_ctrl

# Web 管理面(需要 pnpm 构建前端)
pnpm install && pnpm build:web
cargo build --release -p vnt2 --features vnt-web
# 产物: target/release/vnt2_web(Vue3 已内嵌)

# 桌面端(Tauri,需要系统依赖)
pnpm build:desktop

release profile 是体积导向的(opt-level="z" + lto + strip)——对应 2.0 新特性里的”减少程序体积”。

参数速查与选型

参数默认何时改
-s <地址>无(必填,可重复配多台)服务端协议前缀:quic:// 握手快 / tcp:// 兼容 / wss:// 过墙 / dynamic:// 免改配置搬家
-k <编号>无(必填;兼容 v1 的 token 别名)同组网设备保持一致
-p <密码>无(强烈建议)设置后端到端加密、服务端零知识
--device-modetuntap 要二层广播;no 无管理员权限只做出口
--rtx关丢包严重、跑 TCP 业务(QUIC 可靠通道)
--fec关实时性敏感(游戏/语音)且 UDP 丢包
-z --compress关带宽紧张、流量大(LZ4,≥256B 才生效)
--mtu1380一般不动;PPPoE 等特殊网络试 1400/1480
--ip服务端分配固定虚拟 IP(配 ip_variable 语义)
--input / --output空跨子网互访(网关场景)
--cert-modeskip自建服务端可用 finger:<sha256> 钉死证书
--ctrl-port112330 = 禁用 IPC 查询

组网排障清单

按”从下到上”的顺序排查:

图表(vnt-practice.md)

高频问题速查:

症状最可能原因处置
注册循环失败服务端地址/协议前缀错、网络不通先 ping/探端口;换传输前缀
ping 不通但列表在线对端防火墙拦 ICMP用真实业务(SSH/HTTP)验证
直连失败总走中继双侧对称 NAT正常,检查中继质量;或加开 rtx
慢丢包/绕路开 --fec(容忍丢包)或 --rtx(可靠);查 route 的 RTT
Windows 蓝屏/无网卡wintun 驱动问题管理员运行、重装 wintun
Android 建隧道失败establish 返回 -1重授 VPN 权限

进阶:自建服务端

服务端 vnts 是独立项目(本仓库是客户端),按其文档部署后:

  1. 用 cert_mode=finger 钉死自建服务端证书——杜绝假服务端;
  2. 配多台服务端体验协调注册与容灾(第 9 篇);
  3. 用 dynamic:// + DNS TXT 实现服务端无感迁移。

毕业检查

  • 能不看资料说出生命周期三段与各自的关键函数
  • 能解释”服务端为什么看不到流量”
  • 能用三层中继模型解释某次连接的实际路径(vnt2_ctrl route)
  • 构建过至少一种载体并成功组网

到这里,专栏目录的全部篇章完成。下一步建议:读服务端 vnts 的源码(注册表、中继转发、管理 API 与客户端协议正好互补),或者把 vnt-core 的某个模块(如 FEC)移植到你自己的项目里练手。

← 返回文章列表