V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
0o0O0o0O0o
V2EX  ›  OpenWrt

单网口 OpenWrt 设置问题

  •  
  •   0o0O0o0O0o · 290 天前 · 1541 次点击
    这是一个创建于 290 天前的主题,其中的信息可能已经有所发展或是发生改变。

    路由器 A 的 Network - Switch 配置如下:

    VLAN ID CPU (eth0) CPU (eth1) LAN 1 LAN 2 WAN
    1 off tagged untagged untagged off
    2 tagged off off off untagged
    10 off tagged off off off

    VLAN 1 对应默认的 lan 和默认 wifi ,192.168.1.0/24 ;
    VLAN 10 对应访客 wifi ,192.168.10.0/24 。

    路由器 B 的 WAN 连接 A 的 LAN 1,配置静态 IP 192.168.1.2,禁用 DHCP Server 、防火墙、DNS ,配置默认 wifi ,当作 AP 。

    以上都没问题,现在想让 B 也具有访客 wifi ,该如何配置呢?

    B 只有一个物理网口,luci 里是没有 Network - Switch 的:

    config interface 'loopback'
     | option device 'lo'
     | option proto 'static'
     | option ipaddr '127.0.0.1'
     | option netmask '255.0.0.0'
    
    config device
     | option name 'br-lan'
     | option type 'bridge'
     | list ports 'lan'
    
    config interface 'lan'
     | option device 'br-lan'
     | option proto 'static'
     | option ipaddr '192.168.1.2'
     | option netmask '255.255.255.0'
     | option ip6assign '60'
     | option gateway '192.168.1.1'
    
    
    root@OpenWrt:~# ls -l /sys/class/net/
    lrwxrwxrwx    1 root     root             0 Jul 13 11:05 br-lan -> ../../devices/virtual/net/br-lan
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 eth0 -> ../../devices/platform/soc/c080000.ethernet/net/eth0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 lan -> ../../devices/platform/soc/c000000.switch/net/lan
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 lo -> ../../devices/virtual/net/lo
    lrwxrwxrwx    1 root     root             0 Jul 13 11:05 phy0-ap0 -> ../../devices/platform/soc/a000000.wifi/net/phy0-ap0
    lrwxrwxrwx    1 root     root             0 Jul 13 11:05 phy1-ap0 -> ../../devices/platform/soc/a800000.wifi/net/phy1-ap0
    

    尝试这样是会失去连接,只能 TFTP 刷机:

    set network.bridge_vlan_home='bridge-vlan'
    set network.bridge_vlan_home.device='br-lan'
    set network.bridge_vlan_home.vlan='1'
    set network.lan.device='br-lan.1'
    
    set network.bridge_vlan_guest='bridge-vlan'
    set network.bridge_vlan_guest.device='br-lan'
    set network.bridge_vlan_guest.vlan='3'
    
    set network.guest=interface
    set network.guest.proto='static'
    set network.guest.ipaddr='192.168.10.2'
    set network.guest.netmask='255.255.255.0'
    set network.guest.gateway='192.168.10.1'
    set network.guest.device='br-lan.3'
    
    第 1 条附言  ·  290 天前

    A 的 Switch 改成了:

    VLAN ID CPU (eth0) CPU (eth1) LAN 1 LAN 2 WAN
    1 off tagged tagged untagged off
    2 tagged off off off untagged
    10 off tagged tagged off off

    注意到 B 有个 ../../devices/platform/soc/c000000.switch/net/lan,尝试:

    config interface 'lan'
    	option device 'br-lan'
    	option proto 'static'
    	option ipaddr '192.168.1.2'
    	option netmask '255.255.255.0'
    	option ip6assign '60'
    	option gateway '192.168.1.1'
    
    config interface 'guest'
    	option device 'br-guest'
    	option proto 'static'
    	option ipaddr '192.168.10.2'
    	option netmask '255.255.255.0'
    	option gateway '192.168.10.1'
    
    config switch_vlan
    	option device 'lan'
    	option vlan '1'
    	option ports '0t'
    	option vid '1'
    
    config switch_vlan
    	option device 'lan'
    	option vlan '10'
    	option ports '0t'
    	option vid '10'
    
    config device
    	option name 'br-lan'
    	option type 'bridge'
    	list ports 'lan.1'
    
    config device
    	option name 'br-guest'
    	option type 'bridge'
    	list ports 'lan.10'
    

    这样配置后 ping 223.5.5.5 -I br-lan 是通的,但 ping 223.5.5.5 -I br-guest 依然不通,这是什么原因造成的?

    第 2 条附言  ·  290 天前




    VLAN ID CPU (eth0) CPU (eth1) LAN 1 LAN 2 WAN
    1 off tagged tagged untagged off
    2 tagged off off off untagged
    10 off tagged tagged tagged off
    config interface 'guest'
    	option device 'br-guest'
    	option proto 'static'
    	option ipaddr '192.168.10.2'
    	option netmask '255.255.255.0'
    	option gateway '192.168.10.1'
    
    config switch_vlan
    	option device 'lan'
    	option vlan '10'
    	option ports '0t 4t'
    	option vid '10'
    
    config device
    	option name 'br-guest'
    	option type 'bridge'
    	list ports 'lan.10'
    

    搜类似型号,找到个解决方案,把 ports 从 0t 改成了 0t 4t 就成功了,我也不知道这个 4t 代表什么。

    这样 VLAN 1 依然是 untagged,相当符合我的预期:

    • 任意设备网线直连 A 的 LAN 1,会是 VLAN 1
    • 连 B 的默认 wifi 是 VLAN 1
    • 连 B 的访客 wifi 是 VLAN 10
    第 3 条附言  ·  290 天前

    上面第2条附言的表格写错了,应该是

    VLAN ID CPU (eth0) CPU (eth1) LAN 1 LAN 2 WAN
    1 off tagged untagged untagged off
    2 tagged off off off untagged
    10 off tagged tagged tagged off
    17 条回复    2023-07-16 15:46:27 +08:00
    0o0O0o0O0o
        1
    0o0O0o0O0o  
    OP
       290 天前
    试图蒙一个:

    config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

    config switch_vlan
    option device 'switch0'
    option vlan '1'
    option ports '0t'
    option vid '1'

    config device
    option name 'br-lan'
    option type 'bridge'
    list ports 'eth0.1'

    不出意料又连不上了,又只能 TFTP
    neroxps
        2
    neroxps  
       290 天前
    既然你访客是 vlan 10 那么路由 B 也需要配一个 vlan 10 啊。然后 路由 B 和路由 A 之间的接口是 tagged vlan1 和 vlan 10
    luckjoe680
        3
    luckjoe680  
       290 天前
    只能一个 2.4g 一个 5g 不可能用一个信号区分两个吧
    cpstar
        4
    cpstar  
       290 天前
    不可能,除非 B 的 WAN 支持两个 vlan ,但是显然这种路由器不可能存在
    下游肯定需要一个交换机,可是一个物理口两个 VLAN 号,好像也行得通。下游交换机上再分离 VLAN 号和物理口。

    最后,这么麻烦干什么,直接搞一个多 SSID 的 AP 完活,XAP5400 也才八百块钱。再不济就 2.4G 给访客,5G 给自己设备,然后两个在路由器( AP )层面隔离,而上联不分 VLAN 就是一条链路。
    0o0O0o0O0o
        5
    0o0O0o0O0o  
    OP
       290 天前
    @neroxps #2 谢谢,添加了附言,tagged 后 vlan1 可以连通,vlan 10 不行
    0o0O0o0O0o
        6
    0o0O0o0O0o  
    OP
       290 天前
    @cpstar #4

    > 一个物理口两个 VLAN 号

    我附言里的做法是这个意思吗?通了一半 •﹏•
    cpstar
        7
    cpstar  
       290 天前
    我有一个问题,你的真 WAN 口在哪?我还以为这个设备就一个物理 LAN ,刚看仔细是两个 LAN (怎么标题又说一个),那一个口一个 VLAN ,没啥毛病啊,下游两台路由( AP ),in this case ,不需要 VLAN 了。

    然后附言里的 ping 是在哪做的?路由通么,br-lan 的上行走向 WAN 了,br-guest 也配置走向 WAN 了?
    0o0O0o0O0o
        8
    0o0O0o0O0o  
    OP
       290 天前
    @cpstar #7

    光猫拨号
    A 是二级路由,A 的 WAN 接光猫的 LAN
    B 只有一个口,接 A 的 LAN 1

    ping 是连上 B 的 ssh 在里面尝试的

    > 一个口一个 VLAN

    目前就是希望一根线解决这个问题,视作 LAN 2 不存在
    cpstar
        9
    cpstar  
       290 天前
    哦,这么个 Ping ,但是如果在 B 上 ping 192.168.10.1 via br-guest 能通,那就证明 A-B 之间的两个 VLAN 链路都通了,问题出在 A 的 NAT 上;如果不通,那就显而易见了。
    0o0O0o0O0o
        10
    0o0O0o0O0o  
    OP
       290 天前
    @cpstar #9

    确实

    ping 192.168.10.1 -I br-lan 通
    ping 192.168.10.1 -I br-guest 不通

    所以大概真的是设备局限
    cpstar
        11
    cpstar  
       290 天前
    我只能感觉你这个 B 并没有那么大的能力去搞一个口多个 vlan
    cpstar
        12
    cpstar  
       290 天前
    我刚才看了一眼我的 TL-XAP5400GC ,配置里边,某个 SSID 就可以设置绑定到 VLAN ID 上。所以上游一根线,下游多 VLAN ,需要设备 B 的支持,而路由器关这关那当 AP 使,窃以为没有那么大的能力,除非各种刷,当然那就已经不是纯粹的路由器了。
    0o0O0o0O0o
        13
    0o0O0o0O0o  
    OP
       290 天前
    @cpstar
    @neroxps

    可以了,参见第二条附言,谢谢
    0o0O0o0O0o
        14
    0o0O0o0O0o  
    OP
       290 天前
    @0o0O0o0O0o #13 第二条附言笔误

    LAN 1 和 LAN 2 都是 VLAN 1 上 untagged ,VLAN 10 上 tagged
    vmebeh
        15
    vmebeh  
       290 天前 via iPhone
    b 的口接 a 的 lan1:
    a 的 lan 1: untag vlan1 ,tag vlan10
    b 的一样:untag vlan1 ,tag vlan10 ,不需要 wan ,无线的设置我没用过就不清楚了
    vmebeh
        16
    vmebeh  
       290 天前 via iPhone
    需要 b 能 ping 通 a 的话就要新建网络设备分别绑定 vlan1 ,vlan10 ,再设置好防火墙(注意转发的设置,不然来宾形同虚设)
    0o0O0o0O0o
        17
    0o0O0o0O0o  
    OP
       290 天前
    @vmebeh

    #15

    是的,附言里就是这样成功的,这个成功之后无线比较简单,wireless wifi-iface 的的 network 设置成对应的 network interface 就可以

    #16

    B 没有防火墙,也没有绑定 VLAN 1 ,能通过 B 的访客网络 ping 通 192.168.10.1 ,与此同时 A 上设定的防火墙规则也是生效的,有什么我没注意到的坑吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   829 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:36 · PVG 06:36 · LAX 15:36 · JFK 18:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.