现象
- 宿主机和虚拟机桥接vnet0-物理网卡,完全一样的配置下:
- 家里的redmi路由器下,连通和上网一切正常
- 单位的tplink路由器下,宿主机可连虚拟机,linux虚拟机无法上网不通网关
- 单位的tplink路由器下,宿主机可连虚拟机,win虚拟机一切正常
虚拟机arp情况
local:~$ ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:49:d6:ec brd ff:ff:ff:ff:ff:ff inet 192.168.1.90/24 scope global eth0 valid_lft forever preferred_lft forever inet6 2408:8207:60c5:77a4:a00:27ff:fe49:d6ec/64 scope global dynamic flags 100 valid_lft 86103sec preferred_lft 14103sec inet6 fe80::a00:27ff:fe49:d6ec/64 scope link valid_lft forever preferred_lft forever local:~$ ip route default via 192.168.1.1 dev eth0 metric 1 onlink 172.17.0.0/16 dev docker0 scope link src 172.17.0.1 172.18.0.0/16 dev br-0b82217373d7 scope link src 172.18.0.1 192.168.1.0/24 dev eth0 scope link src 192.168.1.90 local:~$ arp -a ? (192.168.1.120) at c8:15:4e:49:01:42 [ether] on eth0 ? (192.168.1.1) at 9c:47:82:11:96:24 [ether] on eth0 local:~$ ping 192.168.1.120 -c 3 PING 192.168.1.120 (192.168.1.120): 56 data bytes ^C --- 192.168.1.120 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss local:~$ ping 192.168.1.1 -c 3 PING 192.168.1.1 (192.168.1.1): 56 data bytes ^C --- 192.168.1.1 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss local:~$ ping 8.8.8.8 -c 3 PING 8.8.8.8 (8.8.8.8): 56 data bytes ^C --- 8.8.8.8 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss local:~$ ping baidu.com -c 3 ^C local:~$ ping 192.168.1.90 PING 192.168.1.90 (192.168.1.90): 56 data bytes 64 bytes from 192.168.1.90: seq=0 ttl=42 time=0.105 ms 64 bytes from 192.168.1.90: seq=1 ttl=42 time=0.063 ms ^C --- 192.168.1.90 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.063/0.084/0.105 ms
原因定位
- 这是一个非常隐蔽的路由冲突问题
- 在 TUN 模式下,Clash 会接管系统所有的流量
- 当你尝试从虚拟机 ping 192.168.1.1 时,宿主机的虚拟网卡可能会拦截这些数据包,并尝试通过代理隧道发送,而不是通过真实的物理 Wi-Fi 发送。
- 导致局域网内的三层转发失效,虽然二层(MAC 地址)能通,但 ICMP(Ping)包被代理软件“吃掉”了。
- VMware 的“桥接”错觉
- VMware 的“自动桥接”极大概率桥接到了错误的虚拟网卡上。
验证