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

2023-07-28 22:47:19 +08:00
 0o0O0o0O0o

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


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

我的需求以及我的做法:

  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 移动观察确实切换了,也就没有纠结

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

欢迎批评和指点~

3095 次点击
所在节点    宽带症候群
27 条回复
conan257
2023-07-29 07:17:08 +08:00
这 好复杂啊,一看就是大佬
Kowloon
2023-07-29 08:00:59 +08:00
不同频但同 SSID 这个做法我认为挺好的,让客户端选择比手动切强多了。
foxk
2023-07-29 10:57:39 +08:00
思路清晰,简单明了,一看就是老手
work9898
2023-07-29 11:05:01 +08:00
大佬啊,看着挺不错的,但是就是眼睛会了脑子晕乎乎
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
2023-07-29 11:42:59 +08:00
看不懂, 但是如果必须用 openwrt, 是不是设置一个 multi-SSID 加隔离, 再加几条防火墙规则, 用一个"路由器"就能达到目的?
starryloki
2023-07-29 11:45:56 +08:00
我的 VLAN 划分策略和你的差不多,只是把访客和 IoT 划在同一个 VLAN 了
ranaanna
2023-07-29 11:53:27 +08:00
抱歉看懂了, routerB 和 routerC 是当 AP 用, 漫游是信任区和房客区间的漫游. 但是如果是这样, laptop 和手机"漫游"到访客区怎么办?
0o0O0o0O0o
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
2023-07-29 12:04:36 +08:00
@starryloki #7 刚开始也是,后来想到访客区互相之间需要联机,iot 区则需要禁止
starryloki
2023-07-29 12:35:32 +08:00
@0o0O0o0O0o 目前没想到 IoT 设备之间需要禁止相互联机的原因,感觉只需要把 IoT 设备困在这个 VLAN 就够了,甚至还增加了策略路由让这个 VLAN 不会查询分流的路由表
0o0O0o0O0o
2023-07-29 13:02:33 +08:00
@starryloki #11

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

这是什么操作,教一教
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
2023-07-29 14:14:57 +08:00
可以说 OP 在 RouterA 中的 VLAN 设置并没有什么用: 如果真的有用的话那么电视机什么的还要设置一个 VLAN ID 才能上网的说
starryloki
2023-07-29 14:34:50 +08:00
@0o0O0o0O0o 我用的是 ROS ,可以直接根据源地址做策略路由,OpenWrt 的话不知道你用的哪一套方案,一般使用 ip rule 可以做到,源地址为 IoT VLAN 的话直接走 PPPoE 作为下一跳
0o0O0o0O0o
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
2023-07-29 15:51:38 +08:00
@starryloki

# 11

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

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

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

是有同样想法,不想去做对抗,只要未来把盒子换成较安全的设备就丢到信任区
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 的设置是这么清奇的, 是和硬交换有关吗?

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

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

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

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

© 2021 V2EX