借助DD-WRT模块套件,从您的家庭路由器释放更多能量

如果您还没有,请务必阅读本系列的前两篇文章:

使用DD-WRT将您的家庭路由器打造成超强功能的路由器。 如何使用DD-WRT增强Wi-Fi网络信号并增加覆盖范围

假设您熟悉这些主题,请继续阅读。请记住,本指南技术含量较高,初学者在修改路由器时应格外小心。

概述 / 综述

本指南将逐步介绍如何使用“固件修改工具包”通过修改和添加来创建您自己的DD-WRT固件。

固件修改工具包使用户能够对固件进行修改,而无需从源代码编译它。在提供的脚本的帮助下,以这种方式进行更改只需下载、替换和删除一些文件即可。

使用此方法的最主要原因是因为最近DD-WRT对OpenWRT IPKG包的支持已转向具有硬盘驱动器的路由器(通过USB),这使得MOD-KIT成为在HD不可用的情况下成功安装IPKG包的唯一持续工作方式。此外,这种方法还有一个额外的优点,可以使您从包安装的JFFS依赖中解脱出来,对于只有4MB闪存的路由器来说,这是一个真正的问题。

由公共能源提供的图片

目标

虽然DD-WRT的维基和开发人员网站上详细介绍了此过程的说明,但我们的目标是使本指南成为任何人都可以用来实现以下目标的复制和粘贴过程:

安装KNOKKD软件包及其依赖项。 使用基于NVRAM的生成配置安装ssmtp软件包。 可选,支持TLS SMTP(也称为。Gmail支持)。

一旦您遵循了此过程,就可以相对简单地将其改编为适用于其他软件包的安装。

先决条件

使用此程序可能会损坏您的路由器,因为在“使您的路由器不可用”一文中,我们不对使用以下程序直接或以其他方式造成的任何损坏承担任何责任。 此过程是在基于Debian的系统(Lenny、Squeeze和Mint)上执行的,下面的说明假定您也在使用其中一个系统。 此过程仅建议具有使用DD-WRT刷新路由器的经验,且具备适用于其硬件设置的所有前提条件、警告和限制的人员。一个很好的起点将是我们使用DD-WRT指南将您的家庭路由器转变为超级功率路由器。 您的路由器必须至少支持DD-WRT的“迷你”版本。 此过程是在Linksys WRT54GS/L路由器上创建并测试的,如果您使用其他供应商的路由器,您的里程数可能会非常高。

布设

安装所需的软件包

固件修改工具包需要一些依赖项才能编译和工作。为了一次性安装/更新它们,在终端中发出以下命令:

下载mod-kit

创建子文件夹,从官方SVN获取工具包:

下载要使用的固件

首先要考虑的是要使用哪个版本? 一条经验法则是:当有疑问时,使用“mini”。这是因为只要您的路由器至少支持“迷你”版本,使用它可以为您提供所有最常用的功能,而不会带来任何繁琐的软件。因此,在大多数情况下,为过程留出空间,甚至为其他用途留出一些JFFS空间。

一旦你决定了一个版本,建议使用可用的固件的最新版本,因为与它们的“稳定”对应版本相比,它们往往有很多错误修复。 在撰写本文时,最新的版本是“03-17-11-r16454”,这个修订版在后面的命令中使用。

为了更容易跟踪我们正在使用的版本,请重命名下载的文件以表示其版本号:

这当然是可选的,但是下面的命令假定您已经重命名了该文件。

解压固件

为了能够更改固件中的文件,我们需要将其内容解压缩到临时目录中。 此命令的语法为: ./Extract_Firmware.sh固件映像工作目录。 在我们的例子中,这将转化为:

注意:第一次运行此命令时,它会在您的系统上构建mod-kit工具。这只会发生一次,可能需要一段时间…。所以要有耐心,…

安装软件包

现在固件已解压缩,我们可以将软件包安装到其中。 通常,该过程是以IPK文件的形式从OpenWRT存储库中下载软件包及其依赖项。下载后,使用提供的脚本将它们安装到提取的固件中。

Knockd套餐

有关如何配置和使用Knockd的详细说明将在以后的文章中详细介绍,因此您可以选择现在跳过此步骤,或者为将来做好准备,因为Knockd无论如何不会占用太多空间。

Knockd是一个守护进程,它监听链路层的通信事件以获取序列,然后对其进行操作。 这意味着,您可以让运行守护进程的设备甚至不“侦听”端口(端口扫描不会看到它们处于打开状态),并且仍然让它执行您需要的操作,从单个命令一直到完整的脚本。使用此技术,您可以触发服务器远程(通过Internet)执行您需要的任何类型的操作,而不会暴露您的家庭网络。

Knockd只列出了一个依赖项,因此通过执行以下命令下载软件包及其依赖项:

将“敲门守护程序”(KNOKKD)IPK安装到固件中:

将“Packet Capture”(Libpcap)IPK安装到固件中:

由于可以使用备用配置文件调用“KNOKKD”(将在以后的文章中说明),因此不需要执行任何其他操作,如果您只想安装固件构建部分,您可以跳到固件构建部分。

SSMTP包

SSMTP软件包使您的路由器能够发送电子邮件消息,就像我们在我们的如何在Linux上使用Gmail或SMTP在服务器上设置电子邮件警报中所展示的那样。我们当时向您承诺,我们将展示如何为DD-WRT配置此功能,现在我们将交付。 如果您要在路由器上创建脚本,希望通过电子邮件接收有关其运行情况的反馈,则此功能主要有用。

由于嵌入式系统的限制,这个软件包的设置比在普通linux系统上稍微复杂一些,所以请深呼吸…。准备好了吗?…。。让我们去…。:)

下载软件包:

将“ssmtp”IPK安装到固件中:

TLS支持(可选)。 SSMTP不会将任何其他包列为其依赖包,但是,如果您希望能够使用需要TLS身份验证的SMTP网关(即Gmail),则还必须安装OpenSSL包。 注意:这样做有一个巨大的缺点,那就是稍后会大大减少路由器上用于JFFS的空间。也就是说,OpenSSL包从您总共4MB的空间中占用了大约500K的空间(对于一个普通的非“兆”支持路由器),再加上JFFS开销,您会发现剩下的空闲JFFS空间块非常少(在WRT54GL上大约是60KB)。

由于仍有非TLS需要SMTP服务器(通常是您的ISP),我建议您花点时间考虑是否真的需要使用需要网关的TLS。

如果您已决定启用TLS支持,而不考虑其缺点,请下载OpenSSL软件包:

将“openssl”(Libopenssl)IPK安装到固件中:

构形。 SSMTP包有一个限制,即不能使用备用配置文件调用它。 因为固件在路由器上时是只读的,这意味着我们只能将配置硬编码到固件中。 但是,如果我们不想完成所有固件修改步骤,而只是更改电子邮件设置,该怎么办呢?(例如,密码更改)。

为此,Jeremy(固件mod-kit的创建者)和我都得出了结论(如果我可以谦虚地补充一下的话),唯一明智的方法是:

将ssmtp包指向的配置文件位置设为etc下的只读位置,指向在运行时可写的tmp目录。 创建一个脚本,该脚本将在启动时根据NVRAM变量动态生成配置。

要实现这一点,需要执行一些额外的步骤…

符号链接ssmtp配置目录。 如上所述,我们需要在路由器上放置/etc/ssmtp位置,指向/tmp目录作为运行时我们在路由器上唯一可写的位置。为此,请删除由IPK安装程序创建的ssmtp目录:

创建指向路由器根文件系统上的/etc/ssmtp的新符号链接,以指向作为绝对路径的/tmp/etc/ssmtp:

注意:尽管这现在看起来不合逻辑,但因为我们将软件包的配置目录指向固件修改工具包的工作目录之外的位置,所以我向您保证,从路由器的角度来看,这在运行时完全没有问题。

初始化脚本。 虽然完全可以不将此脚本注入固件并在以后将其作为启动脚本运行,但我觉得将其放在这里是合适的,如果只是作为将来使用的示例。 最初,Jeremy根据某人的请求创建了该脚本,后来,我对其进行了调整和扩充,使其与DD-WRT和syslog报告更加兼容。

创建新的init(启动)脚本:

注意:您可以使用其他编辑器,我使用vi是因为它与路由器…上提供的内容一致。 让它成为它的内容:

使其可执行:

请注意脚本中的NVRAM等待变量,我们有责任在路由器上安装修改后的固件后为它们提供可使用的东西。

构建修改后的固件

现在一切就绪,是时候将修改后的固件重新打包成我们可以闪存到路由器的压缩二进制文件了。 “build.sh”脚本语法为: ./BUILD_Firmware.sh OUTPUT_DIR工作目录

为此,我们使用提供的脚本,因此发出:

一旦“构建”操作完成,在“输出”目录中将有几个固件映像等待使用。

您现在可以将名为“CUSTOM_IMAGE_00001-GENERIC.bin”的文件刷新到您的路由器,就像您通常使用DD-WRT固件一样。

注:不要忘记在固件闪存之前、期间和之后立即恢复到“出厂默认设置”。

POST FLASH步骤

因为我们让SSMTP包查找NVRAM变量以生成ssmtp配置文件,所以我们现在需要向它提供缺少的信息。 我们将通过使用Web-GUI的“Run Commands”功能来实现这一点。

转到web-GUI->“管理”->“命令”->在文本框中粘贴以下内容:

用您的实际信息替换等号(=)后的文本,然后点击“Run Commands”。 注意:如果您使用的是非TLS的常规SMTP服务器,则要使用的端口是25,而不是587。

现在SSMTP信息已经可以使用,您需要调用init脚本。因此,您可以重新启动路由器,或将其粘贴到“命令”文本框中:

然后再次点击“运行命令”。 此命令的输出应如下所示:

测试您是否可以发送电子邮件。 使用您的电子邮件地址再次将以下命令粘贴到“Commands”文本框中:

然后再次点击“运行命令”。 因为我们使用了-vvv选项来提供额外的详细信息,所以此命令的输出应该如下所示:

如果一切顺利,您应该会在几秒钟内收到测试电子邮件。

我们希望您可以使用此信息将您的家庭路由器的极限推到比您想象的更远,现在您可以真正控制您的家庭路由器和DD-WRT…

相关文章