linux bridge vlan,Linux Bridge vlan filtering

本文介绍了Linux Bridge如何支持VLAN过滤功能,通过配置命令行实现VLAN划分,简化网络配置。详细讲解了`bridge vlan`命令的选项,并通过实例展示了如何在Ubuntu上创建Bridge,设置VLAN以及进行互ping验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux网桥支持vlan filtering过滤功能后,咱们不仔再须要经过子接口的形式进行vlan划分,简化了vlan配置。linux

1. bridge vlan说明

man bridge能够了解到,linux经过以下命令进行vlan filtering的配置:shell

bridge vlan { add | del } dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]

选项说明:ubuntu

pvid:端口的默认vlan,全部从该端口输入的没有携带vlan的报文,会被打上该vlan标签,该选项只对输入报文有效。ui

untagged:端口的untag vlan,输出报文携带该vlan时,会被剥离。code

通常状况下pvid和untagged是同时使用的,对应于cisco的switchport trunk native vlan接口

selfip

masterci

这两个选项在帮助手册上是这么解释的:terminal

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).

个人理解是:self表示该vlan是添加再bridge设备上的,并且给桥添加vlan时必须且只能携带该选项,不然会报错:it

ubuntu@VM-126-137-ubuntu:~$ sudo ip link add Bridge up type bridge vlan_filtering 1

ubuntu@VM-126-137-ubuntu:~/bgp-lab$ sudo bridge vlan add vid 100 dev Bridge self

ubuntu@VM-126-137-ubuntu:~/bgp-lab$

ubuntu@VM-126-137-ubuntu:~/$ sudo bridge vlan add vid 100 dev Bridge master

RTNETLINK answers: Operation not supported

ubuntu@VM-126-137-ubuntu:~/$ sudo bridge vlan add vid 100 dev Bridge

RTNETLINK answers: Operation not supported

ubuntu@VM-126-137-ubuntu:~/$

master表示该vlan是添加再bridge的端口设备上的,该选项是默认的,给桥上的端口添加vlan时能够不指定该参数。

ubuntu@ubuntu:~/$ sudo ip link del Bridge

ubuntu@ubuntu:~/$ sudo ip link add Bridge up type bridge vlan_filtering 1

ubuntu@ubuntu:~/$ sudo ip link set eth1 master Bridge

ubuntu@ubuntu:~/$ sudo bridge vlan add vid 100 dev Bridge self

ubuntu@ubuntu:~/$ sudo bridge vlan add vid 100 dev eth1

ubuntu@ubuntu:~/$ sudo bridge vlan add vid 100 dev eth1 master

ubuntu@ubuntu:~/$

ubuntu@ubuntu:~/$ sudo bridge vlan add vid 100 dev eth1 self

RTNETLINK answers: Operation not supported

ubuntu@ubuntu:~/$

ubuntu@ubuntu:~/$ sudo bridge vlan show

port vlan ids

eth1 1 PVID Egress Untagged

100

Bridge 1 PVID Egress Untagged

100

ubuntu@ubuntu:~/$

添加桥时,默认会以 pvid untagged形式添加的默认vlan 1中,不少厂商会把vlan 1做为保留vlan,不容许用户配置。

ubuntu@ubuntu:~/$ sudo ip link del Bridge

ubuntu@ubuntu:~/$ sudo bridge vlan show

port vlan ids

ubuntu@ubuntu:~/$ sudo ip link add Bridge up type bridge vlan_filtering 1

ubuntu@ubuntu:~/$ sudo bridge vlan show

port vlan ids

Bridge 1 PVID Egress Untagged

ubuntu@ubuntu:~/$

端口加入桥时,也会默认以 pvid untagged形式添加的默认vlan 1中,

ubuntu@ubuntu:~/$ sudo ip link del Bridge

ubuntu@ubuntu:~/$ sudo ip link add Bridge up type bridge vlan_filtering 1

ubuntu@ubuntu:~/$ sudo ip link set eth1 master Bridge

ubuntu@ubuntu:~/$ sudo bridge vlan show

port vlan ids

eth1 1 PVID Egress Untagged

Bridge 1 PVID Egress Untagged

ubuntu@ubuntu:~/$

也能够删除默认vlan 1

ubuntu@ubuntu:~/$ sudo bridge vlan del vid 1 dev enp4s0f0 master

ubuntu@ubuntu:~/$ sudo bridge vlan show

port vlan ids

enp129s0f0np0

enp129s0f1np1

enp4s0f0 100

Bridge 1 PVID Egress Untagged

100

ubuntu@ubuntu:~/$ sudo bridge vlan del vid 1 dev Bridge self

ubuntu@ubuntu:~/$ sudo bridge vlan show

port vlan ids

enp4s0f0 100

Bridge 100

ubuntu@ubuntu:~/$

2.实验

88eb40398f3e4e7a9988e6b6.html

2.1 ubuntu配置

ubuntu@ubuntu:~/$ sudo ip link add Bridge up type bridge vlan_filtering 1

ubuntu@ubuntu:~/$ sudo ip link set eth1 master Bridge

ubuntu@ubuntu:~/$ sudo bridge vlan add vid 100 dev Bridge self

ubuntu@ubuntu:~/$ sudo bridge vlan add vid 100 dev eth1 master

ubuntu@ubuntu:~/$ sudo ip link add link Bridge name Vlan100 up type vlan id 100

ubuntu@ubuntu:~/$ sudo ip addr add 10.0.2.1/24 dev Vlan100

ubuntu@ubuntu:~/$ sudo bridge vlan show

port vlan ids

eth1 1 PVID Egress Untagged

100

Bridge 1 PVID Egress Untagged

100

ubuntu@ubuntu:~/$

2.2 交换机配置

SWITCH# exit

SWITCH> enable

SWITCH# show vlan

+-----------+--------------+---------+----------------+-----------------------+

| VLAN ID | IP Address | Ports | Port Tagging | DHCP Helper Address |

+===========+==============+=========+================+=======================+

+-----------+--------------+---------+----------------+-----------------------+

SWITCH# configure terminal

SWITCH(config)# vlan 100

SWITCH(config)# interface eth25GE 47

SWITCH(config-if)# switchport mode

access trunk

SWITCH(config-if)# switchport mode trunk

SWITCH(config-if)# switchport trunk allowd vlan add 100

SWITCH(config-if)# exit

SWITCH(config)# interface vlan 100

SWITCH(config-if)# ip address 10.0.2.2/24

Add Vlan100 into default VRF

SWITCH(config-if)#

2.3 互ping

SWITCH(config-if)# do ping 10.0.2.1

PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data.

64 bytes from 10.0.2.1: icmp_seq=1 ttl=64 time=0.196 ms

64 bytes from 10.0.2.1: icmp_seq=2 ttl=64 time=0.219 ms

64 bytes from 10.0.2.1: icmp_seq=3 ttl=64 time=0.150 ms

^C

SWITCH(config-if)#

--- 10.0.2.1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2032ms

rtt min/avg/max/mdev = 0.150/0.188/0.219/0.030 ms

SWITCH(config-if)#

ubuntu@ubuntu:~/$ ping 10.0.2.2

PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.

64 bytes from 10.0.2.2: icmp_seq=1 ttl=64 time=0.308 ms

64 bytes from 10.0.2.2: icmp_seq=2 ttl=64 time=0.245 ms

64 bytes from 10.0.2.2: icmp_seq=3 ttl=64 time=0.262 ms

^C

--- 10.0.2.2 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2031ms

rtt min/avg/max/mdev = 0.245/0.271/0.308/0.032 ms

ubuntu@ubuntu:~/$

### ROS Trunk 接口 VLAN 41 和 43 的配置 在 RouterOS 中,要将某个物理接口(如 eth1 或 eth2)配置为 Trunk 模式,并允许通过特定的 VLAN(例如 VLAN 41 和 VLAN 43),需要按照以下步骤进行操作。 #### 步骤概述 首先创建一个桥接器并启用 VLAN 过滤功能。随后将目标接口加入到这个桥接器中,并定义哪些 VLAN 流量可以在这些接口上传输。 --- #### 创建桥接器并启用 VLAN 过滤 ```bash /interface bridge add name=br-trunk vlan-filtering=yes ``` 这条命令用于创建名为 `br-trunk` 的新桥接器,并开启 VLAN 过滤功能[^1]。 --- #### 添加接口到桥接器 假设您希望将 `eth1` 和 `eth2` 设置为 Trunk 接口: ```bash /interface bridge port add bridge=br-trunk interface=eth1 /interface bridge port add bridge=br-trunk interface=eth2 ``` 这两条命令分别将 `eth1` 和 `eth2` 加入到之前创建的桥接器 `br-trunk` 中[^1]。 --- #### 定义允许传输的 VLAN 为了让 `eth1` 和 `eth2` 能够传递 VLAN 41 和 VLAN 43 的流量,需要向桥接器的 VLAN 表中添加相应的规则: ```bash /interface bridge vlan add bridge=br-trunk tagged=eth1,eth2 vlan-ids=41 /interface bridge vlan add bridge=br-trunk tagged=eth1,eth2 vlan-ids=43 ``` 上述两条命令的作用是让 `eth1` 和 `eth2` 成为 Tagged Port,从而能够识别和转发带有 VLAN 41 和 VLAN 43 标记的数据帧[^2]。 --- #### (可选)设置未标记流量的行为 如果您希望通过 `eth1` 或 `eth2` 发送未经标记的流量,默认将其分配给某一个 VLAN(例如 VLAN 41),可以设置 PVID(Port VLAN ID): ```bash /interface bridge port set [find where interface="eth1"] pvid=41 /interface bridge port set [find where interface="eth2"] pvid=43 ``` 这样做的效果是,当有未标记的流量到达 `eth1` 或 `eth2` 时,它会被自动归属于对应的 VLAN[^1]。 --- #### 验证配置 完成以上配置后,可以通过以下命令查看当前的桥接器及其 VLAN 配置是否正确: ```bash /interface bridge print detail /interface bridge vlan print ``` --- #### 注意事项 - 确保所有涉及的硬件设备均支持 IEEE 802.1Q VLAN 功能。 - 如果下游设备也需要接收 Untagged 数据流,请合理规划 PVID 设置以避免冲突。 - 对于复杂的网络拓扑结构,建议先绘制逻辑图以便清晰理解每台设备的角色与职责。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值