将 VLAN 添加到具有独特 mac 的接口 - 不同 Linux 发行版的不同语法

将 VLAN 添加到具有独特 mac 的接口 - 不同 Linux 发行版的不同语法

我需要将子接口添加到 VLAN 上的现有接口。此外,子接口必须有自己的 MAC 地址。通过手册页,我发现这个语法在 CentOS/RH 上运行良好:

/usr/sbin/ip link add link eth0 name eth0.1 address 00:11:22:33:44:5F type vlan id 1

通过谷歌搜索,我发现一些发行版使用关键字“macvlan”而不是“vlan”来执行此命令。有谁知道哪些 Linux 发行版使用 macvlan 关键字而不是 vlan 关键字?

答案1

您可以使用以下ip命令分配 VLAN MAC 地址:

# ip link add link <interface> name <vlan interface name> address <mac> type vlan id <vlan ID>

例子:

# ip link add link ens33 name myvlan123 address 00:0c:29:ed:ff:ff type vlan id 123

查看:

# ip a
....
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ed:ff:ea brd ff:ff:ff:ff:ff:ff
    inet 192.168.101.180/24 brd 192.168.101.255 scope global ens33
       valid_lft forever preferred_lft forever
3: myvlan123@ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:ed:ff:ff brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2fda:8335:9f2:b9c7/64 scope link 
       valid_lft forever preferred_lft forever

主界面是00:0c:29:ed:ff:ea,vlan 现在是00:0c:29:ed:ff:ff

您可以查看更多帮助:

# ip link help

另请检查您是否已加载 vlan 内核模块:

# lsmod | grep -i 8021q

某些发行版可能会以vlan名称命名。您可能还需要安装vlan8021q软件包(pacman、yum、apt、..)。

答案2

请注意,vlan 和 macvlan 是两个不同的东西。 vlan 是用于分隔广播域的通用标准 (802.1q)。这意味着您可以在物理网络上创建多个逻辑网络。所有使用的组件,包括网络交换机都需要兼容。

Macvlan 在 Linux 系统上用于提供独立的虚拟接口。这些可以在物理接口和 VLAN 接口上创建。 Macvlan 是非标准的,与其他网络设备无关。

首先,您应该创建 VLAN 接口,如示例中所示。之后,您应该添加一个或多个 macvlan 接口,如下所示:

ip link add macvlan1 link eth0.1 type macvlan
ip link add macvlan2 link eth0.1 type macvlan

使用ip link命令检查是否创建了新接口。如果是这样,您很可能应该使用以下ip addr命令分配 IP 地址并启动接口:

ip link set dev macvlan1 up
ip link set dev macvlan2 up

根据问题,我在示例中使用了 vlan 1。但请不要在生产环境中使用vlan 1;某些设备可以将此 id 解释为根本没有 VLAN。

Macvlan 在内核 2.6.23 中作为实验引入,在 3.9 中作为生产引入。 iproute2(ip 命令)包长期以来一直支持 macvlan,因此这应该适用于所有最新的 Linux 发行版,甚至包括 Red Hat 6。

相关内容