V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0o0O0o0O0o
V2EX  ›  宽带症候群

分享一下我的简单家庭网络拓扑

  •  
  •   0o0O0o0O0o · 2023-07-28 22:47:19 +08:00 · 3217 次点击
    这是一个创建于 518 天前的主题,其中的信息可能已经有所发展或是发生改变。

    真的非常简单,简单到简陋,先上图,第一次接触,画得很不专业,见谅


    这套已经运行半个月,虽然还有一些未完成的部分,但已经证明还是能满足我的简单需求的。

    我的需求以及我的做法:

    1. 安全
      1. 拥抱开源: 只使用主线 OpenWRT
      2. 做好隔离: 划了三个 VLAN ,分别是「信任区」(顾名思义,这个区的设备值得我信任,例如我的个人 PC 、我的手机、存储服务器、小家庭服务器等)、「访客区」(不那么信任,所以防火墙禁止它们访问网关和光猫,但允许它们互相之间通信)和「危险区」(不信任,例如各类不得不联网的智能家居,禁止它们互相之间通信,并且设计方便调试的流程来给它们上更细致的防火墙)
      3. 及时更新: 关注 OpenWRT 等社区的动态,有重要更新就立刻更新路由器设备
    2. 稳定
      1. 光猫拨号,让主路由和几个 AP 只干路由器的活,没有任何插件,而且做减法,例如主路由删掉 USB PPPoE 之类不需要的包,AP 删掉防火墙、DNS 、LUCI 等等,需要的服务都跑在「信任区」的小服务器上,也就是很多人常说的“旁路由”
      2. 可复现: 受够了以前用 LUCI 时改配置边改边截图记录,升级个大版本结果逻辑又变了,于是这次我通过 uci-defaultsOpenWRT Image Builder 和 Docker 实现声明式配置,用 git 管理变更,再也不怕了
    3. 应用
      1. 双栈: 对于家庭网络使用 IPv6 还很陌生和畏惧,所以仅在「信任区」启用了 IPv6
      2. 外网访问 VPN: VPN 跑在「信任区」的小服务器上,固定后缀,从而仅允许公网到 VPN 所在服务器的指定端口的 UDP
      3. 无线漫游: 在主路由和几个 AP 上,三个 VLAN 都分别对应一组 2.4G 和 5G 的相同 SSID 的 Wi-Fi (「危险区」只有 2.4G ),开启 802.11r 来实现无线漫游,查资料时看到有人说这样是假漫游,不过我的设备用着还行,用 WiFiAnalyzer 移动观察确实切换了,也就没有纠结

    感谢配置过程中帮助我的很多网友

    欢迎批评和指点~

    27 条回复    2023-09-17 21:12:59 +08:00
    conan257
        1
    conan257  
       2023-07-29 07:17:08 +08:00
    这 好复杂啊,一看就是大佬
    Kowloon
        2
    Kowloon  
       2023-07-29 08:00:59 +08:00 via iPhone
    不同频但同 SSID 这个做法我认为挺好的,让客户端选择比手动切强多了。
    foxk
        3
    foxk  
       2023-07-29 10:57:39 +08:00
    思路清晰,简单明了,一看就是老手
    work9898
        4
    work9898  
       2023-07-29 11:05:01 +08:00
    大佬啊,看着挺不错的,但是就是眼睛会了脑子晕乎乎
    ranaanna
        5
    ranaanna  
       2023-07-29 11:34:56 +08:00
    感人的, 不过有点感觉 op 做的是 subnetting 不是 VLAN, 路由器干的不是路由器的事. 如果是这样想要 full cone NAT 的设备恐怕不能如愿. 另外看图好像三个区的 Wi-Fi 分别来自三个路由器, 所以每个区都是 mesh wi-fi, 还是后面还有安排? 感觉没有非常简单, 如果要简单直接一个 VLAN 交换机, 或者在 routerA 上(既然是 openwrt)划分一下 VLAN 不就可以了,根本不需要那么多路由器吧?
    ranaanna
        6
    ranaanna  
       2023-07-29 11:42:59 +08:00
    看不懂, 但是如果必须用 openwrt, 是不是设置一个 multi-SSID 加隔离, 再加几条防火墙规则, 用一个"路由器"就能达到目的?
    starryloki
        7
    starryloki  
       2023-07-29 11:45:56 +08:00
    我的 VLAN 划分策略和你的差不多,只是把访客和 IoT 划在同一个 VLAN 了
    ranaanna
        8
    ranaanna  
       2023-07-29 11:53:27 +08:00
    抱歉看懂了, routerB 和 routerC 是当 AP 用, 漫游是信任区和房客区间的漫游. 但是如果是这样, laptop 和手机"漫游"到访客区怎么办?
    0o0O0o0O0o
        9
    0o0O0o0O0o  
    OP
       2023-07-29 12:03:44 +08:00
    @ranaanna

    > 做的是 subnetting 不是 VLAN, 路由器干的不是路由器的事

    这个属实不懂。。。就是按照搜到的资料在 OpenWRT 里配了 VLAN 来做,不过这三个区都在不同的 /24 下

    > 想要 full cone NAT 的设备恐怕不能如愿

    这个是打洞用吗?好像打游戏的也要这个,暂时没有这个需求,是打算 IPv6 回家的

    > 看图好像三个区的 Wi-Fi 分别来自三个路由器
    > 如果要简单直接一个 VLAN 交换机, 或者在 routerA 上(既然是 openwrt)划分一下 VLAN 不就可以了

    routerA 是主路由,其余的是 OpenWRT 官方文档所说的 dumpAP (关闭 DHCP 、DNS 、防火墙),仅由主路由做 DHCP Server ,主路由和 AP 上均有 home guest 这两组 SSID ,并且 AP 和主路由都分别在相同的 VLAN 里,主路由上多一个 iot 的 SSID



    这是我目前主路由上的 VLAN 划分:

    - 网线直连 LAN 1 或 LAN 2 ,在信任区 192.168.1.0/24
    - 网线直连 LAN 1 或 LAN 2 下接的普通交换机,在信任区 192.168.1.0/24
    - 网线直连 LAN 3 或 LAN 4 ,在危险区 192.168.4.0/24
    - AP 连在 LAN 1 或 LAN 2 或下接的普通交换机下
    - 无线连接主路由或者 AP 的 home ,在信任区 192.168.1.0/24
    - 无线连接主路由或者 AP 的 guest ,在访客区 192.168.3.0/24

    > laptop 和手机"漫游"到访客区怎么办

    home 和 guest 是不同的 SSID


    (水平太有限,以至于可能没表达清楚,见谅)
    0o0O0o0O0o
        10
    0o0O0o0O0o  
    OP
       2023-07-29 12:04:36 +08:00
    @starryloki #7 刚开始也是,后来想到访客区互相之间需要联机,iot 区则需要禁止
    starryloki
        11
    starryloki  
       2023-07-29 12:35:32 +08:00
    @0o0O0o0O0o 目前没想到 IoT 设备之间需要禁止相互联机的原因,感觉只需要把 IoT 设备困在这个 VLAN 就够了,甚至还增加了策略路由让这个 VLAN 不会查询分流的路由表
    0o0O0o0O0o
        12
    0o0O0o0O0o  
    OP
       2023-07-29 13:02:33 +08:00
    @starryloki #11

    > 还增加了策略路由让这个 VLAN 不会查询分流的路由表

    这是什么操作,教一教
    ranaanna
        13
    ranaanna  
       2023-07-29 14:05:56 +08:00
    @0o0O0o0O0o 看 ip 果然是 subnetting. 这几个子网如果没有 ip forwarding 和 NAT,本来就不能互相通讯, 没有必要用 VLAN 作虚拟隔离. 另外, 从图上感觉 OP 对 eth0-3/LAN1-4 以及 VLAN 有一点误解: 网络接口 eth0-3 本来就是物理隔离的, OP 所做的其实是在将几个物理隔离的接口桥在一起再试图用 VLAN 作虚拟隔离(不管有没有作用, 如有好处接口可以盲插), 但用 VLAN 意味着数据都须经 CPU 进行标记, 还需要客户端支持, 与其这样何不直接多作几个网桥来得简单?
    ranaanna
        14
    ranaanna  
       2023-07-29 14:14:57 +08:00
    可以说 OP 在 RouterA 中的 VLAN 设置并没有什么用: 如果真的有用的话那么电视机什么的还要设置一个 VLAN ID 才能上网的说
    starryloki
        15
    starryloki  
       2023-07-29 14:34:50 +08:00
    @0o0O0o0O0o 我用的是 ROS ,可以直接根据源地址做策略路由,OpenWrt 的话不知道你用的哪一套方案,一般使用 ip rule 可以做到,源地址为 IoT VLAN 的话直接走 PPPoE 作为下一跳
    0o0O0o0O0o
        16
    0o0O0o0O0o  
    OP
       2023-07-29 15:36:26 +08:00
    @ranaanna

    > 用 VLAN 意味着数据都须经 CPU 进行标记, 还需要客户端支持, 与其这样何不直接多作几个网桥来得简单?
    > 如果真的有用的话那么电视机什么的还要设置一个 VLAN ID 才能上网的说

    网线直连主路由都是不需要设置 VLAN ID 的,因为每个 LAN 口都对应一个 untagged ,LAN 1 和 2 对应 VLAN 1 ,LAN 3 和 4 对应 VLAN 4

    只有当直连 LAN 1 或 2 的设备需要 VLAN 3 时,才需要设备设置 VLAN ID ,例如 AP 上就需要添加一个 VLAN 3 的网桥来区分

    这样的功能不用 VLAN 标记只用网桥能实现吗。。。
    0o0O0o0O0o
        17
    0o0O0o0O0o  
    OP
       2023-07-29 15:51:38 +08:00
    @starryloki

    # 11

    我禁止危险区的设备在局域网互相联机的原因是:我把它们(尤其是一些智能家居设备、智能电视、电视盒子、摄像头等)一律视作很容易被黑甚至是有后门的,禁止它们互相联机是希望其中一个被黑了的话可以尽量阻止攻击者在内网横向移动,其实也是我的一种自我安慰

    有些缺点很明显,例如电视目前没办法投屏,也没办法访问家庭服务器上的服务或内容,算是一种牺牲了
    starryloki
        18
    starryloki  
       2023-07-29 16:15:03 +08:00
    @0o0O0o0O0o
    #17
    电视投屏我没有用过不知道数据是怎么样的,不过我配置了允许服务器段主动访问 IoT 段,这个配置或许可以解决投屏问题,不过我更偏向采用 Apple TV 这类相对安全的设备。我和你的想法大致一样,区别就是就算真的有后门或者被黑甚至横向也没有关系,随便他们怎么玩,只要他们不能访问服务器和个人设备的网段就行
    0o0O0o0O0o
        19
    0o0O0o0O0o  
    OP
       2023-07-29 16:24:12 +08:00
    @starryloki

    > 更偏向采用 Apple TV 这类相对安全的设备

    是有同样想法,不想去做对抗,只要未来把盒子换成较安全的设备就丢到信任区
    ranaanna
        20
    ranaanna  
       2023-07-29 17:19:27 +08:00
    @0o0O0o0O0o 抱歉没有用过 openwrt, 只是一般的思路是建网桥把需要互连的连起来(相当于 switching), 不需要互连的不连(但通过 routing 或 NAT 实现通讯), 不需要互连但已经连起来的(比如单端口)用 VLAN. 但看 OP 的图好像 openwrt 的设置思路直接就是先把所有的接口(包括连接 WAN 在内的有线接口以及 WLAN 接口)都桥接在一起, 再实现 VLAN switching(所以缺省就有生成 WAN 端口的 VLAN ID 2). 按照这个思路, OP 的思路完全没有问题. 就是有点好奇为什么 openwrt 的设置是这么清奇的, 是和硬交换有关吗?
    0o0O0o0O0o
        21
    0o0O0o0O0o  
    OP
       2023-07-29 17:34:35 +08:00 via iPhone
    @ranaanna #20 OpenWRT 上设置 VLAN 的页面就叫 Switch ,对应在配置文件里就叫 switch_vlan ,完全不理解,照着文档和 Google 配的
    neroxps
        22
    neroxps  
       2023-07-31 08:07:04 +08:00 via iPhone
    我一直没划 vlan 是因为没解决 HomeKit 在 vlan 间通信的问题。也不是没方案,是 HomeKit 必须一直在家调试才行。在家没时间哈
    remonsawa
        23
    remonsawa  
       2023-07-31 17:09:56 +08:00
    访客区和危险区无线互通是不是反了?访客区不应该禁用互通防止恶意漏洞导致整个访客网络出问题,lot 间有的可能需要协议间的通信反而应该放开互相通信呢?
    0o0O0o0O0o
        24
    0o0O0o0O0o  
    OP
       2023-07-31 17:59:24 +08:00 via iPhone
    @remonsawa #23

    没反,算是理念差异吧,我把安全排第一项的,为了(我理解中的)安全牺牲了很多体验。

    据我了解智能家居设备几乎没有在意安全的,所以需要联网的智能家居设备属于非常薄弱的环节,为了贯彻理念我宁愿不享受它们,我有很多智能家居设备买来就没联过网。

    访客区则通常是手机、游戏机,个人认为较安全,不信任的人我也只会让他们连危险区。

    仅仅是个人执念,哈哈。
    hytirrb
        25
    hytirrb  
       2023-09-17 19:52:22 +08:00
    哥,这个参考了哪些教程呀,好像学习一下
    0o0O0o0O0o
        26
    0o0O0o0O0o  
    OP
       2023-09-17 20:04:40 +08:00
    @hytirrb #25

    - imagebuilder 看文档用官方 docker 就可以
    - 最初用 luci 配置 dumbap 看过这个列表的视频 https://www.youtube.com/playlist?list=PLjNJONm8Mjpf9g8xK0wJSFLIFrl8GMhVZ
    - 后面具体配置 dumbap 看文档 https://openwrt.org/docs/guide-user/network/wifi/dumbap ,还有搜 openwrt 官方论坛解决了一些 BUG
    hytirrb
        27
    hytirrb  
       2023-09-17 21:12:59 +08:00 via Android
    谢谢大佬呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2815 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:35 · PVG 11:35 · LAX 19:35 · JFK 22:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.