Wi-Fi扩展器/中继器与RelayD
翻译自:https://openwrt.org/docs/guide-user/network/wifi/wifiextenders/relay_configuration?s[]=relayd
这篇文章描述了如何将OpenWrt路由器变成Wi-Fi扩展器/中继器。扩展器使用其一个无线电波段与主路由器进行“上行”Wi-Fi连接,并使用其其他无线电波段作为本地设备的AP(接入点)。然后,扩展器依靠relayd
包来桥接两个连接。
为了简便起见,本文从现在开始将使用“Wi-Fi扩展器”或“扩展器”一词。
在以下情况下使用此配置:当你无法控制主路由器,或者主路由器没有运行OpenWrt,或者主路由器不支持首选的无线中继/扩展器与WDS或802.11s 网络成型。
下图展示了正常的配置。图中右侧的是主路由器:它的LAN端口(192.168.1.1/24)为本地客户端服务,而它的WAN端口(未显示)则连接到互联网。左边的是Wi-Fi扩展器。它通过无线上行链路(标记为“W-LAN (客户端)”)与主路由器相连。Wi-Fi扩展器的其他无线电则作为本地设备的接入点。
有一个Youtube视频演示了这个过程:https://www.youtube.com/watch?v=Bfmx5NjIWLQ,该过程已在OpenWrt 23.05.3版本中进行了测试,该版本发布于2024年6月。
使用LuCI Web GUI进行设置
配置局域网接口
本文假设主路由器的地址是192.168.1.1(子网192.168.1.0/24),而“Wi-Fi扩展器子网”的地址是192.168.2.1(子网192.168.2.0/24)。这些子网必须是不同的。
- 移除Wi-Fi扩展器与主路由器之间的所有有线连接。
- 将一台电脑通过以太网连接到Wi-Fi扩展器的LAN端口,并在192.168.1.1(默认地址)登录LuCI网页界面。
- (可选)将Wi-Fi扩展器的固件更新至当前版本。
- 在 系统 → 备份/刷写固件 页面,点击 执行重置 按钮可恢复至默认的 OpenWrt 设置。
- 前往网络 → 接口,点击LAN接口旁的编辑
- 将局域网协议设置为静态地址,点击更改协议(下图)
- 使用“Wi-Fi扩展器子网”(例如192.168.2.1)分配一个IP地址。
- 点击保存
- 点击“保存并应用”
- 重新连接到扩展器的新IP地址(例如 192.168.2.1)
- 从网络 → 接口,点击编辑局域网接口
- 点击 DHCP Server 标签并禁用DHCP、IPv6 RA-Service和DHCP-v6 Service。操作步骤如下:
- 在通用设置标签页(下图所示),勾选“忽略接口”框以禁用该接口的DHCP功能。
- 在IPv6设置标签页(如下图),选择“禁用”RA-服务和DHCP-v6服务
- 点击保存。
- 点击“保存并应用”。
- 最后,将您电脑的以太网端口设置为在Wi-Fi扩展器的子网中使用静态IP(例如,192.168.2.10)以及默认网关(例如,192.168.2.1),然后使用以太网再次连接到扩展器。
配置Wi-Fi上行连接
中继器通常会有多个无线电频段可作为上行链路。根据您的环境选择最适合您的一个。5GHz(n/ac/ax)频段传输速度更快,但2.4GHz(b/g/n)频段的覆盖范围更远。
- 将你的电脑通过以太网线连接到Wi-Fi扩展器上。移除任何其它的物理连接。
- 导航至“网络 → 无线”页面
- 选择用于连接到主路由器的无线电频率。
- 点击扫描按钮来使用那个无线电。
- 从扫描结果中的SSID列表选择主路由器的Wi-Fi SSID,然后点击“加入网络”。
- 你将看到“加入网络”面板(下图)。
- 将“新网络的名称”设置为`wwan
- 请输入任何 Wi-Fi 凭证,例如 WPA 密码
- 选择lan防火墙区域。
- 点击保存。
- 点击“保存并应用”。
您将会看到客户端Wi-Fi设置页面(下图)。根据需要进行编辑。最重要的设置位于操作频率一行。
- 如果您正在连接到Wi-Fi g网络,请将模式设置为传统;如果您正在连接到Wi-Fi n网络(依此类推),请将其设置为N。
- 将宽度设置为与主路由器相同的信道宽度。
- 保持与扫描过程中发现的相同的Wi-Fi信道号。这将与主路由器相匹配。
- 完成后点击“保存”。
- 点击“保存并应用”。
移除多余的WAN接口和防火墙区域
虽然这是可选的,但建议删除多余的WAN接口和防火墙区域。
- 转到“网络 → 接口”(如下图)
- 删除
WAN
和WAN6
这两个接口。 - 转到 网络 > 防火墙(下图).
- 删除
wan
规则。 - 点击 保存 & 应用
**注意:**这些操作也将自动移除任何多余的防火墙流量和端口转发规则。
在"wwan"上添加静态IP地址
为新创建的wwan接口分配一个与主路由器LAN(例如192.168.1.30)同一子网中的静态IP地址。然后,你可以使用这个地址来管理路由器,该地址稍后在创建中继接口时也将使用。
- 转到“网络 → 接口”(如下图)
- 点击 编辑 来修改
wwan
接口设置
- 在“通用设置”选项卡上,将协议更改为“静态地址”(下图)。
- 输入一个来自主路由器局域网子网的IP地址(例如,192.168.1.30);一个子网掩码(例如,255.255.255.0);以及一个网关IP地址(例如,192.168.1.1)
- 在“高级设置”标签页(下图)
- 将使用自定义DNS服务器设置为主路由器的IP地址(例如,192.168.1.1)。
- 点击“保存”按钮
- 按下“保存并应用”
测试连接
此时,Wi-Fi扩展器应该已经无线连接到主路由器。要验证连接:
- 前往 网络 → 诊断(如下图)
- 通过点击“IPv4 Ping”按钮进行一次ping测试。
- 几刻钟后,如果主路由器连接到了互联网,你应该能看到ping的结果。
- 您没有提供任何内容进行翻译,请输入需要翻译的文本。
安装relayd包
- 转到系统 → 软件(如下图)
- 点击更新列表按钮。如果Wi-Fi扩展器已连接到主路由器,并且主路由器已连接到互联网,那么几分钟后,更新的结果将会显示出来。
- 在过滤框中输入 luci-proto-relay (下图所示),然后点击 安装。
- 当操作完成后,从系统 → 重启(下图)重启路由器。
添加中继接口
添加relayd
接口,该接口将在扩展器的lan和wwan接口之间进行桥接。为此:
- 转到网络 → 接口
- 点击 添加新接口(下图)
- 在添加新界面窗口中(下图)
- 输入一个名称(“repeater_bridge”是一个不错的选择)
- 选择下图所示的中继桥接协议。(如果中继桥接选项没有出现,请重启您的设备。)
- 点击 创建接口
- 在网络 → 接口中,点击新的“repeater_bridge”接口旁的编辑按钮(如下图)
- 确保协议为“中继桥”。
- 输入分配给
wwan
接口的IP地址。(例如:192.168.1.30) - 在“网络之间的中继”列表中选择lan和wwan。
- 点击保存。
- 点击“保存并应用”。
- 完成上述步骤后,请重启路由器。
启用AP(接入点);
启用并配置Wi-Fi扩展器作为本地设备的接入点。
您可以使用与主路由器相同的Wi-Fi网络名称(SSID)以及相同的加密、密码等设置。这样可以让无线设备在最佳的Wi-Fi网络之间自由漫游。或者,您也可以选择给Wi-Fi扩展器设置与主路由器不同的SSID/加密/密码凭据。
- 前往 网络 → 无线
- 点击任何标有“模式:主”的SSID旁边的编辑按钮。(不要编辑连接到主路由器的“模式:客户端”上行链接。)
- 在接口配置部分,配置SSID、安全性和其他参数,以便Wi-Fi扩展器可以像接入点一样工作。
- 如果您正在配置也用作上行链接的无线电,请确保操作频率保持不变。
- 点击保存
- 启用那个无线网络。
- 您可以编辑/启用其他无线电(例如,同时启用b/g/n和n/ac/ax等无线电)。
- 点击“保存并应用”。
你已完成!再进行更多测试
你已经完成了!Wi-Fi扩展器应该已经开始扩展你主路由器的网络了。将你的计算机切换回DHCP客户端模式,并连接到新配置的Wi-Fi。你的计算机应该已经完全接入互联网,并且从你主路由器那里获取了一个DHCP IP地址。
状态 → 概览 窗口(下图)显示最终结果。radio1
是主路由器的DHCP客户端。客户端Wi-Fi在 Host
列中有一个问号而不是IP地址,因为它的 wwan
IP地址只能在网络接口页面中看到。在下面的图片中,radio0
(接入点)还没有被配置/启用。但是它会显示你为扩展器配置的SSID。
使用命令行界面设置
在进行任何实际配置之前,必须启用 Wi-Fi 接口以便扫描附近的网络:
uci set wireless.@wifi-device[0].disabled="0"
uci commit wireless
wifi
- 将禁用选项设置为0(以启用无线)
- 保存更改后的配置文件
- 使用 wifi 命令启动无线连接
现在我们可以使用iw dev wlan0 scan
列出范围内的网络,如果你的无线接口名称不同,请将wlan0替换为实际的接口名称(ifconfig
列出所有可用的接口,以便找出你的无线局域网是如何命名的)。
iw dev wlan0 scan` output example:
# iw dev wlan0 scan
BSS c8:d5:fe:c8:61:b0(on wlan0) -- associated
TSF: 24324848870 usec (0d, 06:45:24)
freq: 2412
beacon interval: 100 TUs
capability: ESS (0x0411)
signal: -72.00 dBm
last seen: 140 ms ago
Information elements from Probe Response frame:
SSID: Violetta
RSN: * Version: 1
* Group cipher: CCMP
* Pairwise ciphers: CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
BSS f8:35:dd:eb:20:f8(on wlan0)
TSF: 24225790925 usec (0d, 06:43:45)
freq: 2457
beacon interval: 100 TUs
capability: ESS (0x0431)
signal: -90.00 dBm
last seen: 1450 ms ago
Information elements from Probe Response frame:
SSID: GOinternet_EB20FB
HT capabilities:
Capabilities: 0x11ee
HT20/HT40
SM Power Save disabled
RX HT20 SGI
RX HT40 SGI
TX STBC
RX STBC 1-stream
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 4 usec (0x05)
HT RX MCS rate indexes supported: 0-15, 32
HT TX MCS rate indexes are undefined
HT operation:
* primary channel: 10
* secondary channel offset: below
* STA channel width: any
RSN: * Version: 1
* Group cipher: TKIP
* Pairwise ciphers: TKIP CCMP
* Authentication suites: PSK
* Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)
在这个例子中,有两个网络,一个叫Violetta的Wi-Fi g网络和一个叫GOinternet_EB20FB的Wi-Fi n网络。该设备被配置为连接到名为Violetta的那个网络。
这些是配置过程中添加或更改的uci值。对于SSID、BSSID和加密,您必须使用上面的Wi-Fi扫描得到的信息。关于为什么这些值会被更改的解释,请阅读上面的luci教程。
network.lan.ipaddr='192.168.2.1'
network.repeater_bridge=interface
network.repeater_bridge.proto='relay'
network.repeater_bridge.network='lan wwan'
network.wwan=interface
network.wwan.proto='dhcp'
firewall.@zone[0].network='lan repeater_bridge wwan'
dhcp.lan.ignore='1'
wireless.radio0.hwmode='11g'
wireless.radio0.country='00'
wireless.radio0.channel='1'
wireless.radio0.disabled='0'
wireless.@wifi-iface[0]=wifi-iface
wireless.@wifi-iface[0].device='radio0'
wireless.@wifi-iface[0].mode='ap'
wireless.@wifi-iface[0].encryption='none'
wireless.@wifi-iface[0].ssid='OpenWrt'
wireless.@wifi-iface[0].network='lan'
wireless.@wifi-iface[1]=wifi-iface
wireless.@wifi-iface[1].network='wwan'
wireless.@wifi-iface[1].ssid='Violetta'
wireless.@wifi-iface[1].encryption='psk2'
wireless.@wifi-iface[1].device='radio0'
wireless.@wifi-iface[1].mode='sta'
wireless.@wifi-iface[1].bssid='C8:D5:FE:C8:61:B0'
wireless.@wifi-iface[1].key='myWifiPasswordHere'
请注意,在这个例子中设备生成的Wi-Fi网络(叫做OpenWrt)是没有密码和加密的。之所以这么做是因为本文的重点是搭建中继桥接。您可能会希望按照这里解释的Wi-Fi设置页面中的说明,以更安全的方式设置您的设备Wi-Fi网络。
网络细节
如果不需要桥接网络,你可以考虑使用简单无线客户端作为替代
relayd
的方法。Wi-Fi扩展器可以通过其静态wwan
IP 地址(例如,192.168.1.30)进行管理。
即便所有连接在Wi-Fi扩展器上的终端设备都会从主路由器的LAN子网获得DHCP地址,Wi-Fi扩展器的LAN接口必须处于不同的子网中,以便relayd能够工作(由于它需要路由交通,它预期有两个不同的子网)。
由于以太网端口和接入点Wi-Fi网络都在同一个LAN接口上,所有连接到Wi-Fi扩展器设备的以太网端口和接入点Wi-Fi网络的客户端都将通过relayd进行路由,并将连接到您的主网络。
LAN 接口子网将仅用作“管理”接口,因为连接到 Wi-Fi 中继器的设备将位于主网络的子网中。如果 relayd 设备变得无法访问,您将不得不配置一台 PC,为其设置与 LAN 接口同一子网中的静态地址(例如,在我们的例子中是192.168.2.10),以便能够连接并使用 LuCI GUI 或 SSH。
故障排除
访问扩展器
如果你发现Wi-Fi扩展器本身仅能通过直接连接到W-LAN AP的计算机访问,而不能通过连接到OpenWrt
W-LAN客户端的计算机访问,并且处于192.168.1.0子网中,请确保Relay bridge
接口中的Local IPv4 address
(本地IPv4地址)设置与无线上行链路的IP地址匹配。(另一种方法比较繁琐:如果你手动将计算机配置到该子网,可以通过OpenWrt盒子的192.168.2.1
地址访问。)
检查防火墙区域
![:!:]配置的以下部分本不应该是必要的。默认操作应该已经自动更改了它们。如果有什么不工作,请也检查这个。
添加IPv6支持
在你的主路由器上激活 IPv6 支持以获取公共 IPv6 前缀。在我们的 Wi-Fi 扩展器上激活 IPv6,以允许对你的公共 IPv6 地址进行无状态地址自动配置(SLAAC)以及处理 IPv6 流量。
-
前往“网络/接口”,创建一个新的接口。将其命名为
WWAN6
,使用DHCPv6协议,并覆盖WWAN接口。在新接口的“常用配置”中,配置:请求IPv6地址:禁用。在防火墙设置中:检查“lan / repeater bridge…”行是否被选中。保留其他默认设置,特别是,将“自定义委派IPv6前缀”字段留空。在“接口/概览”页面上检查WWAN接口是否获得了公共IPv6地址。 -
编辑
LAN
接口设置,DHCP服务器/IPv6设置:检查/修改以下设置:路由器通告服务:中继模式,DHCPv6服务:禁用,NDP-Proxy:中继模式。 -
在你的OpenWrt设备上开启一个SSH会话。执行以下命令:
uci set dhcp.wan.interface=wwan
uci set dhcp.wan.ra=relay
uci set dhcp.wan.ndp=relay
uci set dhcp.wan.master=1
uci commit
我们假设你在之前的指南中建议加入另一个Wi-Fi网络时选择了wwan
作为名称。如果不是,请相应地更改dhcp.wan.interface=…
这一行。
就是这样。重新启动ophcpd
(通过系统 → 启动或者执行service odhcpd restart
命令),你的IPv6网络应该会开始自行配置。连接的支持IPv6的设备应该会获取来自你公共IPv6前缀派生的公共IPv6地址,并且IPv6流量应该会通过你的Wi-Fi扩展器传输。
已知问题
以下是一些最近报告的问题清单:
- 由接入点引起的DHCP问题。OWrt论坛
- 极低的上行传输速度问题影响了一些MT762x设备。OpenWrt论坛 故障报告FS#2816
- 连接到relayd设备的设备无法被访问。 参考这个讨论 第二个可能类似的案例 参考这个讨论
- 无法在同一无线电频率上启用客户端和接入点(AP)
- 路由器后门附加指令,因为一旦在LAN上禁用了dhcp,路由器就变得无法访问。如果无线接入点有更改,可能会发生这种情况。例如,wifi
SSID、信道号或安全密码发生变化。
- 使用以太网缆线将计算机连接到Wifi桥的LAN端口。
- 在计算机上配置一个静态IP地址。例如,如果无线桥接在上述例子中使用的局域网IP地址为192.168.2.1,那么使用静态IP地址:192.168.2.10。
- 根据上述示例,在浏览器中访问192.168.2.1以进入LuCI界面。
- '''替代的relayd设置指南'''
- 替代的详细Relayd设置指令也可以在1-OpenWrt-LEDE安装指南HH5A的第9.10节中找到。
- 在macOS 10.15及以上版本上,当在局域网设置ULA前缀时,IPv6无法工作 https://github.com/openwrt/openwrt/issues/7561
使用NAT
**评论:**这看起来像是配置一个简单无线客户端的基本说明。
这种方法基本上是在第一个无线路由器上串接了一个第二个无线路由器;即通常这意味着扩展器的客户端将位于双重NAT之后。
就像用一根电缆将Wi-Fi扩展器的WAN端口与主路由器的LAN端口连接起来,Wi-Fi扩展器为自己和连接到它的设备创建了一个新的网络,这样就可以连接到互联网,并且访问主路由器的LAN网络中的设备。但在这种情况下,我们是通过无线网络来实现的。
前提条件:- 带有两个初始接口(局域网,广域网)的路由器
使用WebUI进行设置:
- 进入“网络 → 接口”页面,点击编辑局域网接口,
- 将局域网设置为静态IPv4地址192.168.x.1(其中x与您将通过Wi-Fi连接的网络不同),
- 进入网络 → Wi-Fi,点击扫描,选择“网络”链接,然后点击“加入网络”。
- 输入Wi-Fi密码,将“新网络名称”保留为“WWAN”并选择WWAN(或WAN)防火墙区域。点击保存。
- 进入网络 → 接口页面,点击编辑 wwan 接口,
- 移动到防火墙标签页。点击保存并应用。
- 进入网络 → 防火墙,点击wan区域的编辑,然后在“覆盖的网络”中勾选WAN和WWAN,点击保存并应用。
现在你已经正确地将WWAN与WAN进行了绑定,并因此将WWAN与LAN也绑定起来了。
可能过时
这部分收集了本文档前面所有不确定的声明和条款。任何仍然有效的应该移动到相关的部分。
按照本文的指导使用relayd并不能保证与所有兼容Openwrt的设备或wifi网络兼容 - 仅作为最后的手段使用。
如果两个设备都支持,可以考虑使用首选的无线中继器/扩展器与WDS或802.11s Mesh 网络。
如果需要支持虚拟局域网(VLAN),您可以使用第2层GRE隧道(“gretap”)。
最常见的问题是,客户端路由器无法在主路由器和连接到客户端路由器的客户端之间传递DHCP消息。目前看来似乎是硬件/SOC(系统芯片)的限制(与MAC克隆有关?)。
应该可以使用 kmod-trelay 来代替 relayd,关于如何使用它的唯一信息可以在其源代码中查看,如果你成功地使用了它,请在本文中添加一个相关部分。
在这篇文章中,您将看到如何配置您的设备以使其成为一个Wi-Fi扩展器/中继器/桥接器。
在某些情况下,OpenWrt中使用的无线驱动程序不支持在客户端模式下与特定的“上游”无线系统进行“第二层”桥接。当这种情况发生时,一种方法是将LAN和上游无线系统之间的流量进行路由。像DHCP这样的广播流量和mDNS之类的本地链接发现通常是不可路由的。
当其他选项不起作用时,relayd 包为 IPv4(仅限)实现了类似桥接的行为,包括 DHCP 和广播中继。这种配置可以通过 SSH(远程终端)或通过 Luci GUI 进行。
这张图片展示了一个示例设置。中继设备的LAN接口必须位于不同的子网上,中继功能才能工作(因为它需要路由流量,它预期有两个不同的子网)。
由于以太网端口和接入点Wi-Fi网络都在同一个LAN接口上,所有连接到Wi-Fi扩展器设备的以太网端口和接入点Wi-Fi网络的客户端都将通过relayd进行路由,并将连接到您的主网络。
LAN 接口子网将仅用作“管理”接口,因为连接到 Wi-Fi 中继器的设备将位于主网络的子网中。如果 relayd 设备变得无法访问,您将不得不配置一台 PC,为其设置与 LAN 接口同一子网中的静态地址(例如,在我们的例子中是192.168.2.10),以便能够连接并使用 LuCI GUI 或 SSH。