故障复盘:EasyTier 宿主机访问桥接虚拟机引发 ICMP DUP!

· 4 分钟阅读

摘要:记录一次因 EasyTier 运行在 Windows 宿主机并开启内核转发,导致访问 VMware 桥接模式下的虚拟机时出现网络环路(ICMP DUP)的排查与解决过程。

维度信息
标签EasyTier VMware 网络环路 DUP! FNOS
日期2026-01-04
状态✅ 已解决
关键点proxy_forward_by_system Bridged Mode

1. 🚨 故障现象

在远程节点通过 EasyTier 虚拟网访问局域网内的 FNOS 虚拟机(IP: 192.168.31.110)时,网络连通但 Ping 测试返回大量 重复包 (Duplicate Packets)。

终端输出:

64 bytes from 192.168.31.110: icmp_seq=19 ttl=63 time=29.3 ms (DUP!)
64 bytes from 192.168.31.110: icmp_seq=19 ttl=63 time=29.3 ms (DUP!)
# 注意:TTL=63 正常,延迟正常,但出现 (DUP!) 标记

2. 🧩 环境拓扑

设备角色主机名 / IP运行环境网络配置
宿主机 (Host)MiniPC-MainWindows 11• 运行 EasyTier 网关
• 开启 proxy_forward_by_system = true
虚拟机 (Guest)FNOS-NASVMware Workstation• IP: 192.168.31.110
• 模式: 桥接 (Bridged)
物理网络-路由器• 网段: 192.168.31.0/24

3. 🕵️‍♂️ 根因分析 (Root Cause)

核心原因:宿主机内核路由与 VMware 虚拟网桥发生流量”镜像/回环”。

当 EasyTier 运行在宿主机并开启”系统内核转发”时,数据包流向如下:

  1. 入站 📥:远程流量到达宿主机 EasyTier 虚拟网卡。
  2. 转发 🔀:Windows 内核查询路由表,发现目标 .110 在本地物理网段,将包发往物理接口。
  3. 冲突 (环路点) 💥:
    • 路径 A (正常):VMware 桥接驱动拦截数据包 -> 传给虚拟机 -> 虚拟机回复。
    • 路径 B (回环):由于数据包经过了物理网络栈,Windows 内核或混杂模式驱动捕获到了发出的包的”回声/镜像”。
  4. 结果 📉:EasyTier 接口同时收到了”回声包”和”真实回包”,导致 ICMP 响应计数重复。

4. 🧪 解决方案

✅ 方案一:关闭系统级转发(本次实施)

原理:强制 EasyTier 使用用户态 NAT (Tun2Socks),绕过 Windows 内核路由表,避免与 VMware 驱动打架。

  • 操作步骤:

    1. 打开 Windows 端 EasyTier GUI 或编辑 config.toml。
    2. 定位到设置项:Proxy Forward By System (使用系统转发)。
    3. 取消勾选 (或设为 false)。
    4. 重启 EasyTier 服务。
    # config.toml 修改示例
    [flags]
    proxy_forward_by_system = false  # <--- 关键修改

🚀 方案二:架构优化(推荐长期方案)

原理:将 EasyTier 部署在虚拟机内部,彻底解耦宿主机网络。

  • 建议:在 FNOS (Linux) 内部直接运行 EasyTier,作为独立 P2P 节点加入网络。
  • 优势:性能更佳,无宿主机依赖,彻底消除二层环路风险。

5. ✅ 验证结果

执行 Ping 测试确认故障消除:

/app # ping 192.168.31.110
PING 192.168.31.110 (192.168.31.110): 56 data bytes
64 bytes from 192.168.31.110: seq=0 ttl=63 time=29.1 ms
64 bytes from 192.168.31.110: seq=1 ttl=63 time=30.2 ms
  • 结论:DUP! 消失,丢包率 0%,网络恢复正常。

💡 避坑指南 (Lessons Learned)

  1. 宿主机做网关要谨慎:当一台机器既是 VPN 网关,又是目标虚拟机的宿主时,桥接模式极易引发路由混乱。
  2. 排查 DUP! 三板斧:
    • 👀 看 TTL:判断经过了几跳。
    • 🔌 看 物理连接:是否同时连接了网线和 WiFi(ARP Flux)。
    • 🌉 看 虚拟化:是否存在”宿主机访问桥接虚拟机”的场景。