html
我的智能家居出现了问题。不,这并不是因为 来自不同制造商的无数设备,尽管这让问题变得更糟。问题在于我家网络上的每个设备一旦连接,就会被默认信任,这使得我的家存在许多未修补或未报告的安全漏洞。我对网络安全了解得越多,就越不喜欢这个想法,这让我开始思考解决方案。
我曾认为远程访问我的智能家居会是棘手的部分,但结果却是最简单的。真正耗时的是阻止每个物联网设备连接到广域网,调整防火墙和设备设置,并将所有内容集成到 Home Assistant 以实现本地控制。智能家居设备通常为了便利而牺牲安全,但我想将钟摆推向另一边,按照我的条件控制我的智能家居,经过一番努力,我已经快要实现这个目标了。
我不喜欢我不信任的设备能够访问广域网的想法
互联网是一个可怕的地方
互联网 一直 是一个可怕的地方,但自动扫描、脚本编写,以及现在的人工智能,近年来使其变得更加可怕。再加上几乎没有安全保障的物联网设备激增,你最终会得到成千上万的僵尸设备,在像 Mirai 这样的僵尸网络中随时被调用。
我对这些事情了解得足够多,可以将物联网设备放在专用 VLAN 上,并阻止它们连接到互联网,我成功将更多设备纳入本地控制,这样它们就不需要云服务。不过我喜欢在回家的路上能调整我的恒温器设置,或者查看安全摄像头,但当这些设备被阻止与外界连接时,我无法做到这一点。
为了解决这个问题,我要么必须允许我的本地控制系统连接到外网,要么使用远程访问工具让我的智能手机看起来像在本地网络中。两者都可以实现,而 Nabu Casa 的 Home Assistant 云订阅也是一个选择,不过我最后选择了 Tailscale。
是时候从云端重新掌控了
第一步总是最难的啊
第一步就是把我所有的智能家居设备都集中在一个控制平台上。 我选择的智能家居管理工具是 Home Assistant,不过你也可以用 Hubitat 或其他任何支持本地控制的工具。所有连接 Wi-Fi 的智能家居设备都放在自己的接入点上,专门为 IoT 设备设置了一个 VLAN。我充分利用了很多设备支持 Zigbee 这个完全本地的协议,所以我不需要像之前那样担心安全问题。
我发现大部分智能设备都能这样集成,不过有几个不兼容的我还是换成了更新的设备。我还启动了一个本地的 LLM,并把它连接到 Home Assistant,这样就能实现不依赖云服务的语音控制。
现在来阻止我不想要的通信(并启用我想要的通信)
防火墙规则与简单易用的 VPN 工具结合
因为我所有的智能家居设备现在都在同一个 VLAN 上,所以我在 OPNsense 中需要的防火墙规则数量大大减少。让 Home Assistant 能够与主 LAN 通信,同时阻止其他 VLAN 上的设备进行回传。我用来运行 Home Assistant 的迷你 PC 有两个网络端口,所以我本可以用它来隔离,一个 LAN 端口连接到 IoT VLAN,另一个连接到我的主网络,但我还是希望有主动的防火墙规则以防万一。最后一块拼图是设置 mDNS 反射,这样即使任何本地智能设备服务无法访问互联网也能正常工作,同时还需要一个有状态规则,以便 IoT 设备在需要时能够将流量返回主网络。
所以,我的智能设备不再能访问互联网,只有 Home Assistant 可以与我的 LAN 通信,还有一些生活质量的调整,让 IoT 设备在某些情况下也能与主网络通信。最后一步是设置 Tailscale 和 Home Assistant 插件,启用子网路由,这样我的本地子网就能被广告到我的 tailnet:
广告路由表:192.168.1.0/24 # ‘主网络’
- 192.168.20.0/24 # 物联网 VLAN
在 Tailscale 管理控制台审核这些设备后,我的任何设备都可以像在局域网中一样控制 Home Assistant。我可以通过智能手机使用 Home Assistant 和 Tailscale 应用,我现在可以从任何地方进行远程访问,而不必担心我的智能家居会自己上网。
你的智能家居聪明与否,完全取决于你
我对家里网络上的大多数设备不太信任,更愿意花时间自己实现访问工具。这就意味着本地控制是默认的,但有时候在不在家时能控制一些设备也挺不错的,而 Tailscale 给了我实现这一点的工具和安心。我还设置了离开家时的自动化,这样我就不用记得去远程控制了,这两个系统都能满足我的需求。
热门跟贴