在过去的几个月里,我一直在谈论使用标准 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 条评论