反正有些没有实现的计划,短期内也没有可能实现了。所以相当于选择最终盖棺定论一波。
我自己的这套家庭网络服务,几乎完全是根据我自己的情况量身打造,其中的价值判断很可能有所偏颇。因此并不适用于所有场景。
整体网络划分
简而言之,就是一条电信宽带接我自己的软路由。由我的软路由划分出两个网络,一个主要是服务器和树莓派用,另外一个主要是给各种非技术人员用。
其中软路由和服务器是用J1900弄的一个四网口小机器组成。
软路由
定位
首先,由于我的软路由是后于服务器出现,同时考虑到软路由是一个单点需要特殊保护。因此对于软路由的基本态度是:尽可能避免让软路由承担职责。
以我有限的理解来看。软路由只承担nat、firewall、DHCP和备份相关服务。软路由并不负责某V姓或某S姓服务,也不负责dns解析、转发、缓存等相关服务。总而言之,软路由就专注于路由的功能,其他基本就不管。(备份服务另说)
硬件
软路由的配置和服务器的配置保持了完全一致(其实之前这个软路由就是一台服务器),仍然是8g内存和200g的ssd。
软件
首先操作系统上,没有选择OpenWrt,而是直接选择了ubuntu server。主要的理由是,OpenWrt的成本过高。虽然OpenWrt的确可以很快的上手并且达到可用,但当我要在上面跑一些其他东西的时候就显得相对麻烦了。
然后选择了Webmin来管理这台机器,虽然其实没啥用处,但毕竟有个图形化的页面,看着会舒服一些(虽然并不好用)。主要就是用来查看其他软件的配置,偶尔用来添加新的设备。
iptables实现了nat和firewall。firewall会直接屏蔽来自右侧访客路由的所有INPUT,并且只接受往WAN口的FORWARD(光猫的ip也不允许访问)。总之,访客路由就老老实实借道访问公网就好了,其他的东西不要碰。而对于左侧的网络(主要是服务器所在网络),采取的是比较落后的MAC地址白名单,firewall会直接丢弃MAC白名单以外的任何包。
DHCP的配置就简略一些。四个网口除了一个网口做WAN口之外,剩下三个网口每个网口给一个独立的网段。
Docker,作为备份的一部分。主要负责:1. 通过某V姓服务做内网穿透,维持一条后备线路;2. 一个DNS server,但一般不会使用。
NFS,作为备份的一部分。主要是负责备份三台服务器上的数据。我“开放基础设施”里的数据在这里都有备份。
性能
首先,千兆会怎么样我不知道,因为我家宽带就200兆。
但就200兆的情况来看,带宽跑满的情况下其实cpu并没有任何反应,基本和静置状态差不多。而对于内网,因为软路由下面直接接访客路由和交换机,且访客路由和交换机之间基本没有流量。所以内网的流量根本就不会进入软路由。所以就流量来说,机器的性能完全不是问题。
除此之外,其他的性能相关后面服务器部分可以有更多的细节。这里就不多提了。
服务器
服务器由3台J1900组成,3台机器配置和软路由一致,3台服务器通过k8s管理。
性能
先说性能。总的来说,J1900的性能完全超出预期。这3台机器承担了内网所有流量、分布式存储、整个测试环境、部分的开放基础设施的服务以及一系列杂七杂八的服务。
结果大概就是下面图里这样:
可以看到,在跑了一大堆东西的情况下,系统的负载大概就5o%的样子。虽然不算很好,而且只是在没有特别多访问的情况下,但个人觉得已经不算糟了。
网络
集群负责了承担了代理、内网穿透和dns的工作。
集群的dns是个独立的服务,不是k8s内部的dns。集群的dns主要有3个作用:1. 加密对上游dns服务的连接;2. 定义内网域名;3. 缓存。在之前《我的网络》里面提到了,几台公网服务器会维护一个定制和安全的dns。集群会通过DoT的方式连接并缓存我公网服务器的dns。最后再额外加一些解析的优化,比如部分服务直接解析为内部ip。
集群的代理就是接入《我的网络》的地方。对于其他设备只需要配置http代理就可以直接在内网里访问我的全部网络。由于我的网络保证了不论我身处何地,看到的东西都是一样的,所以默认所有受信设备都会走这个代理。
最后,只是针对我家所在的地区。集群还负责通过某V姓服务实现内网穿透。使得任意地区均能访问内网的部分服务。
总之,J1900的性能虽然说不上好,但也不算糟糕,总的来说还是能够干一些事情的。
树莓派
树莓派主要负责我家里的CCTV、一些温湿度收集和一些基础的监控报警。因为地理位置遍布家里的各个角落,所以通过网线连接时不可能的。于是所有的树莓派全部通过wifi接入网络,数据会汇入服务器集群中。
由于不同的树莓派上的传感器并不相同,加上当时做的时候经验不足,因此树莓派不受k3s之类的东西管理。
没有实现的计划
一个想要实现的东西就是断点保护。一旦发生停电,那么整个系统直接gg。虽然巡逻车自带电池仍然能够运行一段时间,但其实需要加一个sim卡的模块。一旦断电至少可以立刻发送一个告警。
另外一个就是对树莓派重构。就目前来说,每个设备都是独立维护的。但可以预先约定好gpio的分配,然后直接用k3s集中管理所有设备。
备用路由。目前软路由是个单点,重启或者挂了就真的时整个网络挂掉。但其实需要有一个备用的路由,在主路由崩溃的时候自动启用这个备用的路由。
多宽带。这个排最后,按说其实宽带也是一个单点,故障了就完全无法访问外网了。但因为其实没有高可用的要求,所以可能打电话投诉更加合适。
这大概就是我的家庭网络服务,虽然多多少少有点坑,但还是能用。