You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

KVM/QEMU虚拟机桥接LAN网络故障求助

KVM/QEMU虚拟机桥接LAN网络故障求助

首先,咱们先从最常见的问题入手——你已经能ping通主机上的br0,说明桥接的基础配置是生效的,问题大概率出在虚拟机的网络参数配置或者主机/物理设备的流量转发限制上。我给你列几个一步步排查的方向,你可以挨个试:

  • 先确认虚拟机的静态IP配置是否完全正确
    你的Router1的G0/0/0接口是192.168.10.1/26,对应的子网掩码是255.255.255.192,所以虚拟机的网关必须设为192.168.10.1,子网掩码也要和网关保持一致。很多人会不小心把/26写成/24,这会直接导致路由错误。
    你可以在Ubuntu虚拟机里执行ip addr检查IP和掩码,再用ip route看默认路由是不是指向192.168.10.1。如果路由不对,赶紧修改虚拟机的网络配置文件(Ubuntu一般是/etc/netplan/下的yaml文件,或者老版本的/etc/network/interfaces)。

  • 检查Kali主机的内核转发和防火墙设置
    首先确认内核允许IP转发:执行sysctl net.ipv4.ip_forward,如果输出是0,那这就是核心问题之一。临时生效可以执行sysctl -w net.ipv4.ip_forward=1,要永久生效就编辑/etc/sysctl.conf,把net.ipv4.ip_forward=1这行的注释去掉。
    然后检查Kali的防火墙(默认是iptables,可能还有ufw),先临时关闭ufw试试:ufw disable,然后再测试虚拟机能不能ping通LAN里的其他设备。如果关闭后正常,说明是防火墙规则阻止了桥接流量,你需要添加允许桥接接口转发的规则,比如:

    iptables -A FORWARD -i br0 -j ACCEPT
    iptables -A FORWARD -o br0 -j ACCEPT
    

    之后可以用iptables-save > /etc/iptables/rules.v4保存规则。

  • 确认VirtManager里虚拟机的网络模式是否正确
    打开虚拟机的设置面板,找到网络选项,一定要确认网络源选择的是桥接设备: br0,而不是默认的“虚拟网络”(那是NAT模式,只能和主机通信)。另外,虚拟机的网卡模型推荐选virtio,兼容性和性能都更好。

  • 检查物理网络设备的配置(Cisco交换机和路由器)
    你的Kali主机接在Switch1的G0/2端口,先确认这个端口和Router1的Fa0/1端口在同一个VLAN里——如果Router1的Fa0/1配置了VLAN,那Switch1的G0/2也必须划入同一个VLAN,否则二层流量根本传不过去。你可以在Switch1上执行show running-config interface GigabitEthernet0/2查看配置,有没有switchport access vlan X的命令,和Router1端的VLAN号是否一致。
    另外,看看交换机有没有开启端口安全:如果有switchport port-security相关配置,可能会限制允许的MAC地址数量,导致虚拟机的MAC被阻断。可以临时关闭端口安全试试:conf t ; int g0/2 ; no switchport port-security ; end
    还有,检查Router1的G0/0/0接口有没有配置ACL(访问控制列表),如果有ip access-group X in/out的命令,要确认ACL规则没有拒绝192.168.10.4192.168.10.5的流量。

  • 检查ARP缓存和二层连通性
    在Ubuntu虚拟机里执行ping 192.168.10.1,如果ping不通,再执行arp -a看看有没有网关的MAC地址。如果没有,说明二层转发有问题,你可以在Kali主机上用brctl show查看br0的端口列表,确认eth0和vnet0都在桥接端口里,并且状态是UP的。

如果这些排查步骤都试过还是解决不了,可以把以下信息发出来:虚拟机的ip route输出、Kali主机的brctl show输出、Switch1 G0/2端口的配置信息,我再帮你进一步分析。

备注:内容来源于stack exchange,提问作者Anthony Periandri

火山引擎 最新活动