是否可以在嵌入式 Linux 设备(例如:DSL 路由器)上执行脚本?

是否可以在嵌入式 Linux 设备(例如:DSL 路由器)上执行脚本?

各位,我想找到一种通用方法,在带有嵌入式 Linux 的路由器启动过程中运行(简单的 bash)脚本。我已阅读过在以下设备上执行此操作的方法:

  • DD-WRT
  • OpenWRT
  • 任何 NAS,例如 D-Link DNS-323

但我想知道它是否也可以在通用嵌入式设备上实现,例如(大多数情况下是简单的)DSL 路由器。这样做的可能原因如下:

  • 将设备的公共 IP 更新为允许它的 DNS 服务器的通用方法(我发现一些通过简单的 http 命令允许它的服务器)。
  • 将任何数据发送到 FTP 服务器,例如设备的公共 IP。
  • 向远程主机告知“设备已打开”的简单方法,例如对 SSH 家庭服务器执行“telnet MySSHServer 22”。
  • 添加网络规则、ARP 列表、禁用任何网络接口(ethx)......等等。
  • 学习与调查;-)

我听说有些人按照以下步骤使用某些 DSL 路由器执行此操作:

  1. 将所有路由器(包括配置)数据保存到类似固件的文件中。
  2. 编辑该固件文件(即修改“/etc/rc.local”文件)。
  3. 将修改后的固件文件恢复到路由器。

有人知道还有其他更好的方法吗?

答案1

答案取决于设备,因为没有所谓的“通用”路由器。有以下几种方法:

  • 用开放包(DD-WRT、OpenWRT、Tomato 等)替换库存固件
  • 破解库存固件(您描述的 3 步过程)
  • 使用库存固件中的功能(可能未记录或不明显)

我注意到在几台路由器的库存固件中,界面的管理区域中隐藏着一个页面,其中只有一个文本框,该文本框使用 TFTP 或 Telnet 在路由器上运行 shell。它可能被标记为“测试连接”或其他内容。如果您可以从该界面创建或修改文件,您可能能够更改配置。您可能必须打破规则,例如,如果文本框仅接受 IP 地址并在每个 IP 地址上运行“ping”,您可能能够提供一个字符串,例如

127.0.0.1&&/sbin/sshd& 

然后使用 nc/nmap 探测设备,查看 ssh 服务是否可用(端口 22)。

答案2

我发现了一个可能有用的工具:固件修改套件
它是一组工具包,可将 .bin 固件文件的全部内容打开(展开)到名为“fmk”的目录并允许您对其进行编辑,以便您以后可以使用另一个附带的工具将其再次打包到 .bin 文件中。
所以到目前为止,路由器之类的流程是:

  1. 下载.bin 固件文件。
  2. 使用固件修改套件将其解压、编辑并重新打包到您的自定义 .bin 中。
  3. 将其刷入到您的路由器上。

我更愿意这样做:

  1. 将实际路由器配置和数据(包括端口转发、无线配置、密码等)提取到.bin 固件文件。
  2. 使用固件修改套件将其解压、编辑并重新打包到您的自定义 .bin 中。
  3. 将其刷入到您的路由器上。

但到现在我还没找到办法。我甚至不知道这是否可行。

相关内容