“bridge vlan add”中的“self”和“master”选项是什么?

2c9*_*2c9 6 linux bridge vlan

我正在读“人桥”,它是这样写的:

bridge vlan { add | del } dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]
Run Code Online (Sandbox Code Playgroud)

“自我”和“主”选项有什么用?

男人说:

self   the vlan is configured on the specified physical device. Required if the device is the bridge device.
master the vlan is configured on the software bridge (default).
Run Code Online (Sandbox Code Playgroud)

谁能详细说明一下吗?

据我了解,“self”适用于“br0.10”等虚拟接口,让网桥(br0)知道接收到的帧可以用于它。正确的?

kay*_*bey 0

是的,自我是为了桥梁。VLAN 被分配给桥接接口。
master 用于从属于桥接口的接口。您无需声明关键字 master,因为它是默认值。

创建桥梁

/ # ip link add br0 type bridge  vlan_filtering 1
/ # ip link set br0 up
/ # bridge vlan
port    vlan ids
br0  1 PVID Egress Untagged
Run Code Online (Sandbox Code Playgroud)

添加 VLAN

/ # bridge vlan add dev br0 vid 10 self
/ # bridge vlan add dev br0 vid 20 self
/ # bridge vlan add dev br0 vid 30 self
/ # 
/ # bridge vlan
port    vlan ids
br0  1 PVID Egress Untagged
     10
     20
     30
Run Code Online (Sandbox Code Playgroud)

将 eth 接口添加为桥接的从接口

/ # ip link set eth0 master br0
/ # ip link set eth1 master br0
/ # ip link set eth2 master br0
/ # bridge vlan
port    vlan ids
eth0     1 PVID Egress Untagged

eth1     1 PVID Egress Untagged

eth2     1 PVID Egress Untagged

br0  1 PVID Egress Untagged
     10
     20
     30
Run Code Online (Sandbox Code Playgroud)

从接口中清除默认 VLAN

/ # bridge vlan del dev eth0 vid 1
/ # bridge vlan del dev eth1 vid 1
/ # bridge vlan del dev eth2 vid 1
/ # bridge vlan
port    vlan ids
eth0    None
eth1    None
eth2    None
br0  1 PVID Egress Untagged
     10
     20
     30
Run Code Online (Sandbox Code Playgroud)

将必要的 VLAN 添加到端口

/ # bridge vlan add dev eth0 vid 10 pvid untagged master
/ # bridge vlan add dev eth1 vid 20 pvid untagged master
/ # bridge vlan add dev eth2 vid 30 pvid untagged
/ # bridge vlan
port    vlan ids
eth0     10 PVID Egress Untagged

eth1     20 PVID Egress Untagged

eth2     30 PVID Egress Untagged

br0  1 PVID Egress Untagged
     10
     20
     30
Run Code Online (Sandbox Code Playgroud)

如您所见,我对 eth0 和 eth1 使用了 master 关键字,但没有对 eth2 使用了 master 关键字,并且它没有改变结果。