KVM&OVS组网配置案例-1

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 地址。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容