Board logo

标题: 用面向 DD-WRT 的高级提示和技巧向无线路由器添加 Linux 功能(1) [打印本页]

作者: look_w    时间: 2018-4-22 17:05     标题: 用面向 DD-WRT 的高级提示和技巧向无线路由器添加 Linux 功能(1)

简介DD-WRT 是一种基于 Linux 的固件,可为低端的客户无线宽带路由器增效,可以将一个价值只有 70 美元的玩具转变成一个强大的网联动力室。DD-WRT 为这些小设备带来了 Linux 网络栈的全部功能:有线和无线路由、防火墙、QoS、DHCP 服务器和转发器 (forwarder)、RADIUS 服务器、OpenVPN、VLAN、wake-on-LAN、Wireless Distribution System 转发器模式、Kai 游戏引擎、WPA2 加密和验证等等(参见 )。DD-WRT 提供了一个很棒的 Web GUI 管理接口以及强大的可脚本化的命令行工具。
接下来,您将了解如何获得 DD-WRT、设置安全的 GUI 和命令行管理以及如何探测和配置硬件。
Sebastian Gottschall,又称为 BrainSlayer,是 DD-WRT 的主创者和维护者。DD-WRT 团队则由一个核心开发团队和社区贡献者(参见 )组成。DD-WRT 对于非商业使用是免费的。商业用户必须付费获得许可。还有很多专业服务的选项,您可以在 DD-WRT 商店购买好的硬件组件,比如 Ubiquiti 和 Senao。欢迎您在论坛内捐赠硬件和资金,以及帮助其他用户。
受支持的 OEM 设备DD-WRT 是针对基于 Atheros 和 Broadcom 的 IEEE802.11a/b/g/h/n                无线路由器而设计的,比如 Linksys WRT54GL,它实际上还把支持 DD-WRT 作为其卖点。DD-WRT 项目的一个很有价值的特性是它有  和 。请先查阅这些信息。不要为了一个不受支持的路由器而浪费时间,除非您有兴趣测试它并将您的新发现贡献给社区。
Broadcom 路由器的最低构建只有 2MB 闪存,但仍提供了比供应商最初的固件还要多的功能。基于 Atheros 的路由器需要至少 4MB 闪存。受支持设备的数据库很有帮助,它列出了设备的指标。
您可能都无需亲自安装 DD-WRT,因为有越来越多的供应商现在都预载了 DD-WRT。Buffalo、Netgear、ASUS、Linksys 和 Toplink 均宣称自己的路由器 “预载了 DD-WRT 固件”。
安装 不同安装也不尽相同。我使用的是 Cisco/Linksys WRT160NL 宽带路由器。这是一款很棒的小工具:四个 Ethernet LAN 端口、一个 WAN 端口、8MB 闪存和 32MB RAM、MIMO,以及一个用于连接到外部存储设备的 USB 端口,因此它可以充当一个文件或媒体服务器。
受支持列表内的所有路由器均具有详细的安装指导(请谨遵指导)。不要即兴发挥,则一切就会顺利。您会看到很多警告,提示说对安装过程的任何中断都将会 “砖化” 您的路由器。砖化的意思是路由器无法启动,所以您最好引以为戒。若真的砖化了路由器,可以参考 DD-WRT 维基(参见 )内的 “Recover from a bad flash” 部分。软件受损程度有可能极深以致无法刷新 (reflash),路由器真的成为了一个砖头,但在现实生活中,这种情况很少见。
Web 浏览器也不总是那么合作,您在使用 Web GUI 时有可能会遇到麻烦。但您若能进行正确的配置更改,页面应该会自动刷新。如果它变成空白,那么您的更改就未保存,因此必须清空浏览器缓存、重启浏览器并再次尝试。
启用 Boot Wait:无砖化保障默认的登录名是 root,默认的密码是 admin,路由器的默认 IP 地址是 192.168.1.1。要打开 DD-WRT Web GUI,可以将相邻 PC 上的 Web 浏览器指向 http://192.168.1.1
在做其他操作之前,访问 Administration > Management 页面,并检查 Boot Wait 是否启用,如  所示:
图 1. 总是启用 Boot Wait应该默认启用该选项。它在 root 创建了一个五秒的延迟,所以如果您的路由器变得无法启动,那么就可以利用这个短暂的时间窗口来刷新固件。可以将此视为是无砖化保障。
Save、Apply Setting 以及 Reboot RouterWeb GUI 内的每个配置页都在底部具有 Save 和 Apply Setting 按钮,有时还会有 Reboot Router 按钮。Save 按钮会保存所做的更改,而不应用它们,所以在路由器重启或单击 Apply Setting 按钮之前,更改是不会被激活的。Apply Setting 则会立即保存并应用所做的更改,并在需要时重启服务。Reboot Router 按钮则是为了那些需要重新启动的更改所设(请先确保您保存了这些更改)。
与路由器进行安全会话通过全面且组织良好的 DD-WRT Web GUI 可以处理大多数的管理任务。 显示了路由器上这个 GUI 的样子。(查看 。)
图 2. DD-WRT Web GUI 包含了有关配置和状态的丰富信息它默认支持 HTTP,而这是一些纯文本,很不安全,所以在 Administration >              Management > Web Access 内将其更改为 HTTPS-only 来加密 DD-WRT Web 管理。单击 Apply Setting 以立即保存并激活更改,并退出现有的会话。清空浏览器缓存,重启浏览器,然后将其指向 https://192.168.1.1。(或路由器的 IP 地址,如果您更改了的话。)您首次这么做时,将会收到由 NewMedia-NET GmbH 认证的有关站点证书的吓人警告。继续并永久接受它。您可以生成自己的证书并使用您自己的证书授权,而这是一个有趣的话题,值得我们改天讨论。
您也可以从命令行管理 DD-WRT,而这可以让您得以访问不受 Web GUI 支持的那些配置选项。如果 Web GUI 出现故障,它还可以为您打开通向路由器的另外一扇门。Telnet 默认启用,而 SSH 则没有。您可以以这种方式使用您自己的路由器的 IP 地址 telnet 到路由器:
1
2
3
$ telnet 192.168.1.1
DD-WRT login: root
Password:




无论您配置的用户名是什么,登录名总是 root,密码则是您创建的实际密码。键入 exit 可关闭 telnet 会话。随着您对 DD-WRT 的熟悉,Telnet 应该没有什么问题,但是由于 telnet 很不安全,因此必须在生成路由器上禁用它并使用 SSH 作为替代。请通过 Services > Services 来完成此操作,如  所示:
图 3. 启用 SSH,禁用 Telnet然后单击 Apply Setting,现在应该可以通过 SSH 登录。同样地,用户名总是 root,而密码则是您的实际密码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ ssh root@192.168.1.1
DD-WRT v24-sp2 std (c) 2010 NewMedia-NET GmbH
Release: 08/07/10 (SVN revision: 14896)
root@192.168.1.1's password:
==========================================================
  
____  ___    __        ______ _____         ____  _  _
| _ \| _ \   \ \      / /  _ \_   _| __   _|___ \| || |
|| | || ||____\ \ /\ / /| |_) || |   \ \ / / __) | || |_
||_| ||_||_____\ V  V / |  _ < | |    \ V / / __/|__   _|
|___/|___/      \_/\_/  |_| \_\|_|     \_/ |_____|  |_|
  
                       DD-WRT v24-sp2
                   http://www.dd-wrt.com
  
==========================================================


BusyBox v1.13.4 (2010-08-07 05:06:30 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.




想要进一步加强?可以设置一个无密码的公共密钥登录。这可以防范强力的密码攻击,无人能在没有私有密钥副本的情况下登录。第一步是用 ssh-keygen 命令在您登录的 Linux PC 上创建一个加密密钥对:
1
$ ssh-keygen -t rsa -C router1 -f ~/.ssh/linksys




本例创建了一个 RSA 密钥对,名为 linksys。公共密钥是 linksys.pub,私有密钥是 linksys,二者均存储在 ~/.ssh 目录。虽然您可以随您所愿将它们放在任何位置,但这个目录是存储 SSH 密钥的标准位置。接下来,向 /etc/ssh/ssh_config 添加一行来识别此密钥:
1
IdentityFile ~/.ssh/linksys




-C 选项在纯文本文件的公共密钥文件内创建了一个注释,我用它来识别密钥以防遗忘。现在在 Services > Services 的 SSH 部分提供的字段内将这个新的公共密钥复制到 DD-WRT,并禁用密码登录,如  所示:
图 4. 将公用 SSH 密钥复制到 DD-WRT 以进行公共密钥验证单击 Save,然后 Reboot Router,大功告成。                 如果有 SSH 会话开启,它将被关闭,当重新登录时,系统将不会再要求输入密码。要粘贴进多个密钥,可以在各密钥间插入一个换行符。
可以用 nvram 命令从命令行实现这一目的。请确保您的公共密钥是单引号内无间断的一整行。可以有空格但不能有换行符:
1
2
3
root@linksys:~# nvram set sshd_authorized_keys='ssh-rsa AAAAB3NzaC...89Suj router1'
root@linksys:~# nvram commit
root@linksys:~# reboot




可以用 nvram 在一个由空格分隔的列表内设置多个密钥,并且每个密钥都用单引号括起:
1
2
root@linksys:~# nvram set sshd_authorized_keys='key1' 'key2' 'key3'
root@linksys:~# nvram commit




可以先在文本编辑器内键入以便检查输入是否正确,然后再将输入的全部内容复制并粘贴到命令行。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0