故障复盘: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-Main | Windows 11 | • 运行 EasyTier 网关 • 开启 proxy_forward_by_system = true |
| 虚拟机 (Guest) | FNOS-NAS | VMware Workstation | • IP: 192.168.31.110• 模式: 桥接 (Bridged) |
| 物理网络 | - | 路由器 | • 网段: 192.168.31.0/24 |
3. 🕵️♂️ 根因分析 (Root Cause)
核心原因:宿主机内核路由与 VMware 虚拟网桥发生流量”镜像/回环”。
当 EasyTier 运行在宿主机并开启”系统内核转发”时,数据包流向如下:
- 入站 📥:远程流量到达宿主机 EasyTier 虚拟网卡。
- 转发 🔀:Windows 内核查询路由表,发现目标
.110在本地物理网段,将包发往物理接口。 - 冲突 (环路点) 💥:
- 路径 A (正常):VMware 桥接驱动拦截数据包 -> 传给虚拟机 -> 虚拟机回复。
- 路径 B (回环):由于数据包经过了物理网络栈,Windows 内核或混杂模式驱动捕获到了发出的包的”回声/镜像”。
- 结果 📉:EasyTier 接口同时收到了”回声包”和”真实回包”,导致 ICMP 响应计数重复。
4. 🧪 解决方案
✅ 方案一:关闭系统级转发(本次实施)
原理:强制 EasyTier 使用用户态 NAT (Tun2Socks),绕过 Windows 内核路由表,避免与 VMware 驱动打架。
-
操作步骤:
- 打开 Windows 端 EasyTier GUI 或编辑
config.toml。 - 定位到设置项:Proxy Forward By System (使用系统转发)。
- 取消勾选 (或设为
false)。 - 重启 EasyTier 服务。
# config.toml 修改示例 [flags] proxy_forward_by_system = false # <--- 关键修改 - 打开 Windows 端 EasyTier GUI 或编辑
🚀 方案二:架构优化(推荐长期方案)
原理:将 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)
- 宿主机做网关要谨慎:当一台机器既是 VPN 网关,又是目标虚拟机的宿主时,桥接模式极易引发路由混乱。
- 排查 DUP! 三板斧:
- 👀 看 TTL:判断经过了几跳。
- 🔌 看 物理连接:是否同时连接了网线和 WiFi(ARP Flux)。
- 🌉 看 虚拟化:是否存在”宿主机访问桥接虚拟机”的场景。
