OpenWrt 无线网络桥接

2024 年 12 月 27 日

这段时间一直在折腾家里的网络。把 Netgear R8500 换回主路由之后,顺便整理了一下家里的网络设备。除了换下来的 R5S,还有一台 Buffalo G450H 和一台 MiWifi mini,所有的设备都可以刷 OpenWrt。

考虑到家里的网络确实需要扩展无线,于是研究了一下如何用 OpenWrt 做无线网络桥接,一是可以扩展一下无线覆盖范围,二是将有线设备(我的打印机)接入无线网络,或是调试一些开发板。

重要的基本概念

首先,桥接的目的,是为了让接在子路由上的设备,可以像接在主路由的设备一样,获得同一个网段的 IP,并且可以互访

如果只是简单的将主路由 LAN 与子路由的 WAN 相连,那么得到的是一个子网,这样主路由的设备无法简单的连接子网里的设备。

接下来要理解 OpenWrt 的 Interface(接口)的概念。这是一个抽象概念。它不代表物理接口,只是代表 OpenWrt 中可以用来传递数据的连接器。具体可以参考对应的 OpenWrt 文档。比如说,一个无线网卡上可以同时挂多个接口,既可以作为无线 AP 接入点,同时也可以作为无线网络客户端(需要网卡驱动支持)。而所有的 LAN 口一般都只划到一个 lan 接口上。

顺便说一句,OpenWrt 配置起来之所以比较麻烦,关键在于它设计的通用性。它并不像大多数网络设备的固件那样,简化了使用方法的同时,也限制了可实现的功能。

无线桥接基本配置方法

无线桥接并不是只有一种配置方法,在 OpenWrt 的文档 中,给出了多种方案,比如 WDS 或是 Mesh。由于我这里都是老旧设备,因此采用了个人认为最稳妥的方法,也就是 RelayD 转发。

实际上,官方文档写的步骤非常详细了,完全可以一步步照做。所以这一部分我只是照着官方文档,列出所有步骤的核心要点。以下所有操作都是针对子路由的。

  1. 修改 LAN IP,避免与主路由的网段冲突。比如主路由是 192.168.1.1/24,那么 IP 可以改成 192.168.2.1/24。
    这个 IP 其实没什么用,只要网段不冲突,不干扰主路由就可以。
  2. 关闭 LAN 的 DHCP 服务,以及 IPv6 的 RA-Service 和 DHCPv6-Service。
    注意,经过这一步,如果重启了子路由,连接子路由的设备无法自动获得 IP,必须手动指定同网段 IP 才可以重新访问子路由。
  3. 在无线界面,选择想要使用的无线网卡,作为无线客户端,扫描并加入主路由网络。
    此时默认会得到一个 wwan 接口。注意防火墙区域选择 lan。
  4. 删除接口界面的 WAN 和 WAN6,以及防火墙界面的 wan=>[REJECT] 映射。这些都不再需要了。
  5. 修改 wwan 接口的协议为静态地址,指定一个主路由网络中的保留地址(比如 192.168.1.2),配置好网关和 DNS。
    此时应用之后,子路由的网络就应该通了。
  6. 安装 luci-proto-relay 包。如果更新软件列表有困难,可以参考清华源的设置方式。安装后需要重启。
  7. 在接口界面,手动添加新接口,命名为 repeater_bridge,协议选 Relay Bridge(即桥接)。
    如果看不到桥接协议,应该是安装包后忘记重启了。
  8. 修改 repeater_bridge 接口,本地 IPv4 地址设为刚才的保留地址(比如 192.168.1.2),勾选 lan 和 wwan 的转发。
  9. 回到无线界面,启用带 SSID 的无线 AP,按照需求设置加密方式和 SSID。
    这一步实际是可选的,如果你不需要无线的话,可以不设置。

上面所有步骤做完并应用后,子路由的 IPv4 网络已经通了。可以测试连在子路由的设备是否已经获得了主路由网段的 IP。

配置 IPv6

官方文档中对 IPv6 的说明不怎么详细,而且看起来似乎也不是太正确。所以我按照自己的做法配置。

  1. 接口界面,手动添加新接口,命名为 wwan6,协议选 DHCPv6 客户端,设备选 @wwan 的别名。
  2. 编辑 wwan6 接口,DHCP 服务器默认关闭,只调整 IPv6 设置。其中:
    1. Designated master(指定主接口)打勾。
    2. RA-Service / DHCPv6-Service / NDP-Proxy 全部选成 relay mode。
    3. 防火墙区域加入到 lan wwan 部分。
  3. 编辑 lan 接口,DHCP 服务器默认关闭,只调整 IPv6 设置,RA-Service / DHCPv6-Service / NDP-Proxy 全部选成 relay mode。

如果主路由设备正常,那么应用后,接到子路由的设备就可以获得 IPv6 地址了。

更新:

  1. 按照官方文档,似乎也可以把两个接口的 DHCPv6-Service 选成 Disabled,没看出明显影响。
  2. 官方文档中没有明确提到需要修改 repeater_bridge 接口的防火墙配置,但配置文件中似乎又有这条。没有看出此配置的明显影响。
Top