关于systemd
本系列全部服务都使用 systemd 来启动和管理,在系列中并未过多的说明这些服务如何启动、开启自启、重启、重载、停止、查看日志、筛选日志等等。关于 systemd,阮一峰大佬有详细的教程:Systemd 入门教程,该文详细的介绍了 systemctl 及 journalctl 相关命令的使用方法。
关于磁盘占用
整套系统配置下来,初始的磁盘占用不到2G。从长远来看,只要不会有需要占用大量磁盘空间的应用程序,16应该是绰绰有余。
关于内存
安装完这一系列内容,实际上内存使用并没有增加多少,才 340MiB 左右。注意 buffer 和 cache 是可以通过调整参数降低的,这个占用不算真正的占用。 buffer 和 cache 反而是对系统运行有好处的,在内存足够的前提下,不建议清除它们。如果内存真的不够,你可以按照 这个链接 来限制它们。

如果想要进一步降低内存使用,可以自行动态编译前面所使用到的全部软件包,再使用 upx 来深度压缩,这样处理后能让内存消耗再小一些,能缩减到 300MiB 以下。不过注意 unblocknem 不能这样操作,如果想要减小它的内存占用,请按照 官方仓库 安装 nodejs 后使用源码运行,并调整 unblocknem.service 中的 ExecStart。
关于DNS
我们在 本系列第(三)篇 使用了 adguardhome mosdns 和 clash 来实现自建DNS服务,在 adguardhome 和 mosdns 中都存在后备,两级后备保证局域网中的设备访问中国大陆的服务不会因为 clash 的代理节点出问题,而导致无法访问。我想这点对家人的使用比较重要,他们大多数都只需要能够访问中国大陆有服务就可以了,他们不会再闹着说“又上不了网了,你咋搞的嘛”。
在 OpenWRT 中默认是会安装 dnsmasq 的,许多包都会操作 dnsmasq ,这可能也是导致解析不到DNS的原因。 使用 Debian 没有此烦恼,因为压根没有安装 dnsmasq。
关于网络故障
我们将 nftables 规则绑定到 clash 启动之后才执行,在 本系列第(四)篇 我们是以 ExecStartPost 来让 nftables 规则在 clash 启动之后才执行的。如果 clash 没启动好, nftables 规则也就不会执行,假如这个时候 adguardhome 和 mosdns 都启动好了,由于 mosdns 无法使用 clash 的DNS服务,它会全部切换到后备也就是国内公共DNS服务器去解析,这不会影响家人的上网体验。另一方面,假如 clash 启动好了, nftables 规则也创建好了,可是 clash 的代理节点全部故障了,这个时候,由于我们有绕过中国大陆IP的 nftables 规则,仍然不会影响我们使用境内服务。即使再极端一点,连 nftables 也坏了,因为我们是使用 nftables 脚本来生成的,而不是使用 shell 命令一句一句输入的,所以只会整个 mynftables.nft 脚本中的规则全在或者全不在(有任何一句出错就会全不在),那么全不在就意味着没有任何 nftables 规则,旁路由这时除了DNS,就是一个纯粹的 IPv4 转发器,更不会干扰网络的运行(只会影响特殊服务而已)。
在 OpenWRT 中许多包都会操作 iptbales 或者 nftables,它们之间可能并没有很好的协调与配合,毕竟分属不同的人开发。并且多数都是以一句一句的 shell 命令来增加的规则,很有可能有些语句生效了,有些语句没有生效,然后导致网络故障。现在我们全部自写 nftables 规则,逻辑清楚,并且只会随着 clash 的启动而启动,而不是脱离 clash 自己单独启动,并且直接采用 nftables 脚本而非 shell 脚本,这样就能避免一些网络故障问题。
关于IPv6
所配置的旁路由只作为了IPv4的网关,不作为IPv6的网关主要有两个原因,一是IPv6代理并未普及,二是想要旁路由成为IPv6网关异常复杂。不过,仍然保留了中国大陆网址的IPv6访问的能力。局域网中对公网转发的服务也是可以提供IPv6访问的,这点并不影响。在非旁路由所在的子网中,IPv4/IPv6双栈都是默认可用的状态。
关于软件包
国内的用户使用 OpenWRT 一般是使用 LEDE,如果是自己编译的话,面对繁多的选项无从下手,用别人的 高大全 又老是配置不好,而且还面临不太好升级的问题。一些旧的软件包想要更新,都要先更新固件的编译依赖仓库。
而使用 Debian 的话,它自带的仓库是极度稳定的,自己想要额外安装的一些软件包,基于这个稳定的环境,运行也更稳定,而且额外安装的软件包可以保持追新。这样基础环境稳定,部分特殊软件追新,让体验更加完美。
在 本系列第(二)篇 中还提及了一些其他的软件包,这些都是简单地应用,如有需要可自行搜索其帮助文档。
关于本系列提供的脚本
如果你相对于我的改动较多,你就可能不能直接使用本系列提供的 shell 脚本。如涉及到改动,可能需要你自行修改相关脚本内容,以适应你的环境。若因此脚本出现错误,本人无法提供过多的建议,可能需要你自行排故。