0.配置要求
- 1.使用
ovs創(chuàng)建一個網橋,網橋上添加宿主機eth0接口,接口為trunk,可轉發(fā)所有vlan的數據 - 2.使用
KVM創(chuàng)建并圖形安裝兩個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. 環(huán)境準備
1.1 安裝必要軟件
# 安裝 OVS 和 KVM 相關工具
sudo apt update
sudo apt install openvswitch-switch qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
1.2 驗證 OVS 和 KVM 狀態(tài)
sudo systemctl status openvswitch-switch libvirtd
2. 配置 OVS 網橋
2.1 創(chuàng)建 OVS 網橋 ovs-br0
sudo ovs-vsctl add-br ovs-br0
2.2 將宿主機物理網卡 eth0 添加為 Trunk 端口
# 將 eth0 添加到 ovs-br0,并允許所有 VLAN(1-4094)
sudo ovs-vsctl add-port ovs-br0 eth0 trunk=10,20 # 僅允許 VLAN 10 和 20(根據實際需求調整)
sudo ovs-vsctl add-port ovs-br0 eth0 tag=* # tag=*或0表示允許所有VLAN標簽的數據通過
2.3 驗證 OVS 配置
sudo ovs-vsctl show
輸出應包含以下信息:
Bridge ovs-br0
Port eth0
trunks: [10, 20]
Port ovs-br0
Interface ovs-br0
type: internal
3. 創(chuàng)建 KVM 虛擬機
3.1 創(chuàng)建虛擬機磁盤
# 創(chuàng)建 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
3.2 創(chuàng)建虛擬機并關聯 OVS 接口
# 創(chuàng)建 vm1(VLAN 10)
sudo virt-install \
--name vm1 \
--ram 1024 \
--vcpus 1 \
--disk path=/var/lib/libvirt/images/vm1.qcow2 \
--os-type linux \
--os-variant ubuntu20.04 \
--network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=10 \
--graphics spice \
--console pty,target_type=serial \
--cdrom /path/to/ubuntu-20.04.iso # 關鍵:掛載 ISO
# 創(chuàng)建 vm2(VLAN 20)
sudo virt-install \
--name vm2 \
--ram 1024 \
--vcpus 1 \
--disk path=/var/lib/libvirt/images/vm2.qcow2 \
--os-type linux \
--os-variant ubuntu20.04 \
--network bridge=ovs-br0,model=virtio,virtualport_type=openvswitch,virtualport_options:tag=20 \
--graphics spice \
--console pty,target_type=serial \
--cdrom /path/to/ubuntu-20.04.iso
3.3 安裝操作系統
通過 SPICE/VNC 控制臺完成操作系統的安裝過程。
安裝完成后,虛擬機會自動從磁盤啟動。
3.4 驗證虛擬機接口
# 查看虛擬機接口名稱(例如 vnet0 和 vnet1)
virsh domiflist vm1
virsh domiflist vm2
4. 驗證 OVS 端口 VLAN 配置
# 查看 OVS 端口 VLAN 標記
sudo ovs-vsctl list port | grep -E 'name|tag'
輸出應類似:
name : "vnet0"
tag : 10
name : "vnet1"
tag : 20
name : "eth0"
trunks : [10, 20]
5. 虛擬機網絡配置
5.1 啟動虛擬機并獲取 DHCP 地址
# 進入 vm1 控制臺(按 Enter 激活)
virsh console vm1
# 在 vm1 內執(zhí)行:
dhclient -v eth0 # 自動獲取 VLAN 10 的 IP
# 進入 vm2 控制臺
virsh console vm2
# 在 vm2 內執(zhí)行:
dhclient -v eth0 # 自動獲取 VLAN 20 的 IP
5.2 驗證 IP 地址
# 在 vm1 內:
ip addr show eth0 # 應顯示類似 192.168.10.x/24
# 在 vm2 內:
ip addr show eth0 # 應顯示類似 192.168.20.x/24
5.3 驗證網關連通性
# 在 vm1 內:
ping 192.168.10.1 # VLAN 10 網關(假設物理交換機 VLAN 10 網關 IP)
# 在 vm2 內:
ping 192.168.20.1 # VLAN 20 網關
6. 物理交換機配置(補充說明)
確保物理交換機滿足以下條件:
- 連接宿主機的端口配置為 Trunk,允許 VLAN 10 和 20。
- VLAN 10 和 20 已啟用 DHCP 服務(例如通過 DHCP 中繼或本地 DHCP 服務器)。
7. 故障排查
7.1 虛擬機無法獲取 IP
-
檢查 OVS VLAN 標記:
sudo ovs-vsctl get port vnet0 tag sudo ovs-vsctl get port vnet1 tag - 檢查物理交換機 Trunk 配置:確保允許 VLAN 10 和 20。
7.2 虛擬機之間無法通信
- 設計隔離:VLAN 10 和 20 默認隔離,若需跨 VLAN 通信,需在物理交換機或宿主機配置路由。
總結
通過以上步驟,您完成了以下配置:
- OVS 網橋
ovs-br0作為 Trunk 接口連接物理網絡。 - 兩個虛擬機分別接入 VLAN 10 和 20。
- 虛擬機通過物理交換機的 DHCP 服務自動獲取 IP。
- VLAN 間隔離由物理交換機和 OVS 共同實現。