Linux桥接两个具有多个VLAN的NIC并分配虚拟IP

Linux桥接两个具有多个VLAN的NIC并分配虚拟IP

我正在尝试对 Linux 桥接进行一些测试。我有一台带有两个 NIC(eth1/eth2)的服务器,我想将它们桥接在一起,使用多个 VLAN 标记并为每个 VLAN 中的虚拟接口分配一个 IP 以供我 ping。

我目前有这个:

ip link add br0 type bridge vlan_filtering 1
bridge vlan add dev br0 vid 1000 self
bridge vlan add dev br0 vid 1001 self
bridge vlan add dev eth1 vid 1000 pvid
bridge vlan add dev eth2 vid 1000 pvid
bridge vlan add dev eth1 vid 1001 pvid
bridge vlan add dev eth2 vid 1001 pvid

我觉得这座桥还不错

bash-5.0# bridge vlan
port    vlan ids
eth1     1000 PVID
         1001 PVID

eth2     1000 PVID
         1001 PVID

br0  1000 PVID
     1001 PVID

但是现在我想把可以 ping 到 vlan 1000 和 vlan1001 的东西放进去测试,试图用虚拟接口来做这件事,但似乎行不通

有什么建议吗?我认为桥接配置很好。我们希望所有内容都带有标签

答案1

我假设您的交换机端有一个中继模式,允许 VLAN 1000 和 1001 以及 LACP 端口通道?

如果您没有使用 netplan,这里有一个网络配置文件供您使用:

user@ubuntu-01:~$ cat /etc/network/interfaces

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

auto bond0
iface bond0 inet manual
         slaves eth0 eth1
         bond_mode 802.3ad
         bond_miimon 100

auto vlan1000
iface vlan1000 inet manual
         vlan_raw_device bond0

auto vlan1001
iface vlan1001 inet manual
         vlan_raw_device bond0

auto br1000
iface br1000 inet static
        bridge_ports vlan1000
        address 192.168.1.200
        netmask 255.255.255.0
        gateway 192.168.1.254
        dns-nameservers 8.8.8.8

auto xenbr1001
iface xenbr1001 inet manual
        bridge_ports vlan1001
#IP IF NEEDED
#otherwise you may assign this bridge to the related VMs, containers etc
        address 192.168.2.200
        netmask 255.255.255.0

要应用,只需使用 ifup:sudo ifup bond0; sudo ifup br1000; sudo ifup br1001;

或者

重启网络服务

或者

重启机器

答案2

简单的方法是使用 netplan。

我给你举一个如何使用 Netplan 配置 VLAN 的例子,要创建 VLAN 接口,你需要遵循以下基本步骤:

  1. 配置桥接接口,这是因为虚拟接口存在于同一个物理接口上
  2. 创建子接口来链接特定的VLAN。
  3. 配置每个子接口并分配给虚拟接口
  4. 将每个虚拟接口链接到 VLAN ID 和物理接口

network:
ethernets:
    # Disable DHCP to set IP address on interface enp6s0f0
    enp6s0f0:
        dhcp4: false
    # Disable DHCP to set IP address on interface enp6s0f1
    # Set Static IP Address.
    enp6s0f1:
        dhcp4: false
        addresses: [192.168.0.10/24]
        gateway4: 192.168.0.254
bridges:
     # Create Bridge br0 on enp6s0f0
     br0:
       # Allow Bridge interface get IP address from DHCP using VLAN 0 / not tag
       dhcp4: true
       dhcp6: false
       interfaces: [enp6s0f0]
     # Create Bridge br0.10
     br0.10:
       # Link br0.10 to Virtual Interface vlan.10 this is a name only
       interfaces: [vlan.10]
       # Set static IP address on Virtual Interface            
       addresses: [192.168.1.10/24]
       gateway4: 192.168.1.254
       nameservers:
         addresses:
          - 8.8.8.8
          - 8.8.4.4
       parameters:
              stp: false
              forward-delay: 0
     # Create Bridge interface br0.20
     br0.20:
       # Link br0.20 to Virtual Interface vlan.20 this is a name only
       interfaces: [vlan.20]
       parameters:
              stp: false
              forward-delay: 0

#Link virtual interface to VLAN
vlans:
      # Link virtual interface vlan.10 and VLAN 10
      vlan.10:
          link: enp6s0f0
          id: 10
      # Link virtual interface vlan.20 and VLAN 20
      vlan.20:
          link: enp6s0f0
          id: 20
version: 2

在此示例中,一些虚拟接口没有 IP 地址。如果需要设置 IP 地址,则可在子接口上设置br0.X

Netplan 文档

相关内容