在过去的几个月里,我一直在谈论使用标准的 Linux 发行版作为路由器。我曾在 Ars Technica 上写过关于它的文章,我在 Great Wide Open 上做过一次演讲,下周我将在 SouthEast LinuxFest 上再做一次。我必须告诉你,自制路由器是我写过和做过的最具争议的主题之一——有些人喜欢这个想法,但那些不喜欢的人似乎真的、*真的*讨厌它。
公平地说,从通用服务器发行版设置你自己的路由器不是一个适合所有人的项目。无论是在构建过程中还是在完成后,它肯定都不友好。虽然它不是非常 *复杂*,但它绝对是 *神秘* 的,而且一路没有任何指导。如果你还没有非常丰富的 Linux 经验,你可能会感到非常困惑(甚至可能会骂几句)。一旦你完成了构建,你也不会得到一个功能非常丰富的构建版本——除非你对你的构建做了比我更多的努力,否则你不会有花哨的服务质量功能,使用情况图表,或者除了一个简陋的(虽然 *极其* 高性能)路由器之外的任何东西,它可以分配 IP 地址,解析 DNS 记录,连接到互联网,并使数据包到达它们应该去的地方。
我不反对任何人指出这些问题。实际上,我 *自己* 也指出了所有这些问题,而且通常在最开始的几个段落中。但最让我摇头的常见抱怨是,“这会非常不安全,会被 root,这就是为什么你应该运行一个专门构建的路由器发行版。”等等——*什么?*
好吧,让我们谈谈安全问题。安全不是你在事后才附加的东西,也不是用几千行代码构建的东西。安全是一种心态,也是一种 *设计*——它是你从一开始就构建的东西。提高安全性实际上是我首先构建自己的简陋 Linux 路由器的全部原因。
我的职业迫使我对信息安全保持警惕,这就是为什么我首先要构建一个简陋的 Linux 路由器。专有的路由器固件通常要几个月甚至几年才会升级——而且当它 *确实* 升级时,更多的是为了在 UI 中添加一些花哨的东西——更有可能引入 *更多* 的错误——而不是为了修复安全问题。开源固件的情况也好不到哪里去。DD-WRT 是最受欢迎的之一,虽然它每隔几周就会有一个新的(而且错误百出的)测试版发布,但该项目已经八年没有发布过 *稳定* 版本了。八年!pfSense 几乎是业界的宠儿,这是理所当然的——但它仍然是一个庞大而复杂的活动部件堆栈,带有 Web 界面、漂亮的图表以及用于切换的零碎,你永远不可能真正 *知道* 它在做什么——你在 Web UI 中单击这些框,然后假设它正在执行你告诉它的操作,这已经与底层配置的现实相去甚远。而且,在发布固件更新之间也需要几个月(甚至更长时间),而且(同样)不能真正保证更新不会更改 UI 和功能的主要部分,而不仅仅是修复错误。
对于很多人——以及企业,不要误会我的意思——这完全没问题。但对于我自己的个人网络,这已经不够好了。我想要一些 *最简单* 的东西,我可以了解实际配置的每一寸,因为我都是自己编写的。我想要 *真正* 频繁的安全更新,以及主要发行版带来的那种质量保证和测试。那些小型专业路由器发行版必然会落后。
这就是我的 自制路由器 的由来。不,它并不比路由器发行版“更不安全”——它的活动部件要少得多 *得多*,而且我对 *所有* 这些部件都非常了解。除了我实际的配置文件之外,它的每一部分都会每天自动获得安全更新。如果 dhcpd 中存在次要安全问题,它的补丁不会排队等待,直到“有足够的东西可以进行完整的固件升级发布”。它会 *立即* 通过 unattended-upgrades 服务自动获取并修补。
我不必担心是否因为忘记单击正确的复选框而意外地将 Web 界面暴露给外部世界——*没有* Web 界面。同样,我也不必担心 Web 界面中的 *错误* 是否会在我选中某个复选框的情况下执行类似的操作——因为没有复选框,我所做的配置是实际服务的 *真正* 配置,而不是一个抽象的、简化的版本,必须由几千行 PHP 代码来翻译,而审查这些代码的人要少几个数量级。
因此,这让我们回到了自制路由器适合或不适合哪些人的话题。它适合一位不熟悉命令行级别的 Linux 网络(包括 dhcpd、iptables 和 bind)的繁忙管理员吗?可能不适合——他们没有时间处理所有这些。它适合一个不是对这些东西感兴趣的业余爱好者的家庭用户吗?同样,可能不适合——他们会对配置的神秘性(虽然最终很简单)感到沮丧。
自制 Linux 路由器 *确实* 适合一个真正对这些东西如何在底层工作感兴趣的业余爱好者或初级系统管理员。设置和管理它会教会你很多东西。它也很适合一个已经了解大部分系统并且只需要复习一两件事才能感到舒适的资深系统管理员——原始性能简直令人惊叹,而且系统的简单性将使这位资深系统管理员可以自由地以他们已经非常舒适的方式来管理和备份它。最后,它非常适合那些非常担心安全的人(不幸的是,也像我一样),因为其精简的特性使他们绝对 *确定* 他们了解它在做什么和不做什么,并在规划安全设置时相应地进行计划。
如果你是一位感兴趣的业余爱好者或系统管理员,并且认为这听起来像是你想要深入研究的项目——或者甚至认为这听起来完全疯狂,但可能会有趣地 *思考* 一个小时——请今年来北卡罗来纳州夏洛特的 SouthEast LinuxFest!该活动于 6 月 10 日至 12 日举行,我的演讲应该在 6 月 11 日星期六上午 9 点至 10 点 举行。
16 条评论