AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1819986
Accepted
amkgi
amkgi
Asked: 2023-12-09 15:55:49 +0800 CST2023-12-09 15:55:49 +0800 CST 2023-12-09 15:55:49 +0800 CST

具有 Wi-Fi 接口的桥接模式虚拟机上的 802.1q VLAN 问题

  • 772

我的环境是一个带有 OpenWRT 的路由器、一台通过跳线连接到路由器的笔记本电脑以及在路由器的该端口上配置了 VID 5 的未标记 VLAN,以及通过 Wi-Fi 连接到路由器的 MacBook M1 Pro。

在 MacBook 上,我通过指定 en0 (AirPort) 作为父接口创建了一个 VLAN 接口,然后使用带有 hvf 加速器的 QEMU 或带有 VZ 的 lima/UTM 创建了一个虚拟机,我观察到一个奇怪的情况:使用 arping,有时会收到来自笔记本电脑的数据包到达与 macbook 上的 VLAN 接口连接的虚拟机,但虚拟机上运行的 arping 只发送请求,但没有收到笔记本电脑的回复。如果我将 IP 地址分配给 macOS 中的 VLAN 接口,则数据包可以通过任一协议传输,不会出现任何问题。问题是将数据包传送到虚拟机。

使用笔记本电脑上的 tcpdump,我可以看到它回复 arp 请求,我还可以在路由器上看到回复通过 Wi-Fi 接口传递的 arp 请求,但我在 macbook 上 en0 上的 tcpdump 中看不到它们,这也很奇怪。但正如我之前所写,如果我在 MacBook 的 VLAN 接口上分配来自同一网络的地址,则任何数据包都会在笔记本电脑和 MacBook 之间传递。

  • 笔记本电脑:192.168.24.50
  • MacBook:192.168.24.20(vlan5接口)。
  • 虚拟机:192.168.24.10

对于lima-vm,我在桥接模式下使用socket_vmnet 。对于 QEMU,我使用vmnet-bridged。

➜  ~ ifconfig vlan5
vlan5: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1496
    options=6063<RXCSUM,TXCSUM,TSO4,TSO6,PARTIAL_CSUM,ZEROINVERT_CSUM>
    ether f0:2f:4b:xx:xx:xx
    inet 192.168.24.20 netmask 0xffffff00 broadcast 192.168.24.255
    vlan: 5 parent interface: en0
    media: autoselect
    status: active

➜  ~ ping 192.168.24.50 -c2
PING 192.168.24.50 (192.168.24.50): 56 data bytes
64 bytes from 192.168.24.50: icmp_seq=0 ttl=64 time=5.241 ms
64 bytes from 192.168.24.50: icmp_seq=1 ttl=64 time=5.429 ms

--- 192.168.24.50 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 5.241/5.335/5.429/0.094 ms

➜  ~ sudo arping -c 5 -i vlan5 192.168.24.50
ARPING 192.168.24.50
60 bytes from 10:e7:c6:xx:xx:xx (192.168.24.50): index=0 time=6.061 msec
60 bytes from 10:e7:c6:xx:xx:xx (192.168.24.50): index=1 time=6.084 msec
60 bytes from 10:e7:c6:xx:xx:xx (192.168.24.50): index=2 time=5.945 msec
60 bytes from 10:e7:c6:xx:xx:xx (192.168.24.50): index=3 time=3.092 msec
60 bytes from 10:e7:c6:xx:xx:xx (192.168.24.50): index=4 time=3.848 msec

--- 192.168.24.50 statistics ---
5 packets transmitted, 5 packets received,   0% unanswered (0 extra)
rtt min/avg/max/std-dev = 3.092/5.006/6.084/1.278 ms

➜  ~ ifconfig bridge100
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1496
    options=3<RXCSUM,TXCSUM>
    ether f2:2f:4b:xx:xx:xx
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x0
    member: vlan5 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 22 priority 0 path cost 0
    member: vmenet0 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 23 priority 0 path cost 0
    Address cache:
        10:e7:c6:xx:xx:xx Vlan1 vlan5 326 flags=0<>
        52:55:55:ae:36:b4 Vlan1 vmenet0 1172 flags=0<>
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active
[root@VM1 ~]# arping 192.168.24.50 -c5
ARPING 192.168.24.50 from 192.168.24.10 lima0
Sent 5 probes (5 broadcast(s))
Received 0 response(s)
[root@VM1 ~]#
[root@laptop ~]# arping 192.168.24.10 -c5
ARPING 192.168.24.10 from 192.168.24.50 eth0
Unicast reply from 192.168.24.10 [52:55:55:AE:36:B4] 2.492ms
Unicast reply from 192.168.24.10 [52:55:55:AE:36:B4] 1.791ms
Unicast reply from 192.168.24.10 [52:55:55:AE:36:B4] 3.059ms
Sent 5 probes (1 broadcast(s))
Received 3 response(s)
[root@laptop ~]#

我还在笔记本电脑上进行了测试,在 VirtualBox 中我创建了具有桥接模式接口的虚拟机,并在虚拟机内部创建了一个 VLAN 接口。我将笔记本电脑切换到 Wi-Fi,并尝试 ping MacBook 的虚拟机。数据包正在离开笔记本电脑虚拟机,但不会到达 MacBook 虚拟机。

因此,它与操作系统无关,问题是当虚拟机连接到 Wi-Fi 接口时,数据包不会发送到虚拟机本身。

我想弄清楚这一点。这对我来说并不是很透明。VLAN 标头只有 4 个字节,那么以桥接模式在 VM 接口和 Wi-Fi 接口之间传递该帧有什么问题呢?但是,如果您在操作系统中将 IP 地址分配给 VLAN 接口,并且该接口具有 Wi-Fi 接口作为其父接口,则一切都会正常工作。

UPD:感谢 AB 的评论,他们帮助我了解了是什么阻止了虚拟机接收数据包。

wireless-networking
  • 1 1 个回答
  • 47 Views

1 个回答

  • Voted
  1. Best Answer
    amkgi
    2023-12-29T03:28:19+08:002023-12-29T03:28:19+08:00

    您可以在本文中找到此问题的解决方案及其确切原因。

    简短回答:要添加 MAC NAT,请运行命令 -sudo ifconfig bridge10X macnat vlanX

    • 0

相关问题

  • 对于 Wake-on-LAN 和 Wake-on-Wireless 计算机必须只挂起或可以关机吗?

  • 使用 firex 代理后,我的计算机上的互联网非常慢

  • 如何制作自己的 Wi-Fi 面板服务器,如酒店或机场?[关闭]

  • Genymotion 如何绕过 VirtualBox 缺乏 Wi-Fi 仿真?

  • Win10 1803:如何让移动热点成为专用网络?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve