分类
嵌入式开发

无线网桥的技术原理,以及如何把两台运行openwrt的无线路由器变成网桥?

可以将无线网桥想象成一根“看不见的超长网线”。它的核心任务就是将两个或多个相互独立的有线局域网(LAN)通过无线方式连接起来,让它们感觉就像在同一个网络里一样。

核心工作原理:二层桥接 (Layer 2 Bridging)

这是理解无线网桥最关键的一点。无线网桥工作在OSI网络模型的第二层——数据链路层(Data Link Layer)

  1. 处理MAC地址,而非IP地址
    • 在数据链路层,网络设备识别的是MAC地址(物理地址),而不是第三层(网络层)的IP地址。
    • 当一个数据包(在第二层称为“帧”)到达网桥A时,网桥A会查看这个帧的目标MAC地址。
    • 它不会关心这个数据包的IP地址是什么,要去哪里。它只关心“这个MAC地址在我这边的网络里,还是需要传到对岸去?”
  2. 透明传输 (Transparent Bridging)
    • 网桥A通过它的以太网口接收到一个数据帧。
    • 它将这个数据帧打包成无线信号,通过天线发送给远端的网桥B。
    • 网桥B接收到这个无线信号,再把它解包还原成原始的数据帧。
    • 最后,网桥B通过自己的以太网口,将这个数据帧发送到它所连接的局域网中。

在这个过程中,对于两端网络里的计算机、服务器或摄像头来说,它们完全感觉不到中间经过了无线传输。它们会认为自己是连接在同一个交换机上。因此,这个过程是“透明的”。两端的设备可以自由地进行广播、发现,就像在一个大的局域网内一样。

优化的无线传输协议 (Optimized Wireless Protocols)

标准Wi-Fi使用的协议是CSMA/CA(载波侦听多路访问/冲突避免),这是一种“先听再说,礼貌谦让”的机制,在多用户环境下效率尚可,但在点对点的长距离传输中效率低下,容易因延迟导致性能下降。

许多专业的无线网桥厂商(如Ubiquiti, MikroTik)会使用私有的轮询协议TDMA (Time Division Multiple Access – 时分多址)协议。

TDMA原理:将通信时间划分为一个个微小的时间片(Time Slot),每个客户端设备被分配一个固定的时间片来发送和接收数据。这就像一个严格的交通调度系统,避免了数据“碰撞”和“争抢”,大大提高了远距离传输的稳定性和吞吐量,尤其是在有多个设备连接(点对多点)的场景下。

无线网桥通常有两种主要的工作模式:

  1. 点对点 (Point-to-Point, P2P)
    • 这是最常见的模式,就像一座桥连接河的两岸。用两个网桥设备,一个设置为AP(接入点)模式,另一个设置为Station(客户端)模式,将两个位置的网络连接起来。
    • 应用场景:连接公司A、B两栋办公楼的网络;将主屋的网络延伸到远处的仓库或车库。
  2. 点对多点 (Point-to-Multipoint, P2MP)
    • 一个中心点的网桥(设置为AP模式)同时与多个远端点的网桥(设置为Station模式)进行通信。形成一个星型拓扑结构。
    • 应用场景:无线监控系统中,一个中心监控室连接分布在厂区不同角落的多个摄像头;无线ISP(互联网服务提供商)为一个小区的多户家庭提供无线宽带接入。

使用两台 OpenWrt 路由器来达成这个目标是完全可行的,而且是 OpenWrt 的一大强项。

要实现你描述的“透明无缝连接”,最标准、最高效的方法是使用 WDS (Wireless Distribution System)。WDS 正是为此而生的技术,它可以在数据链路层(第二层)上无线地连接多个接入点,创建一个单一的、统一的局域网。

下面是详细的配置步骤,我们将两台路由器分别称为 主路由A (AP-WDS)从路由B (Client-WDS)


场景设定

  • 主路由A:连接到互联网或主交换机。它的局域网IP是 192.168.1.1。它将作为WDS的接入点(Access Point)。
  • 从路由B:放置在远程位置,用于扩展网络。它将作为WDS的客户端(Station/Client)。
  • 目标:将有线设备(如电脑、摄像头)插入从路由B的LAN口,该设备能自动从主路由A的DHCP服务器获取 192.168.1.x 网段的IP地址,并与主路由A网络内的所有设备无障碍通信。

配置步骤

第一步:配置主路由A (AP-WDS)

  1. 登录主路由A的OpenWrt界面。
  2. 导航到“网络” -> “无线”。
  3. 找到你打算用来桥接的无线频段(通常推荐5GHz,干扰少,速度快),点击“修改”。

  4. 配置“接口配置” -> “基本设置”:

    • 模式 (Mode):选择 Access Point (WDS)。这是最关键的一步!
    • SSID:给你的桥接网络起一个名字,例如 MyBridgeLink
    • 网络 (Network):确保这个无线接口被勾选并分配到 lan 网络。这会将无线流量桥接到有线局域网。
  5. 配置“无线安全”:
    • 加密 (Encryption):强烈推荐选择 WPA2-PSK 或 WPA3-SAE。
    • 密码 (Key):设置一个健壮的密码。从路由B必须使用完全相同的密码。
  6. (可选但推荐)固定信道:
    • 在“基本设置”中,将“信道 (Channel)”从 auto 改为一个固定的、干扰较少的信道。例如 36, 44, 149 等。这能增加连接的稳定性。
  7. 保存并应用配置。 点击右下角的“保存并应用”。

主路由A的配置到此完成。它现在是一个等待WDS客户端连接的AP。

第二步:配置从路由B (Client-WDS)

在开始配置前,请先用网线直连电脑和从路由B的LAN口。

  1. 修改LAN口IP地址(防止冲突):
    • 登录从路由B的OpenWrt界面。
    • 导航到“网络” -> “接口”。
    • 找到 lan 接口,点击“修改”。
    • 将其 IPv4 地址 修改为与主路由A同网段但不冲突的地址。例如,如果主路由A是 192.168.1.1,你可以将从路由B设置为 192.168.1.2
    • IPv4 网关DNS 都可以设置为主路由A的地址 192.168.1.1
    • 点击“保存”。
  2. 关闭DHCP服务:
    • lan 接口的修改页面,切换到 “DHCP服务器” 标签页。
    • 勾选 “忽略此接口” (Ignore interface)。我们不希望从路由B分配IP地址,所有IP都应由主路由A统一分配。
    • 点击“保存并应用”。路由器可能会提示配置已应用,之后你需要使用新的IP地址 192.168.1.2 重新登录。
  3. 配置无线连接:
    • 重新登录从路由B后,导航到“网络” -> “无线”。
    • 点击 “扫描” (Scan)
  4. 加入WDS网络:
    • 在扫描结果中,找到你之前在主路由A上创建的SSID(例如 MyBridgeLink),点击 “加入网络” (Join Network)
    • 在弹出的窗口中:
      • 输入密码:输入与主路由A上完全相同的WPA密码。
      • 模式 (Mode):系统通常会自动选择 Client,你需要手动将其改为 Client (WDS)。这同样是至关重要的一步!
      • 网络 (Network):确保这个新创建的无线客户端接口被分配到 lan 网络。
    • 点击“提交” (Submit)。
  5. 最终检查并应用:
    • 系统会返回到无线概览页面,确认刚才的配置。
    • 点击右下角的“保存并应用”。

第三步:验证配置是否成功

  1. 等待连接:等待约一分钟,让从路由B与主路由A建立WDS连接。
  2. 检查连接状态:在从路由B的“网络” -> “无线”页面,你应该能看到已连接到 MyBridgeLink,并显示信号强度、速率等信息。在主路由A的无线状态页面,也应该能看到从路由B作为WDS客户端连接上来。
  3. 最终测试
    • 取一台电脑,用网线连接到 从路由B 的任意一个LAN口。
    • 检查电脑的网络设置。它应该能自动获取到一个 192.168.1.x 的IP地址,并且网关是 192.168.1.1(主路由A的地址)。
    • 尝试 ping 192.168.1.1,应该能通。
    • 尝试打开网页,应该能正常上网。
    • 尝试访问主路由A网络下的其他设备(如NAS、打印机),应该也能正常访问。

如果以上测试全部通过,恭喜你!你已成功用两台OpenWrt路由器搭建了一个完美的二层无线网桥

重要提示和排错

  • 芯片兼容性:WDS并非一个完全标准化的协议,不同无线芯片厂商(如Atheros, MediaTek, Broadcom)之间的WDS实现可能存在兼容性问题。最佳实践是使用两台型号相同或至少无线芯片相同的路由器。
  • 性能:WDS连接会占用一部分无线带宽,实际吞吐量会低于理论值,但这对于实现二层透明桥接是最高效的方式。
  • 无法连接:如果连接失败,请检查:
    • SSID、加密方式、密码是否在两端完全一致。
    • 信道是否固定。
    • 两台路由器的距离是否过远,信号是否太弱。
    • 系统日志中是否有相关错误信息。
  • 替代方案 relayd:如果因为芯片不兼容等原因WDS无法正常工作,可以使用 relayd 软件包来实现一个“伪桥接”(Layer 2 NAT / ARP-Proxy)。它也能让客户端设备在同一IP网段,但它不是真正的二层透明桥接,可能会对某些依赖广播/多播的协议(如DLNA)造成影响。WDS是首选方案。

问题一:如果不用DHCP,接到路由器A与B上的设备如何通信?

答案是:完全可以,而且通信方式和它们连接在同一台物理交换机上完全一样。

这正是二层透明网桥的强大之处。网桥本身对IP地址(第三层)一无所知,它只负责传递数据帧(第二层)。DHCP只是一个自动分配IP地址的便捷服务,并不是设备间通信的必要前提。

在没有DHCP的环境下,你需要做的就是手动为所有设备配置静态IP地址

配置方法和通信原理:

假设你的网络规划如下:
* 网络地址192.168.1.0
* 子网掩码255.255.255.0
* 网关(主路由A)192.168.1.1

1. 手动配置设备:

  • 连接在主路由A上的电脑(PC-A)
    • IP 地址:192.168.1.10
    • 子网掩码:255.255.255.0
    • 默认网关:192.168.1.1 (如果需要上网)
    • DNS服务器:192.168.1.1 或其他公共DNS
  • 连接在从路由B上的摄像头(Camera-B)
    • IP 地址:192.168.1.50
    • 子网掩码:255.255.255.0
    • 默认网关:192.168.1.1 (如果需要远程访问)
    • DNS服务器:192.168.1.1

2. 通信流程(以PC-A访问Camera-B为例):

  1. 判断目标位置:PC-A(192.168.1.10)想访问 Camera-B(192.168.1.50)。它通过子网掩码判断出目标IP地址与自己在同一个局域网内。
  2. ARP请求(寻找物理地址):由于PC-A不知道192.168.1.50这个IP地址对应的MAC地址,它会在网络中发送一个ARP广播请求:“谁是192.168.1.50?请告诉我你的MAC地址。”
  3. 数据帧的透明传输
    • 这个ARP广播帧到达主路由A。
    • 主路由A通过WDS链路,将这个广播帧原封不动地打包成无线信号发送给从路由B。
    • 从路由B接收到无线信号,将其解包还原成原始的ARP广播帧。
    • 从路由B将这个广播帧通过它的LAN口发送出去。
  4. ARP响应:Camera-B收到了这个广播请求,发现是在找自己,于是它会发送一个ARP单播响应:“我是192.168.1.50,我的MAC地址是 XX:XX:XX:XX:XX:XX。”
  5. 响应帧的透明回传:这个响应帧通过从路由B -> WDS无线链路 -> 主路由A,最终到达PC-A。
  6. 建立直接通信:现在PC-A知道了Camera-B的MAC地址,它就可以将数据直接封装成目标MAC为Camera-B的数据帧,通过网桥发送过去。反之亦然。

结论:只要所有设备被手动配置在同一个IP子网内,它们之间的通信就完全没有问题。WDS网桥就像一根“看不见的网线”,忠实地传递着所有二层数据,包括ARP请求/响应、单播、广播等。


问题二:是否支持组播协议(Multicast)?

答案是:绝对支持!这正是W-D-S这种真-二-层-桥-接方案远优于relayd等“伪桥接”方案的核心优势之一。

为什么支持?

因为WDS创建的是一个统一的广播域(Broadcast Domain)。在二层网络中,组播(Multicast)和广播(Broadcast)在很多情况下是被同样处理的——即泛洪(Flooding)到除了来源端口之外的所有端口。

  • 当一个设备(例如你的手机)发送一个组播包(比如用于发现网络中的DLNA媒体服务器)时,这个数据帧的目标MAC地址是一个特殊的组播MAC地址。
  • 主路由A的br-lan网桥接口收到这个组播帧后,会将其转发给所有桥接成员,其中就包括了WDS无线链路。
  • 这个组播帧通过无线被发送到从路由B。
  • 从路由B的br-lan接口收到后,会再将其转发给连接在它上面的所有有线和无线设备。

因此,在从路由B网络内的DLNA客户端,就能顺利发现主路由A网络内的DLNA服务器。

常见的依赖组播的应用:

  • DLNA / UPnP:在局域网内发现和串流媒体文件。
  • mDNS (Bonjour):苹果设备(iPhone, Mac)和很多打印机用来互相发现的服务。
  • IPTV:很多运营商的电视盒子使用组播来传输直播电视流,以节省带宽。
  • 设备发现协议:很多摄像头、智能家居设备的App都是通过组播来发现局域网内的硬件。
  • 在线游戏:一些局域网联机游戏使用组播来同步玩家状态。

优化:IGMP Snooping

为了避免组播流量无谓地塞满整个网络(尤其是宝贵的无线带宽),现代交换机和像OpenWrt这样的高级固件都支持 IGMP Snooping 功能。

  • 作用:网桥(br-lan)会“偷听”网络中的IGMP(Internet Group Management Protocol)消息。通过这些消息,网桥能知道哪个端口下的哪个设备真正需要接收某个特定的组播流。
  • 效果:当一个组播包到达时,网桥不再盲目地泛洪到所有端口,而是只精确地转发给那些已经“订阅”了该组播组的端口。
  • 在OpenWrt中br-lan接口默认启用了IGMP Snooping。这通常是好事,它能显著提升网络效率。你的WDS链路也会因此受益,只有在对岸确实有设备需要某个组播流时,该流量才会被传输过去。

结论:一个正确配置的OpenWrt WDS网桥,不仅完全支持组播,还能通过IGMP Snooping对其进行优化,确保网络高效稳定。这使得它非常适合用于构建复杂的、功能丰富的家庭或办公网络,无缝支持各种现代网络应用。