0.配置要求
- 1.使用
ovs创建一个网桥,网桥上添加宿主机eth0接口,接口为trunk,可转发所有vlan的数据 - 2.使用
KVM创建并图形安装两个linux虚拟机vm1,vm2。 - 3.vm1关联ovs的vlan10接口,vm2关联ovs的vlan20接口。
- 4.vm1获取vlan10的IP地址,vm2获取vlan20IP地址。
- 5.vlan10,vlan20的网关在宿主机eth0接口连接的物理交换机上,物理交换机开启vlan10,vlan20的DHCP功能,为vm1,vm2自动分配地址。
1. 使用 OVS 创建网桥并添加宿主机 eth0 接口
1.1 安装 Open vSwitch
如果系统中尚未安装 Open vSwitch,可以使用以下命令进行安装:
# 对于 CentOS/RHEL
yum install openvswitch -y
# 对于 Ubuntu/Debian
apt-get install openvswitch-switch -y
1.2 启动 Open vSwitch 服务
systemctl start openvswitch
systemctl enable openvswitch
1.3 创建网桥并添加 eth0 接口
# 创建网桥 br0
ovs-vsctl add-br br0
# 将 eth0 接口添加到网桥 br0 并设置为 trunk 模式
ovs-vsctl add-port br0 eth0 tag=all
2. 使用 KVM 创建并图形安装两个 Linux 虚拟机 vm1 和 vm2
2.1 安装 KVM 相关工具
# 对于 CentOS/RHEL
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install -y
# 对于 Ubuntu/Debian
apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager -y
2.2 启动 libvirtd 服务
systemctl start libvirtd
systemctl enable libvirtd
2.3 创建虚拟机磁盘
# 创建 vm1 和 vm2 的磁盘镜像
qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 10G
qemu-img create -f qcow2 /var/lib/libvirt/images/vm2.qcow2 10G
2.4 创建并图形安装虚拟机 vm1 和 vm2
使用 virt-install 命令创建虚拟机,以下是创建 vm1 的示例:
virt-install \
--name vm1 \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/vm1.qcow2 \
--os-variant ubuntu20.04 \
--network bridge=br0,model=virtio \
--graphics spice \
--cdrom /path/to/ubuntu.iso
同样的方法创建 vm2:
virt-install \
--name vm2 \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/vm2.qcow2 \
--os-variant ubuntu20.04 \
--network bridge=br0,model=virtio \
--graphics spice \
--cdrom /path/to/ubuntu.iso
在安装过程中,根据提示完成 Linux 系统的安装。
3. 将 vm1 关联到 OVS 的 vlan10 接口,vm2 关联到 OVS 的 vlan20 接口
3.1 为 vm1 和 vm2 的虚拟网卡设置 VLAN
编辑 vm1 的 XML 配置文件:
virsh edit vm1
在 <interface type='bridge'> 部分添加 <vlan> 标签,指定 VLAN ID 为 10:
<interface type='bridge'>
<mac address='52:54:00:xx:xx:xx'/>
<source bridge='br0'/>
<model type='virtio'/>
<vlan>
<tag id='10'/>
</vlan>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
同样地,编辑 vm2 的 XML 配置文件:
virsh edit vm2
在 <interface type='bridge'> 部分添加 <vlan> 标签,指定 VLAN ID 为 20:
<interface type='bridge'>
<mac address='52:54:00:xx:xx:xx'/>
<source bridge='br0'/>
<model type='virtio'/>
<vlan>
<tag id='20'/>
</vlan>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
3.2 重启虚拟机
virsh destroy vm1
virsh start vm1
virsh destroy vm2
virsh start vm2
4. 让 vm1 获取 vlan10 的 IP 地址,vm2 获取 vlan20 的 IP 地址
4.1 在虚拟机中配置 DHCP
在 vm1 和 vm2 中,确保网络接口配置为使用 DHCP 获取 IP 地址。以 Ubuntu 为例,编辑 /etc/netplan/00-installer-config.yaml 文件:
network:
ethernets:
ens3:
dhcp4: true
version: 2
应用配置:
sudo netplan apply
5. 确保物理交换机配置
确保物理交换机上已经开启了 vlan10 和 vlan20 的 DHCP 功能,并且 eth0 连接的端口已经配置为 trunk 模式,允许 vlan10 和 vlan20 的数据通过。
完成以上步骤后,vm1 应该能够从 vlan10 的 DHCP 服务器获取 IP 地址,vm2 应该能够从 vlan20 的 DHCP 服务器获取 IP 地址。