如何在 CentOS7 KVM 主机/RHEL7 来宾中为 VLAN 连接配置网络

How to configure networking in CentOS7 KVM host / RHEL7 guests for VLAN connections

我正在寻找一个过程列表,其中包含有关如何为具有两个 RHEL7 客户机的 CentOS7 KVM 主机配置 VLAN 网络的示例。我会 post 所有我尝试过的无数事情,但这只会浪费很多时间和 space。我在寻找理想示例时遇到问题。

我已经建造并运行了这两个来宾。主机只有两个以太网接口。我们已将 802.1q 中继连接到它们。当我使用带有所有信息的 ifcfg-em1 和 ifcfg-em2 的传统 ifcfg 网络以及 ifcfg-em2 中的单个网关时,一切都可以连接到互联网。

em1 有专用 vlan,本地 vlan 仅供主机使用,而 VLAN 2 和 3 将是我希望我的两个来宾使用的另外两个专用 vlan。

em2 有 public 个 vlan,有些类似的配置 - 主机和第一个来宾的本地 vlan (101),第二个来宾的 VLAN 103。我希望主机和第一个来宾在本机 vlan 的同一子网上使用不同的 IP。

我首先尝试为 public 连接建立一座桥梁。我从物理 em 接口的 ifcfg 中删除了所有 IP 地址信息。然后我在 /etc/sysconfig/network-scripts 中构建了一个 br2 接口,并为其填充了一个 IP 地址和主机的子网。在那里,我还将 GATEWAY=123.1.2.3(经过清理的 IP)设置为系统中唯一的网关,并且我添加了 DEFROUTE=yes。有了这个设置,我可以从 kvm 主机 ping 网关 123.1.2.3,但除此之外什么也做不了。 (使用 'ping 123.1.2.3 -I br2')。

我知道我需要在每个来宾连接下的 kvm virt-manager 中构建一个虚拟网络,但是当我这样做时,没有任何改变。迷雾开始了,我有大约 4 种方法,none 可以尝试桥接或水龙头让来宾连接到主机桥。

看来我在主机上有一个基本的网络问题,我无法通过默认网关,然后来宾和主机之间的其他问题似乎不在网桥上,并且除了他们自己的 IP 地址外,什么都看不到。

我相信以前有人配置过这样的场景,如果他们能给出一个分解步骤的详细示例,我将不胜感激。

我经过大量的努力才弄明白这一点,所以这不是一个死胡同,这是我经过大量搜索后找到的解决方案。设计发生了变化,因为最终似乎更合乎逻辑的是在所有接口上标记所有内容,而不是让其中一个物理接口不标记,以实现最大的未来灵活性。

首先,您从没有配置网络的基本 CentOS 负载开始。
请勿触摸 /etc/sysconfig/network-scripts/(还)

那么,举个例子:

假设有两个标记为 em1 和 em2 的 em 接口。 em1 和 em2 连接到支持 802.1q vlan 标记的以太网交换机上的中继端口。

在没有先前网络配置的主机的全新安装中,您应该只能看到两个没有网络配置的 em 接口。

**** 此时不要在 /etc/sysconfig/network-scripts 中编辑或设置任何 IFCFG 文件 **** 设计:

For 2 ports and 4 vlans:
em1 (or first int) outside / vlan 10
em2 (or second int) inside / vlans 20, 30 & 40
vlan 10 (Public Network - 10.0.0.128/27) 
vlan 20 (Private Network - 192.168.1.0/24)
vlan 30 (Private Network - 192.168.2.0/24) 
vlan 40 (Private Network - 192.168.3.0/24)

Create 4 vlan based bridges:
nmcli con add type bridge autoconnect yes con-name virbr10 ifname virbr10 bridge.stp no
nmcli con add type bridge autoconnect yes con-name virbr20 ifname virbr20 bridge.stp no 
nmcli con add type bridge autoconnect yes con-name virbr30 ifname virbr30 bridge.stp no
nmcli con add type bridge autoconnect yes con-name virbr40 ifname virbr40 bridge.stp no
    
Configure the virtual bridges with ip information:
nmcli con modify virbr10 ipv4.addresses 10.0.0.150/27 ipv4.method manual
nmcli con modify virbr20 ipv4.addresses 192.168.1.29/24 ipv4.method manual
nmcli con modify virbr30 ipv4.addresses 192.168.2.60/24 ipv4.method manual
nmcli con modify virbr40 ipv4.addresses 192.168.3.15/24 ipv4.method manua
    
Add a vlan to the bridges:
nmcli con add type vlan autoconnect yes con-name em1.10 dev em1 id 10 master virbr10
nmcli con add type vlan autoconnect yes con-name em2.20 dev em2 id 20 master virbr20
nmcli con add type vlan autoconnect yes con-name em2.30 dev em2 id 30 master virbr30
nmcli con add type vlan autoconnect yes con-name em2.40 dev em2 id 40 master virbr40

Configure hypervisor gateway dns and hostname:
nmcli con modify virbr10 ipv4.gateway 10.0.0.129
nmcli con modify virbr10 ipv4.dns "10.0.0.140 10.0.0.141"
nmcli general hostname myserver@mydomain.com
    
Add a route to get to a inside host if desired:
nmcli connection modify virbr20 +ipv4.routes "10.1.110.0/24 192.168.1.1"
    

这应该创建 4 个网桥接口和 4 个连接到网桥接口的 vlan 接口。

Turn on the bridges:
nmcli con up virbr10
nmcli con up virbr20
nmcli con up virbr30
nmcli con up virbr40
nmcli con show
    
Use ip command to view the IP settings:
ip a s
    
show more info on the interfaces:
nmcli -p con show virbr10
nmcli -p con show virbr20
nmcli -p con show virbr30
nmcli -p con show virbr40
    

重要提示:对于基本接口(em1、em2 等),必须在 /etc/sysconfig/network-scripts 中对参数进行一些额外的更改才能出现。 将任何设置为 'yes' 的 ipv6 参数更改为 'no'。设置 BOOTPROTO=none 和 ONBOOT=yes。 重启网络。 如果有任何问题,请检查 ifcfg 文件中的 onboot 和其他所需设置。 确保所有结果都为:

nmcli dev status

DEVICE   TYPE      STATE      CONNECTION 
virbr10  bridge    connected  virbr10    
virbr20  bridge    connected  virbr20
virbr30  bridge    connected  virbr30    
virbr40  bridge    connected  virbr40    
em1      ethernet  connected  em1        
em2      ethernet  connected  em2        
em1.10   vlan      connected  em1.10     
em2.20   vlan      connected  em2.20
em2.30   vlan      connected  em2.30    
em2.40   vlan      connected  em2.40     
lo       loopback  unmanaged  -- 

这里有一些与 KVM 和 virt-manager 相关的附加信息,这些信息不是很明显,第一次看到时可能会很棘手:

在建立桥梁之后安装KVM时,选择用于Virt-Manager接口时,它们以'Virtual Network Interface'作为网络来源显示:指定带有桥接名称的共享设备名称=“ VirBr10” (无论设置为网桥名称)和设备型号:virtio(始终将此设备用于 vlan)

安装 KVM 后构建网桥时,它们在 'Virtual Network Interface' 中显示为网络源:网桥 virbr10:主机设备 vnet1 和设备型号:virtio

在安装 KVM 后构建网桥时,看起来会很混乱。