OpenWrt折腾好了

春节假期把OpenWrt折腾好了。树莓派3B在家闲置了很久,一直想装一个OpenWrt作为无线路由器,春节期间搞好了。

首先要刷机,选择OpenWrt的官方镜像和其它变种都可以,社区里有很多这样的项目。OpenWrt提供了Firmware Selector,按照自己的硬件型号选择一个镜像版本就可以了。文件格式有两种,分别是Ext4和SquashFS。我选择的是SquashFS,这是一个层次文件系统,类似于Docker的Write on Copy技术,可以迅速恢复初始设置。

磁盘空间非常麻烦,一开始因为这个事情刷了好几次系统。我的SD卡是16GB的,但是OpenWrt系统初始化只有200MB的空间,装几个程序就不够了。所以尝试了一些方式Resize系统盘,各种Resize工具都不可靠,后来发现比较靠谱的办法是这样的:用cfdisk在空余存储上建立分区,格式化成Ext4文件系统,然后在OpenWrt界面上创建一个挂载点,把Ext4分区挂载到/overlay目录,重启系统就可以代替原来的/overlay卷,这样就就可以把所有的存储都利用上了。

其实用了一段时间发现,实际上磁盘空间的问题没有想象的这么大。OpenWrt系统还是应该保持简洁,尽量少安装一些软件。200MB的空间应该是足够用的。

装好了系统,接下来的事情就是配置接口和无线网络。树莓派只有一个有线网卡和一个无线网卡,用来做路由器有两种连接方式:第一种方式是有线网卡上配置到wan接口,无线网卡作为Master配置WiFi热点连接lan接口。第二方式是在无线网卡配置wwan接口连接外部的WiFi热点,有线网卡配置到lan接口。

放在家里用当然是第一种方式,wan口设置成DHCP连接上级路由器,或者设置成PPPoE直接拨号联网。

设置的时候要注意两个问题:第一是先开启无线热点再设置wan接口,否则就没有lan接口可以连接了,再也无法连接;第二是注意设备配置,一定不要直接修改lan接口的关联设备,我一开始把lan接口关联的设备从br-lan改成了eth0,结果一重启就连不上了,只好重新刷机。应该进入设备配置,把br-lan设备和eth0的关联去掉,就是下面这个√删掉:

做完了接口设置,就可以实现基本的无线路由器功能了。接下来就可以尝试安装一些软件包,发挥OpenWrt的更多特点。

为了扩充树莓派的WiFi接口,我把以前使用的USB WiFi找出来插上,安装上驱动竟然可以用。设置成无线wwan + 无线lan的方式测试了一下,速度很慢,吞吐量只能达到正常模式的一半。搞两个WiFi的必要性不大。

安装Docker也花了一些时间。安装软件库里的docker、dockerd、docker-compose就可以,这是为OpenWrt定制化的docker,适用于OpenWrt独特的文件系统和独特的网络环境。有了Docker就可以安装很多软件了,但是在OpenWrt上安装太多程序不是一个好主意,并且OpenWrt的网络设置是很复杂的,在这种系统上把Docker容器的端口映射出去不像一般的Linux那样简单,涉及到复杂的防火墙设置。我一开始把docker网络全部放开了,尝试使用了一段时间,觉得还是不装Docker比较好。

还有一个情况需要注意:lan接口里的IPv6功能全部关掉。有很多软件是基于IPv4开发的,一些情况下这些软件功能不正常,关闭IPv6就好了。

DHCP服务取消IPv6的支持:

使用了这几天总结一下:OpenWrt适合用来控制家用网络,比如控制家中的域名服务之类的,附带运行一些轻量化的应用,比如广告屏蔽、DDNS,不适合当做应用服务器来用。没有特别的需要不要用它安装Docker。

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表回复