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/WiFiNAT典型场景路由模式不加入 bridge独立工作加入 br0需要最常见家用上网桥接 WAN 模式加入 br0加入 br0不需要透明桥接不做 NAT纯桥接模式不建 WAN所有口都在 br0加入 br0不需要当交换机用3. 路由模式最常见这是终端路由器最常见的工作模式。WAN 口不加 bridgeLAN/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 → br0LAN 侧 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 切换到桥接 WAN1. 删除原来的路由 WAN 配置 ├── 断开 PPPoE 连接 ├── 删除 NAT 规则 ├── 删除 VLAN 子接口如果有 └── 清除加速表和 conntrack 表 2. 建立新的桥接 WAN 配置 ├── 创建 VLAN 子接口如 wan0.100 ├── 把 wan0.100 加入 br0 └── 所有接口都在同一个 bridge 里从桥接 WAN 切换到路由 WAN1. 删除原来的桥接 WAN 配置 ├── 把 WAN 口从 bridge 中移除 └── 删除 VLAN 子接口 2. 建立新的路由 WAN 配置 ├── 创建 VLAN 子接口如 wan0.100 ├── 在 wan0.100 上做 PPPoE 拨号 ├── 配置 NAT (MASQUERADE) └── LAN/WiFi 保持在 br0 里⚠️模式切换时必须清加速表和 conntrack 表否则旧的加速表项和 conntrack 记录会指向旧的接口结构导致转发异常。7. Bridge 与其他功能的关系功能与 bridge 的关系报文转发bridge 内部是二层转发看 MACbridge 到 WAN 口是三层转发看 IPNAT路由模式下需要 NAT桥接模式不需要VLANVLAN 子接口可以加入 bridge实现 VLAN 桥接如 IPTV 透传ebtablesebtables 工作在 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 口不加 bridgeLAN/WiFi 加 bridge——这是最基本的配置原则2.桥接 WANWAN 口也加入 bridge不做 NAT——用于透明接入场景3.VLAN 桥接VLAN 子接口加入单独的 bridge——用于 IPTV 等业务透传4.模式切换时要清加速表和 conntrack——否则旧的转发规则会残留5.用brctl show和brctl showmacs调试——查看 bridge 里有哪些接口、MAC 表是否正确6.注意 STP——终端路由器上通常关闭 STPbrctl stp br0 off因为家用场景不需要生成树开着反而会导致启动时网络延迟7.bridge 内的报文也能被加速——二层转发同样可以进芯片加速表总结要点说明bridge 是什么软件交换机把多个接口加在一起二层转发路由模式WAN 独立LAN/WiFi 加 br0需要 NAT桥接 WANWAN 也加 br0不做 NAT透明接入VLAN 桥接VLAN 子接口加入单独 bridge用于 IPTV 等业务透传模式切换删旧 WAN 建新 WAN必须清加速表和 conntrack作者按Linux bridge 是终端路由器中最基础的网络组件。理解路由模式、桥接模式、VLAN 桥接的区别对终端路由器开发和问题排查都很重要。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2545218.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!