vmware 虚拟机换一个路由器下桥接无法上网

现象

  • 宿主机和虚拟机桥接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 的“自动桥接”极大概率桥接到了错误的虚拟网卡上。

验证