利用功能简单的家用设备折腾 VLAN,似乎比想象中要折腾的多

2023-05-17 18:38:06 +08:00
 OOPOK

起因是我想隔离家中的访客网络 WIFI ,因为会接入很多第三方的硬件。设备是 Asus RT-AX56U 热血版,只当二层交换机用,另接软路由作为网关。由于我想把所有三层功能都放在软路由中统一管理,所以并不打算使用 Asus 的路由器模式,也就用不了 Asus 自带的访客设备隔离功能了,况且 Asus 自带的隔离功能跟我想要的也不太一样

其实这款设备的管理界面并不支持 VLAN 配置,经过反复搜索研究得知,他是用 Linux bridge 实现二层交换的,访客 WIFI 是 wl0.1 ,连接网关的接口是 eth0

admin@RT-AX56U_V2-7430:/# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.f02f74f27430       no              eth0
                                                        eth1
                                                        eth2
                                                        eth3
                                                        wl0.1

我想要做的是把来自 wl0.1 的数据标记上 VLAN ID ,并通过 eth0 发送到网关,实现访客网络隔离出一个独立的子网,于是我就在命令行中这样配置

ip link add link eth0 name eth0.10 type vlan id 10
ip link set eth0.10 up
brctl addbr br1
brctl addif br1 eth0.10
brctl delif br0 wl0.1
brctl addif br1 wl0.1
ip link set br1 up

执行完以上命令后是这样子的

admin@RT-AX56U_V2-7430:/# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.f02f74f27430       no              eth0
                                                        eth1
                                                        eth2
                                                        eth3
br1             8000.f02f74f27431       no              eth0.10
                                                        wl0.1

此时 wl0.1 下的设备已经能够成功跟网关通信,获取到 IP 并且也连上公网了。本来以为到这就结束了,结果突然发现,虽然 wl0.1 下的设备已经可以跟 eth0.10 通信,但是 wl0.1 自身的设备之间却无法通信了( wl0.1 下的设备无法互相 ping ,而通过网关就可以)。

我反复检查过了,在执行这段命令之前,wl0.1 下的设备是可以正常通信的,其他什么配置都没碰,路由表也检查过了没发现问题。研究半天发现一个叫 hairpin 的功能有点像我遇到的情况,不过启用之后发现并没有卵用。反正来来回回研究了一整天都没有解决,现在唯一能想到的方法,就是通过网关转发访客局域网的流量,不过这也太傻了吧。。。

1102 次点击
所在节点    路由器
4 条回复
billlee
2023-05-17 20:05:06 +08:00
WLAN 的设备隔离应该是由 hostapd 控制的,和 linux bridge 关系不大。
OOPOK
2023-05-19 06:02:32 +08:00
@billlee 可能是吧,不过我研究了半天也没找到相关配置,反倒是发现了个很离谱的现象,我用 brctl 把 wl0.1 挪回到 br0 后无线设备又通了,再挪到 br1 又不通了,搞不懂是什么原理
makusuofute
2023-05-22 12:35:25 +08:00
你还不如 SSID 区分 2 个 对应不同 vlan
直接在网关上做隔离算了
OOPOK
2023-05-22 14:45:20 +08:00
@makusuofute 现在就是两个 SSID 对应不同 VLAN ,wl0.1 是 Asus 为访客 SSID 创建的虚拟设备。目前网关的配置没问题,只是 wl0.1 下的设备在链路层不能互通

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/940773

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX