如何在 Fedora19 中使用 KVM 桥接网络

如何在 Fedora19 中使用 KVM 桥接网络

我正在尝试在 Fedora-19 主机系统上设置几台虚拟机,并使用传统的桥接网络设备(br0、br1 等)。我之前已使用旧版本的 Fedora(16、14 等)做过很多次这样的操作,而且一切正常。但是,由于我无法弄清楚的原因,桥接似乎在 Fedora19 中无法正常工作。虽然我可以从虚拟机内部成功连接到外界(本地网络 + 互联网),但是外部(本地网络)无法与虚拟机通信。我指的是像 ping 这样的小事。在虚拟机内部,我可以成功 ping 通任何东西(0% 数据包丢失)。但是,从虚拟机外部(在主机上或同一网络上的任何其他系统上),ping 虚拟机的 IP 地址时发现 100% 的数据包丢失。

我的第一个问题很简单,是否有其他人在 F19 中成功运行此功能?如果是这样,您需要遵循哪些步骤?

我根本没有使用 NetworkManager,它只是网络服务。任何地方都没有涉及防火墙(iptables 和防火墙服务目前已禁用)。这是当前的主机配置:

# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.38eaa792efe5   no      em2
                            vnet1
br1     8000.38eaa792efe6   no      em3
br2     8000.38eaa792efe7   no      em4
                            vnet0
virbr0      8000.525400db3ebf   yes     virbr0-nic

# more /etc/sysconfig/network-scripts/ifcfg-em2
TYPE=Ethernet
BRIDGE="br0"
NAME=em2
DEVICE="em2"
UUID=aeaa839e-c89c-4d6e-9daa-79b6a1b919bd
ONBOOT=yes
HWADDR=38:EA:A7:92:EF:E5
NM_CONTROLLED="no"

# more /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
NM_CONTROLLED="no"
BOOTPROTO=dhcp
NAME=br0
DEVICE="br0"
ONBOOT=yes

# ifconfig em2 ;ifconfig br0
em2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::3aea:a7ff:fe92:efe5  prefixlen 64  scopeid 0x20<link>
        ether 38:ea:a7:92:ef:e5  txqueuelen 1000  (Ethernet)
        RX packets 100093  bytes 52354831 (49.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 25321  bytes 15791341 (15.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xf7d00000-f7e00000  

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.31.99.226  netmask 255.255.252.0  broadcast 10.31.99.255
        inet6 fe80::3aea:a7ff:fe92:efe5  prefixlen 64  scopeid 0x20<link>
        ether 38:ea:a7:92:ef:e5  txqueuelen 0  (Ethernet)
        RX packets 19619  bytes 1963328 (1.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 1074 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

/etc/libvirt/qemu/foo.xml(存在此问题的虚拟机之一)中的相关部分:

<interface type='bridge'>
      <mac address='52:54:00:26:22:9d'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

# ps -ef | grep qemu
qemu      1491     1 82 13:25 ?        00:42:09 /usr/bin/qemu-system-x86_64 -machine accel=kvm -name cuda-linux64-build5 -S -machine pc-0.13,accel=kvm,usb=off -cpu SandyBridge,+pdpe1gb,+osxsave,+dca,+pcid,+pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme -m 16384 -smp 6,sockets=6,cores=1,threads=1 -uuid 6e930234-bdfd-044d-2787-22d4bbbe30b1 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/cuda-linux64-build5.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/var/lib/libvirt/images/cuda-linux64-build5.img,if=none,id=drive-virtio-disk0,format=raw,cache=writeback -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:26:22:9d,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -vnc 127.0.0.1:1 -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5

如果需要,我可以提供更多信息。谢谢!

答案1

不知何故,我是个白痴,忘记实际配置虚拟机内的静态 IP 地址,而它们仍然会随机获取 DHCP 分配的 IP。显然,尝试连接到尚未绑定到网络接口(虚拟机内)的静态 IP 是行不通的。

相关内容