【别硬折腾】是我折腾硬件一些记录。

这是我的第一期的内容,家庭服务器。

本期分为三个篇章:

Part1 记录了家庭网络环境、设备的一些演变;

Part2 以我最新的方案为例,记录搭建的全过程;

Part3 是应用部分,我现在正在使用家庭服务器做的一些事情;

本篇为Part1,记录了我从2018到2022年一些网络环境的变化,以及设备的变化,以及引入新设备后的一些方案的变化。最重要的,还有我自己的一些改变。

1. 为什么要写演变?

随着时间的推进,我们的认知在不停的变化,学习到的知识在不断积累。

我们居住的环境也可能变化,刚毕业的时候我们还在合租,和大家公用WiFi,后面有可能自己租房子,自己去办理宽带,独立管理网络。

我们也会不断新增硬件,不断替换掉旧的硬件。

我们不必上来就整一个机架回家,装上两个刀片服务器,整个什么全屋WIFI(可能连全屋都没有),也不需要整个16盘位NAS。

你真的需要他吗

比起高大全,根据当下的网络环境、资源和需求找到最合理的方案才是最值得考虑的。

我本只想写一篇 《如何在 docker 中安装 OpenWrt 》的文章。结果过了一段时间,我发现我不需要再使用 Docker 作为旁路由,而文章也只是仅仅开了个头。

写演变的目的就是为了让本文更加具有参考性。好让处于不同阶段的读者都有所收获。

另外就是我也想记录自己这些折腾经历,基本上就是一个受锤的过程。提醒自己下次再要采购什么硬件的时候,记得三思。

2. 小米路由器,但是mini

年轻的时候谁还没住过一个合租的屋子呢?

由于是和同事一起排队的人才公寓,网络自然一起去办理的,一起平分的押金,AA网费,200M 带宽公用。

大家一开始都是使用使用光猫的 WIFI 进行上网。只有最远屋子的一个老哥由于 WIFI 信号太差,自己走墙内网线接了一个网件的 r7000 作为 AP,这也没有打破这最简单的美好。

简简单单

但是总有人(我)不老实,喜欢折腾。

之前父母家中长期使用小米路由器 mini 作AP,在长期运行后小米 mini 总是死机、断网,必须手动去重启才能恢复。

我爸没少因为这个路由器输掉网上的掼蛋对局。

不过也是,毕竟也是 2014 年的产品了,几个网线接口还都是百兆的。而且还是小米的产品,能用这么些年也是很了不起了。于是为了保住我爸的掼蛋积分,我直接买了当时网件的新品 – r7000p。

不过话说回来,网件的东西还是挺经用的,即使这路由器已经从最开始的 999 跌倒了 400 块钱不到,但现在还好好地活着,特别的稳定,没出过大问题。

那个时候流行给路由器刷固件,去实现一些高级的功能。总在网上看帖子说 r7000 可以华硕的梅林固件,我本来还想好好折腾一下这个 r7000p 的,可能是产品太新的原因,当时没有任何的途径可以进行刷机。后续很长的一段时间,我一直关注 r7000p 刷机进展,但也无疾而终。

r7000p 能不能刷不重要,重要的是我爸的牌局终于可以不用因为网络问题而输掉了。而且还有退休下来的小米 mini ,也能让我折腾一段时间了。

小米确实是很有发烧精神的公司,至少那个时候的小米有。

彼时小米在官网上提供了数款路由器开启 ssh 的方法,恰好小米路由器 mini 也在列。现在推出的路由器官方再也不支持 ssh 了,这也是我还一直收着这台小米路由器 mini 的原因。

小米路由器mini

有了 root + ssh ,路由器你要干什么可由不得你了。

于是在一个不老实人(我)的努力折腾下,我们的网络变成了这样:

变得不单纯

将小米路由器 mini 作为网关,开启 NAT 后,我的子网就有了生命和活力。

虽然小米路由器 mini 全部都是百兆的口,但是我们本来就是公用的 200M 带宽,硬件上的缺陷就当是自觉的体现了。

这个方案看似简单,其实门槛还是挺高的,各家的路由器刷机的方式都不一样,而且还有变砖的风险。如果手头有闲置的路由器不妨可以一试。

3. MacBook 大英雄

后来,告别了人才公寓,我搬到一居室和爱人一起住。

网络也随着公用的 200M 带宽变成了独享的 200M,小米路由器 mini 再也没办法发光发热了。

正巧这段时间我一直在看树莓派,准备入手一个玩玩。在不改变电信光猫作网关的前提下,我打算用树莓派以旁路由的形式去提供服务。

旁路由模式

旁路由(旁网关)模式:

在子网中,需要上网的设备将网关设置为子网内的其他设备(非出口网关)。

流量经过旁网关处理后再由旁网关转发到主网关,以实现特定功能。

这个方案理论上没有任何问题,然而最终在我这里并没有实现,原因有二:

第一个原因:光猫:

光猫,也就是上海电信的这个 SDN 网关,简直就是一个坑货。

首先 SDN 网关的任何设置是没办法在后台去更改的。

网关后台管理密码为 snd123456,登录只能看信息。

这意味着无法修改dhcp 服务,你得以手动 IP 的形式去修改客户端的默认网关地址。

即使你手动修改了默认网关,光猫还有一个致命的问题: SDN 网关不支持IP转发(IP Forward)

此路不通

第二个原因:树莓派

树莓派的价格并不便宜,尤其是 4b,大几百的价格让人望而却步(彼时好像还因为挖矿涨过一波价)。

在权益之下,我最终放弃了购买树莓派的念头。

但折腾还是要继续的。

在一次整理东西时,偶然间翻到了之前在海鲜市场购入的 ThunderBolt2 千兆网卡。于是就有了将我闲置着的 MacBook Pro 改造成软路由的方案。

雷电2网卡

当然,光猫转发的问题还是要解决,于是乎我买了一台小米路由器 AX1800。让他作为主路由,开一层NAT,同时作为交换机和提供无线 AP。

最终网络示意图如下:

高价软路由

这个方案肯定适合更多的人,只要有任何一台闲置的电脑就可以完成软路由的搭建。

MacBook 确实为我稳定服务了非常长的时间,直到它的电池鼓包。

后面我还是自己更换了新的电池,现在这台电脑还在作为狐狸小姐的主力机。

MacBook 安装 OpenWrt 的方案也简单。在虚拟机软件(如 virtualbox )中直接安装就行。需要配置下虚拟机的桥接网络,桥接到雷电2网卡上。

也不要忘记关闭 MacBook 的合盖休眠。

4. 着迷准系统

没有买树莓派的原因它的价格实在太贵,不如加点钱搞一个准系统。不过都上了准系统,不如直接组一个开发机,顺便当当路由器。

一开始我果断相中 Intel 的 NUC。打算买一个 8 代或者 9 代的 i7 版本。不过 NUC 太贵了,存在相当多的品牌溢价,i7 得裸机就要 4000 多了,关键是能耗比和拓展性还都一般。

彼时正好是 AMD zen2、zen3 发力的时期,同世代的产品 AMD 在能耗比上压 Intel 一头。同时市场上也有很多硬件厂商在做基于 AMD 的准系统,且拓展性都不错,于是果断加入了红色大军。

最后,我以 4400 多组装了一台 AMD 的小主机,它的配置如下:

  1. AMD 4900H
  2. 镁光 64G (32G * 2) 3200MHZ
  3. 西数m.2 500G
  4. Realtek 千兆网卡 * 2
  5. Intel AX210 WIFI6 + 蓝牙5
  6. 佳航电源

有了这么强大的一颗心脏,小米路由器 AX1800 再也不用负责做网关和 NAT 了,化作无线 AP 即可。

为了让 AX1800 这个 AP 更加的纯粹,我还必须撤销它交换机的职位。于是我干脆又购入了一台 NETGEAR 的 8 口千兆交换机。

至此,家里的网络设备和环境已经发生了天翻地覆的变化:

小主机网关

小主机我选择了直接安装 Ubuntu 18.04,然后在 docker 中搭建了 OpenWrt。

其实这个方案有点过了,如果只拿来当软路由,这主机 99% 的性能将浪费掉。因此我也完全不推荐。不过当开发机还是相当给力的。

既然跑了 docker,那下主机肯定是提供了其他的服务,这个部分我们放到 Part3 中再分享。

在 docker 中搭建 OpenWrt 过程会比使用虚拟机来的麻烦一点,因为需要用到 macvlan 。

而使用到 macvlan 就意味着你的虚拟网卡和你真实的网卡是没办法通讯的。所以为了能让小主机本身能连上网,你还需要再创建另外一张虚拟网卡。总之需要花一些力气。

5. 低功耗小主机

即使是有些许资源的浪费,上述的方案还是相当完美的,几乎满足软路由 + 家庭服务器的基本的需求了。

但可能是 docker 下的 OpenWrt 存在兼容性的问题,又或者是螃蟹网卡的原因,在日常使用的过程中经常发生网络中断的现象。为了进一步提高网络的稳定性,我又看起了低功耗的小主机。

我选择了基于 Intel N5105 的工业小主机,配备了 4 个 2.5G 的 Intel i226v 网卡。插上 16G 拆机内存,再整一个 500G 的 SSD,又是一条好汉。

硬件都买到这里了,NAS 肯定是不能缺席的。不过我的方案是直接购买的硬盘盒,通过USB链接到这台工业主机,组一个软 raid1,再通过 SMB 共享给局域网其他设备。

存储硬件是:铁威马的 D2-310 DAS + 两块希捷的 Exos 8T 企业级硬盘。总价2600左右。

为了确保数据的相对安全,我又配了一个 UPS 电源作为整个系统的电源平台。

增加了这么些硬件后,我的拓扑图变成:

当前版本

如图所示,iKuai、OpenWrt 被搭建在了 KVM 虚拟机中。搭建这些 Kvm 本身不复杂,但是在使用中真的有大大小小的各种问题,我在 part2 再做分享。

对了,后来我又把光猫已经被我改成了桥接模式,直接电话给安装宽带的小哥就行,但没有啥大用处,反正也没有公网 ipv4。

这就是目前的家庭硬件、网络的组建方案了。乍一看还想那么一回事,也算得上是丐中丐版本的家庭服务器了。一般人还是折腾的起的。

这里面唯一有风险的就是这个 DAS 的软 Raid 方案,我现在也没有特别好的工具来检测硬盘状态,也没有开启休眠啥的,不知道后续会不会丢数据。建议直接上品牌 NAS。

另外,UPS 通过 USB 和小主机做了链接,通过 NUT(Network UPS Tools) 功能可以做到延迟关机,确保不会在硬盘读写过程中发生断电,我在 part2 中再做分享。

那本文就到此结束,欢迎各位多提意见。如果后续网络、设备还有什么变化,都会及时更新。