我们正在运行 CentOS 7 服务器,其上安装了 KVM,并且主机连接了 2 个以太网接口(em1 和 em2)。
刚刚创建了一个新的 Windows 7 VM,我们希望将该特定机器连接到办公网络 (192.168.2.X),因此我们采用桥接解决方案,创建一个“br0”接口,并将其与物理接口“em2”桥接。
因此,即使通过“br0”为客户机 W7 VM 分配静态 IP,它也不会使用该特定 IP,而是使用另一个 IP,而且从客户机端我们能够看到同一子网上的其他机器/设备,但它不能以其他方式工作(物理机器无法 ping VM),使用指定的“br0”IP 或其他 IP。
所以我们失踪了?
这是配置文件的副本:
ifconfig em2
em2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 54:9f:35:02:b2:5a txqueuelen 1000 (Ethernet)
RX packets 4296203 bytes 5223242102 (4.8 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 655608 bytes 711971529 (678.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17
ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.34 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::569f:35ff:fe02:b25a prefixlen 64 scopeid 0x20<link>
ether 54:9f:35:02:b2:5a txqueuelen 0 (Ethernet)
RX packets 562034 bytes 36288591 (34.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 307114 bytes 1132593995 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
/etc/sysconfig/网络脚本/ifcfg-em2
DEVICE=em2
NAME=em2
TYPE=Ethernet
HWADDR=54:9F:35:02:B2:5A
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
/etc/sysconfig/网络脚本/ifcfg-br0
DEVICE=br0
NAME=br0
TYPE=Bridge
IPADDR=192.168.2.34
PREFIX=24
BOOTPROTO=none
ONBOOT=yes
DELAY=0
/etc/sysconfig/网络
NETWORKING=yes
GATEWAY=192.168.2.1
ipconfig(来宾机器)
IPv4 Address: 192.168.2.159
subnet mask: 255.255.255.0
Default Gateway: 192.168.2.1
brctl 显示 br0
bridge name bridge id STP enabled interfaces
br0 8000.549f3502b25a no em2
vnet0
答案1
您似乎没有 ipv4 地址br0
。这将阻止您的 CentOS 主机与 VM 客户机通信。
我承认您ifcfg-br0
已为此做好了准备,但还没有成功,而且我发现其中有些奇怪的东西 ( BOOTPROTO=none
?)。试试看ifdown br0; ifup br0
是否有帮助。
如果没有,只需强制使用接口上的地址ifconfig br0 192.168.2.34 netmask 255.255.255.0 up
,看看是否能从网络的角度解决问题,然后我们可以讨论如何修复配置文件。
不要在 上设置 IP 地址em2
。如果您将 的输出编辑到问题中,也会很有用brctl show br0
。
编辑:好的,很好,我们已经让您的 ipv4 正常工作了,现在我们只需要修复您的配置文件。尝试以下操作ifcfg-br0
:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.2.34
NETMASK=255.255.255.0
ONBOOT=yes
然后使用 弹出界面ifdown br0; ifup br0
,如果有效,请尝试重新启动。
答案2
上的 IP 地址br0
不是来宾的 IP 地址。它是主机的地址。通过此设置,您可以想象您有一台单独的物理机器,其中装有 Windows 7,通过从 出来的电缆连接到交换机em2
。
如果您希望在客户机上使用静态 IP,则需要在客户机上进行设置。或者更新 DHCP 服务器以分配静态 IP。(顺便说一句,请注意,如果您通过 libvirt 进行设置,它可能会dnsmasq
在桥接接口上启动 DHCP 服务器,这会导致它在您的办公室网络上执行寄生 DHCP)。