我有一个连接到网桥的以太网端口:
$ brctl show
bridge name bridge id STP enabled interfaces
eth0_bridge 8000.6a612bcc4723 yes eth0
网桥可识别 VLAN(即/sys/class/net/eth0_bridge/bridge/vlan_filtering
)1
。我希望能够将其他接口添加到该网桥并为其分配 VLAN,如下所示:
ip link set eth1 master eth0_bridge
bridge vlan add dev eth1 vid 10 pvid untagged
这应该将 eth1 上的未标记流量连接到 eth0 上的 VLAN 10。但没有流量通过,直到我:
bridge vlan add dev eth0 vid 10
完成此操作后,一切都会按需要进行。但是有没有办法告诉它这是网桥上应该承载的eth0
中继端口eth0_bridge
全部VLAN,然后在网桥的出口上进行 VLAN 过滤?
答案1
当使用bridge vlan
命令,您可以一次性添加(或删除)一系列 VLAN ID。例如:
# bridge vlan add vid 2-4094 dev eth0
将所有可用的 VLAN 添加到中继接口以太网0(0 和 4095 在协议中保留,不能(也不能)使用,1 默认设置为 PVID 未标记的 VLAN ID,因此应该避免,或者最好删除)。
# bridge vlan show dev eth0
eth0 1 PVID Egress Untagged
2
3
[...]
4093
4094
# bridge -c vlan show dev eth0
port vlan ids
eth0 1 PVID Egress Untagged
2-4094
这里-c
代表-c[ompressvlans]
而不是-c[olor]
:桥手册页(至少到 iproute2-ss191125)完全缺乏有关此选项的信息。
删除范围正如人们所期望的那样:
# bridge vlan del vid 100-200 dev eth0
# bridge -c vlan show
port vlan ids
bridge0 1 PVID Egress Untagged
eth1 1 Egress Untagged
10 PVID Egress Untagged
eth0 1 PVID Egress Untagged
2-99
201-4094
在内部,所有内容都使用 (散列的) 各个 VLAN 的列表。
注1
Cumulus Networks(已知主要在其网络设备上使用 Linux 的本机网络堆栈)有一些老的(和较新的)有关此的示例:
考虑以下桥接示例:
auto bridge iface bridge bridge-vlan-aware yes bridge-ports swp1 swp9 bridge-vids 2-100 bridge-pvid 101 bridge-stp on
以下是该配置的 VLAN 成员身份:
cumulus@switch$ bridge -c vlan show portvlan ids swp1 101 PVID Egress Untagged 2-100 swp9 101 PVID Egress Untagged 2-100 bridge 101
使用的配置文件是接口来自 ifupdown2 的文件(及其插件),实际上由 Cumulus Networks 开发来取代如果向上向下,具有大部分兼容的语法,但大大改进了桥接和 VLAN 支持。
笔记2
我没有发现任何特殊标志自动将所有 VLAN 淹没到桥接端口的证据。这内核提交告诉 VID 4095 在 IEEE 802.1Q 中记录有限制但允许使用用于管理操作作为VID的通配符匹配,但Linux似乎没有使用这种方法。