KVM&OVS组网配置案例-4

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. 环境准备

1.1 安装必要软件

# 安装 OVS、KVM 和 virt-install
sudo apt update
sudo apt install openvswitch-switch qemu-kvm libvirt-daemon-system libvirt-clients virt-manager virt-install

1.2 启动服务并验证

sudo systemctl start libvirtd openvswitch-switch
sudo systemctl enable libvirtd openvswitch-switch
sudo ovs-vsctl show  # 验证 OVS 服务正常

2. 配置 OVS 网桥

2.1 创建 OVS 网桥并添加 Trunk 端口

# 创建网桥 ovs-br0
sudo ovs-vsctl add-br ovs-br0

# 将物理网卡 eth0 添加为 Trunk 端口(允许 VLAN 10 和 20)
sudo ovs-vsctl add-port ovs-br0 eth0 trunk=10,20

# 验证配置
sudo ovs-vsctl show

3. 创建虚拟机磁盘

# 创建 vm1 和 vm2 的磁盘镜像
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 10G
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/vm2.qcow2 10G

4. 使用 virt-install 创建虚拟机

4.1 创建 vm1(关联 VLAN 10)

sudo virt-install \
  --name vm1 \
  --ram 1024 \
  --vcpus 1 \
  --disk path=/var/lib/libvirt/images/vm1.qcow2,size=10 \
  --os-type linux \
  --os-variant ubuntu20.04 \
  --network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=10 \
  --graphics none \
  --console pty,target_type=serial \
  --cdrom /path/to/ubuntu-20.04.iso  # 替换为实际 ISO 路径

4.2 创建 vm2(关联 VLAN 20)

sudo virt-install \
  --name vm2 \
  --ram 1024 \
  --vcpus 1 \
  --disk path=/var/lib/libvirt/images/vm2.qcow2,size=10 \
  --os-type linux \
  --os-variant ubuntu20.04 \
  --network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=20 \
  --graphics none \
  --console pty,target_type=serial \
  --cdrom /path/to/ubuntu-20.04.iso  # 替换为实际 ISO 路径

5. 验证 OVS 配置

5.1 查看 OVS 网桥端口及 VLAN 标记

sudo ovs-vsctl show
sudo ovs-vsctl get port vnet0 tag  # 应输出 10
sudo ovs-vsctl get port vnet1 tag  # 应输出 20

5.2 预期输出示例

Bridge ovs-br0
    Port "vnet0"
        tag: 10
        Interface "vnet0"
    Port "vnet1"
        tag: 20
        Interface "vnet1"
    Port "eth0"
        trunks: [10, 20]
        Interface "eth0"

6. 配置虚拟机网络

6.1 进入虚拟机控制台安装系统

# 通过控制台完成操作系统安装(按 Enter 激活)
virsh console vm1
virsh console vm2

6.2 启用 DHCP 获取 IP

在虚拟机内执行:

# 在 vm1(VLAN 10)中
dhclient -v eth0
ip addr show eth0  # 应获取类似 192.168.10.100/24 的 IP

# 在 vm2(VLAN 20)中
dhclient -v eth0
ip addr show eth0  # 应获取类似 192.168.20.100/24 的 IP

7. 网络连通性测试

7.1 测试网关连通性

# 在 vm1 中
ping 192.168.10.1  # 假设 VLAN 10 网关为 192.168.10.1

# 在 vm2 中
ping 192.168.20.1  # 假设 VLAN 20 网关为 192.168.20.1

7.2 测试跨 VLAN 隔离

# 在 vm1 中 ping vm2 的 IP(默认应不通)
ping 192.168.20.100

8. 持久化配置

8.1 持久化 OVS 配置

# OVS 配置默认已持久化,无需额外操作

8.2 持久化虚拟机配置

# 设置虚拟机随宿主机启动
virsh autostart vm1
virsh autostart vm2

9. 故障排查

9.1 虚拟机无法获取 IP

  • 检查 OVS 端口 VLAN 标记
    sudo ovs-vsctl get port vnet0 tag  # 应为 10
    sudo ovs-vsctl get port vnet1 tag  # 应为 20
    
  • 验证物理交换机配置
    • 确认物理交换机连接宿主机的端口为 Trunk,允许 VLAN 10 和 20。
    • 确认 VLAN 10 和 20 的 DHCP 服务已启用。

9.2 虚拟机接口未添加到 OVS

  • 检查 libvirt 网络定义
    virsh net-list --all  # 确认未使用默认 NAT 网络
    virsh dumpxml vm1 | grep -A 10 '<interface'  # 确认接口绑定到 ovs-br0
    

总结

通过以上步骤,您已完成:

  1. OVS 网桥配置:创建 Trunk 端口并允许 VLAN 10 和 20。
  2. 虚拟机自动化部署:使用 virt-install 自动关联 OVS 网桥和 VLAN。
  3. 网络验证:确保虚拟机通过物理交换机 DHCP 获取 IP,并按 VLAN 隔离。

此方案结合了自动化工具(virt-install)的便利性和 OVS 的灵活性,适用于需要多租户网络隔离的虚拟化环境。

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

推荐阅读更多精彩内容

友情链接更多精彩内容