关于 OpenWRT

一直觉得搞硬件的特别能折腾(前面玩 GPS 发现不少人搞一些很神奇的事情),OpenWRT 大概也是一类。

motivation

现代的路由器大多是基于 Linux 内核的(嗯,没错,不是 Windows),一般在 2-8Mb 的 ROM 和不大超过 32Mb 的 RAM 的环境下工作。一般无线路由生产商提供的为 read only 文件系统(这样可以使用压缩文件系统 SquashFS,如 LiveCD 上常采用的技术,以节省空间),但是由于“产品定位的需求”,消费者拿到的无线路由的功能会根据产品定位,很多功能被阉割掉,并不能充分的利用手上的硬件。

既然是 Linux,那么就存在 hack 的可能。最早 OpenWRT 的发起也就是源于 cisco 发布的 WRT54G 系列,这上面的 OS 由于使用了 Linux 变成了完全 open-source 的产物,根据它的实现,不少 hacker 进行了自己的修改与增强,OpenWRT 就是其中一个比较有名的项目。

要使用这些第三方的固件,自然需要刷无线路由自己的固件,首先需要确定自己的路由是否具有足够的 ROM/RAM 以供新固件使用。我有一个 Mercury 的无线路由 MR54M 自从搬家后一直闲置,后来到网上查了一下,还真有人给它换 flash/内存,然后再刷 OpenWRT 的。

一些重要的功能

到底有些什么功能是像 OpenWRT 提供而原厂不具有的呢?总结几个我觉得比较有用的,

  • 可写的文件系统(JFFS2),包管理系统(opkg,也有用 deb 的分支)
  • 除了常规无线路由的提供在 we interface 上的功能,现在你可以通过 telnet/ssh 等方式连到路由器上操纵它,而它是一个完全的 Linux,这意味着如果你对 Linux 的那些神奇的 iptables 一类东西非常熟悉的话,配置网络的高级功能不在话下,如 firewall、NAT 等等(说到这里想起来我家那边 nc 的网络,据说会要求验证 Windows 主机是否安装了它的 ActiveX 控件,但是似乎一般的 Linux/Mac 主机它就无能为力了,要是作个 NAT 的话兴许能将家里面的 Windows 主机与其隔离开,避免验证和安装 ActiveX 控件?)
  • 对 device 上的 USB 插口提供别的支持,一般的 USB 是为了提供 3G 的接入(见 TP-LINKFAST 这两款无线路由),但是由于现在你控制了 OS,就可以利用 USB 端口做一些别的事情,比如外接 USB 音箱,然后通过 PulseAudio 的功能将无线网上传递的音频播放出来(见这里
  • 调整天线信号发射的强度
  • 盗用别家无线网络

怎么说,无线路由就是一台 Linux 主机,只是本地存储比较受限,那么还有一种可能是通过 NAS 增加它的存储空间,如果 NAS 没有提供一些如 BT 下载之类的功能的话,理论上是可以在无线路由上实现,然后存储在通过 sshfs/NFS/SMBFS 挂载的硬盘上的。

其他的 distribution

除了 OpenWRT 以外,比较有名的类似产品还有 dd-wrttomato,前者甚至有厂商直接提供定制的版本。

  • dd-wrt 据说基于 OpenWRT 的 kernel,提供了 OpenVPN 这种 VPN 技术(嗯,比起某些私有的还是方便多了)
  • tomato 强调的是稳定性,但支持的硬件并没有前者那么多

感觉上可能这些版本都会有自己的定位,如果要刷固件,选择符合自己需要的…

玩具?

从某种角度上来说,对大部分人官方提供的路由功能可能就够用了,而且他们也为某些特定的应用提供了特殊的路由,比如前面提到的 TP-LINK 为 3G 用户分享带宽(现在无线设备非常多,如手机、iPad 笔记本),如果只有一个 3G USB 的 modem,拿这么个小玩意还是很不错的。

——————
And the angel of the LORD found her by a fountain of water in the wilderness, by the fountain in the way to Shur.

Advertisements
关于 OpenWRT

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s