V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OOPOK
V2EX  ›  路由器

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

  •  1
     
  •   OOPOK · 2023-05-17 18:38:06 +08:00 · 1093 次点击
    这是一个创建于 581 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因是我想隔离家中的访客网络 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 的功能有点像我遇到的情况,不过启用之后发现并没有卵用。反正来来回回研究了一整天都没有解决,现在唯一能想到的方法,就是通过网关转发访客局域网的流量,不过这也太傻了吧。。。

    4 条回复    2023-05-22 14:45:20 +08:00
    billlee
        1
    billlee  
       2023-05-17 20:05:06 +08:00
    WLAN 的设备隔离应该是由 hostapd 控制的,和 linux bridge 关系不大。
    OOPOK
        2
    OOPOK  
    OP
       2023-05-19 06:02:32 +08:00
    @billlee 可能是吧,不过我研究了半天也没找到相关配置,反倒是发现了个很离谱的现象,我用 brctl 把 wl0.1 挪回到 br0 后无线设备又通了,再挪到 br1 又不通了,搞不懂是什么原理
    makusuofute
        3
    makusuofute  
       2023-05-22 12:35:25 +08:00
    你还不如 SSID 区分 2 个 对应不同 vlan
    直接在网关上做隔离算了
    OOPOK
        4
    OOPOK  
    OP
       2023-05-22 14:45:20 +08:00 via Android
    @makusuofute 现在就是两个 SSID 对应不同 VLAN ,wl0.1 是 Asus 为访客 SSID 创建的虚拟设备。目前网关的配置没问题,只是 wl0.1 下的设备在链路层不能互通
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1171 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:11 · PVG 02:11 · LAX 10:11 · JFK 13:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.