在Debian Jessie上的KVM中配置公共网桥访客网络

时间:2020-03-21 11:43:02  来源:igfitidea点击:

桥接网络允许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

看来来宾网络正常。