在Debian Jessie上的KVM中配置公共网桥访客网络
桥接网络允许KVM guest虚拟机通过物理接口连接到外部网络,从而使它们成为网络其余部分的普通主机。
请注意,当用于桥接的物理网络设备(例如eth1,wlan0)是无线设备时,网络桥接将不起作用,因为大多数无线设备驱动程序均不支持桥接。
KVM默认虚拟网络
每个标准的libvirt安装都提供了到虚拟机的基于NAT的连接。
这就是所谓的“默认虚拟网络”,我们可以通过以下方式验证其是否可用:
# virsh net-list --all Name State Autostart Persistent --------------------------------------------------------- default inactive no yes
当libvirt默认网络正在运行时,我们将看到一个隔离的桥接设备。
该设备明确未添加任何物理接口,因为它使用具有转发功能的NAT连接到外部世界。
我们希望拥有一个公共网桥,以便我们可以为我们的虚拟机分配IP地址,并使它们可以从本地网络访问。
KVM公共桥
安装bridge-utils软件包:
# apt-get install bridge-utils
打开“/etc/network/interfaces”并进行以下配置:
source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_maxwait 5
我们已经将DHCP服务器配置为基于MAC地址发出静态DHCP租约。
在这种情况下,应提供的IP地址为10.10.1.80/24.
重新启动网络:
# systemctl restart networking
确认已发布IP地址:
# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000 link/ether 00:30:48:f1:4c:c2 brd ff:ff:ff:ff:ff:ff 3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 00:30:48:91:3f:0a brd ff:ff:ff:ff:ff:ff inet 10.10.1.80/24 brd 10.10.1.255 scope global br0 valid_lft forever preferred_lft forever
访客配置
KVM主机配置完成后,即可根据网络名称将访客连接到虚拟网络。
启动libvirtd服务(如果尚未运行):
# systemctl start libvirtd
让我们看看安装了什么guest:
# virsh list --all Id Name State --------------------------------------------------- - centos1 shut off - rhel1 shut off
我们将配置centos1 guest虚拟机以使用网桥网络。
# virsh edit centos1
我们应该找到类似的行:
<interface type='user'> <mac address='52:54:00:e7:6c:71' <model type='virtio' <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0' </interface>
用户网络使用SLIRP连接到LAN。
这提供了非常有限的NAT形式。
用户网络不支持ICMP等许多网络功能。
某些应用程序(如ping)可能无法正常运行。
但是,来宾操作系统可以访问网络服务,但对网络上的其他计算机不可见。
将以下代码段添加到配置文件中,以替换上面的行:
<interface type='bridge'> <mac address='52:54:00:e7:6c:71' <source bridge='br0' </interface>
请注意,MAC地址是可选的,如果省略,它将自动生成。
启动访客:
# virsh start centos1 Domain centos1 started
连接到访客控制台,并检查网络配置。
如果是桥接的,它应该从我们的DHCP池10.10.1.0/24接收IP地址。
NAT池为10.0.2.15/24.
# virsh console centos1 Connected to domain centos1 Escape character is ^] CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 localhost login: root Password: ** Last login: Tue Aug 9 19:31:55 on hvc0 [Hyman@theitroad ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:e7:6c:71 brd ff:ff:ff:ff:ff:ff inet 10.10.1.81/24 brd 10.10.1.255 scope global dynamic ens3 valid_lft 86390sec preferred_lft 86390sec inet6 fe80::5054:ff:fee7:6c71/64 scope link valid_lft forever preferred_lft forever [Hyman@theitroad ~]# host www.google.com www.google.com has address 216.58.214.4 www.google.com has IPv6 address 2a00:1450:4009:801::2004 [Hyman@theitroad ~]# exit
看来来宾网络正常。