Linux bridge 在终端路由器中的实际应用——路由模式、桥接模式与 VLAN 桥接
Linux bridge 是终端路由器中最基础的网络组件之一——所有 LAN 口和 WiFi 接口能互通,就是因为它们都加在同一个 bridge 里。本文讲清 bridge 在路由模式、桥接模式、VLAN 桥接中的不同用法,以及实际开发中的注意事项。
1. Bridge 是什么
简单说,Linux bridge 就是一个软件交换机。
把多个网络接口加入同一个 bridge,它们就能互相通信——就像插在同一台交换机上一样。bridge 会学习 MAC 地址,根据目的 MAC 决定从哪个口转发。
在终端路由器中,典型的 bridge 配置:
# 创建一个 bridge brctl addbr br0 # 把 LAN 口和 WiFi 接口加入 bridge brctl addif br0 eth0 brctl addif br0 eth1 brctl addif br0 wlan0 # 给 bridge 配置 IP(这就是 LAN 侧的网关地址) ifconfig br0 192.168.1.1 up这样 eth0、eth1、wlan0 下面的设备就都在同一个局域网里,可以互相通信。
2. 三种工作模式
终端路由器通常有三种工作模式,它们对 bridge 的使用方式完全不同:
| 模式 | WAN 口 | LAN/WiFi | NAT | 典型场景 |
| 路由模式 | 不加入 bridge,独立工作 | 加入 br0 | 需要 | 最常见,家用上网 |
| 桥接 WAN 模式 | 加入 br0 | 加入 br0 | 不需要 | 透明桥接,不做 NAT |
| 纯桥接模式 | 不建 WAN,所有口都在 br0 | 加入 br0 | 不需要 | 当交换机用 |
3. 路由模式(最常见)
这是终端路由器最常见的工作模式。WAN 口不加 bridge,LAN/WiFi 加 bridge。
接口结构
wan0 ──────────── 独立接口(WAN 侧) │ ├── wan0.100 → ppp0 → NAT (MASQUERADE) │ br0 ──────────── 桥接接口(LAN 侧) ├── eth0 (LAN 口1) ├── eth1 (LAN 口2) ├── eth2 (LAN 口3) └── wlan0 (WiFi) │ IP: 192.168.1.1报文路径(STA 上网)
STA(手机)发出报文 │ ▼ wlan0 → br0(LAN 侧 bridge) │ ▼ 报文的目的 MAC 是 br0 的 MAC(网关) → 上送到 IP 层(三层转发) │ ▼ 路由决策 → 从 ppp0 出去 │ ▼ NAT (MASQUERADE) + PPPoE 封装 + VLAN 添加 │ ▼ wan0 发出LAN 内互访(同一 bridge 内)
STA1(手机) → wlan0 → br0 → eth0 → STA2(电脑) 纯二层转发,看 MAC 地址,不走 IP 层,不经过 NAT4. 桥接 WAN 模式
WAN 口也加入 bridge,设备变成一个“透明桥”,不做 NAT,不做路由,内网设备直接从运营商获取 IP。
接口结构
br0 ├── wan0 (WAN 口 —— 也加入了 bridge) ├── eth0 (LAN 口1) ├── eth1 (LAN 口2) └── wlan0 (WiFi)所有接口都在同一个 bridge 里,相当于一台大交换机。内网设备可以直接从运营商网络 DHCP 获取公网 IP。
与路由模式的区别
| 对比 | 路由模式 | 桥接 WAN 模式 |
| WAN 口位置 | 独立于 bridge 外 | 加入 bridge 内 |
| 内网 IP | 私网(192.168.x.x) | 直接从运营商获取 |
| NAT | 需要 | 不需要 |
| PPPoE | 路由器拨号 | 内网设备自己拨号(或直接 DHCP) |
| 用途 | 普通家用上网 | 透明接入、当交换机用 |
5. VLAN 桥接 WAN
这是一个很常见的场景:运营商的某个业务(比如 IPTV)需要桥接到 LAN 侧,但这个业务有自己的 VLAN。
场景举例
运营商要求:
- • 上网业务:VLAN 100,路由模式(PPPoE + NAT)
- • IPTV 业务:VLAN 200,桥接模式(透传给机顶盒)
接口结构
wan0 ├── wan0.100 → ppp0 → NAT (上网业务,路由模式) │ └── wan0.200 ──┬───────── (IPTV 业务,桥接模式) │ br_iptv │ ├── wan0.200 ┘ └── eth3 (连接机顶盒的 LAN 口) br0 (普通上网 bridge) ├── eth0 ├── eth1 └── wlan0 IP: 192.168.1.1配置步骤
# 1. 建 VLAN 子接口 # wan0.100 用于上网(路由模式) # wan0.200 用于 IPTV(桥接模式) # 2. 创建 IPTV bridge brctl addbr br_iptv # 3. 把 wan0.200 和机顶盒的 LAN 口加入 bridge brctl addif br_iptv wan0.200 brctl addif br_iptv eth3 # 4. 启动 ifconfig br_iptv up这样 IPTV 的组播流量就能从 WAN 口的 VLAN 200 直接透传到机顶盒,不经过路由和 NAT。
6. 模式切换:路由 WAN ↔ 桥接 WAN
在实际产品中,用户可能通过 Web 界面切换 WAN 口的工作模式。切换的本质是:
从路由 WAN 切换到桥接 WAN
1. 删除原来的路由 WAN 配置 ├── 断开 PPPoE 连接 ├── 删除 NAT 规则 ├── 删除 VLAN 子接口(如果有) └── 清除加速表和 conntrack 表 2. 建立新的桥接 WAN 配置 ├── 创建 VLAN 子接口(如 wan0.100) ├── 把 wan0.100 加入 br0 └── 所有接口都在同一个 bridge 里从桥接 WAN 切换到路由 WAN
1. 删除原来的桥接 WAN 配置 ├── 把 WAN 口从 bridge 中移除 └── 删除 VLAN 子接口 2. 建立新的路由 WAN 配置 ├── 创建 VLAN 子接口(如 wan0.100) ├── 在 wan0.100 上做 PPPoE 拨号 ├── 配置 NAT (MASQUERADE) └── LAN/WiFi 保持在 br0 里⚠️
模式切换时必须清加速表和 conntrack 表,否则旧的加速表项和 conntrack 记录会指向旧的接口结构,导致转发异常。
7. Bridge 与其他功能的关系
| 功能 | 与 bridge 的关系 |
| 报文转发 | bridge 内部是二层转发(看 MAC);bridge 到 WAN 口是三层转发(看 IP) |
| NAT | 路由模式下需要 NAT;桥接模式不需要 |
| VLAN | VLAN 子接口可以加入 bridge,实现 VLAN 桥接(如 IPTV 透传) |
| ebtables | ebtables 工作在 bridge 层,只对桥内报文生效 |
| 芯片加速 | 无论是 bridge 内的二层转发还是跨 bridge 的三层转发,都可以被加速 |
| per-STA 限速 | 限速的 ebtables 规则工作在 bridge 的 hook 点上 |
8. 常用的 bridge 管理命令
# 创建 bridge brctl addbr br0 # 添加接口到 bridge brctl addif br0 eth0 brctl addif br0 wlan0 # 从 bridge 中移除接口 brctl delif br0 eth0 # 删除 bridge ifconfig br0 down brctl delbr br0 # 查看 bridge 信息 brctl show # 输出类似: # bridge name bridge id STP enabled interfaces # br0 8000.aabbccddee01 no eth0 # eth1 # wlan0 # 查看 bridge 的 MAC 地址表 brctl showmacs br0 # 输出类似: # port no mac addr is local? ageing timer # 1 aa:bb:cc:dd:ee:01 yes 0.00 # 2 11:22:33:44:55:66 no 5.239. 开发实用建议
- 1.路由模式:WAN 口不加 bridge,LAN/WiFi 加 bridge——这是最基本的配置原则
- 2.桥接 WAN:WAN 口也加入 bridge,不做 NAT——用于透明接入场景
- 3.VLAN 桥接:VLAN 子接口加入单独的 bridge——用于 IPTV 等业务透传
- 4.模式切换时要清加速表和 conntrack——否则旧的转发规则会残留
- 5.用
brctl show和brctl showmacs调试——查看 bridge 里有哪些接口、MAC 表是否正确 - 6.注意 STP——终端路由器上通常关闭 STP(
brctl stp br0 off),因为家用场景不需要生成树,开着反而会导致启动时网络延迟 - 7.bridge 内的报文也能被加速——二层转发同样可以进芯片加速表
总结
| 要点 | 说明 |
| bridge 是什么 | 软件交换机,把多个接口加在一起,二层转发 |
| 路由模式 | WAN 独立,LAN/WiFi 加 br0,需要 NAT |
| 桥接 WAN | WAN 也加 br0,不做 NAT,透明接入 |
| VLAN 桥接 | VLAN 子接口加入单独 bridge,用于 IPTV 等业务透传 |
| 模式切换 | 删旧 WAN + 建新 WAN,必须清加速表和 conntrack |
作者按:Linux bridge 是终端路由器中最基础的网络组件。理解路由模式、桥接模式、VLAN 桥接的区别,对终端路由器开发和问题排查都很重要。
