树莓派 4B OpenWrt 旁路由教程
目次
2022-12-04 更新 #
现在树莓派的价格贵得离谱,性价比很低。如果你还没买,建议你别买。如果你已持有树莓派,建议去闲鱼卖了,换成玩法更多、性能更强的 X86 软路由/迷你主机。我 2019 年 10 月买的树莓派 4B 4GB 内存版价格是 462 元,现在同一家店卖 1098 元。我在闲鱼以 950 元卖掉了树莓派 4B 4GB(含外壳、风扇、电源、HDMI 线、内存卡),买了 1095 元的零刻 EQ59(N5105、16GB RAM、500GB SSD)。EQ59 性能远超树莓派 4B,我在 EQ59 装了 Proxmox VE,可以装多个虚拟机,用途更多,比树莓派好用多了。
树莓派作路由器有什么功能? #
本文内容主要来自 SuLingGG 的 OpenWrt-Rpi 文档,感谢 SuLingGG 编译的 OpenWrt 并写了详细的文档。我的吃灰派树莓派 4B 在墓里躺了近两年,又复活了。欢迎大家捐赠 SuLingGG 编译的 OpenWrt。如果本文太难懂,请到 Youtube 或者哔哩哔哩搜索「树莓派安装 OpenWrt」和「树莓派 旁路由」,看看教程视频了解过程。然后关闭这篇教程再回来看本文。本文主要内容为安装 OpenWrt 固件、旁路由(旁路网关)设置、后续设置(扩充容量、关闭电源灯……)。
请看 SuLingGG 的文档:
刷入固件 #
刷入固件前先准备好作案工具:
选择一个网站下载 SuLingGG 编译的 Lean OpenWrt 固件:openwrt.cc、Google Drive
Google Drive 的下载位置如下,请选择日期最新的固件,如果最新日期没有树莓派 4B 的固件就看看之前的
1 2 3 4 5 6 7 8
firmware ├── 2021-08-26 ├── 2021-08-27 ├── 2021-08-28 └── ... └── lean # Lean 版固件 └── bcm27xx # Lean 版树莓派系列固件 └── bcm2711 # 适用于树莓派 4B (64位)
下载文件名包含 ext4-factory 或 squashfs-factory 的文件,例如 openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz。squashfs 重置系统更方便,ext4 固件扩充容量更简单。下文以 ext4 固件为例。固件版本的区别请看这里
解压文件,获得 openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img
安装 balenaEtcher
microSD(TF)读卡器(建议买 USB3.0 版,速度更快)
删除闪存卡所有分区,格式化为 fat32(不格式化可能导致无法保存设置)
1 条千兆网线
电脑(带网口的更好)
SSH 客户端(可忽略)
准备完毕,现在开始刷入固件:
- 把闪存卡插入读卡器,读卡器插入电脑
- 打开 balenaEtcher
- 点击「Flash from file」
- 选择解压好的「openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img」
- 点击「Select target」,选择闪存卡,注意看容量对不对,请勿选择本机硬盘
- 点击「Flash!」
- 成功后把闪存卡插入树莓派,树莓派插电后红灯常亮表示正常
树莓派设置 #
路由器默认 IP 是 192.168.1.1
,用户为 root
,密码为 password
。如果操作中出现问题导致无法继续配置,请重新刷入固件。
连接树莓派 #
选择一种连接树莓派的方式:
- 断开树莓派的有线连接,电脑连接树莓派发射的 WIFI:OpenWrt
- 断开电脑的无线连接,用网线接入树莓派
修改 WIFI 密码 #
为了防止别人连上 WIFI 捣蛋,先修改 WIFI 密码。
- 点击「网络 -> 无线 -> 修改」
- 点击「基本设置」,在「ESSID」填入 WIFI 名称
- 点击「无线安全」,在「密码」填入新密码
- 点击「保存&应用」
更改 LAN 口 IP 地址 #
我的路由器管理界面地址为 192.168.0.1,接下来要把树莓派的 IP 改为与路由器同一网段,即 192.168.0.x(0≤x≤255)。这里我把树莓派 LAN 口 IP 设置为 192.168.0.100。为了避免冲突,不要把树莓派 LAN 口 IP 最后一段设置成 0/1/255。请根据情况设置,不要照搬我的 IP。如果你的路由器管理界面为 192.168.31.1,那你可以把 IP 设置为 192.168.31.100。更改 IP 后请记好,以后管理界面都在 192.168.0.100。设置前在电脑可以打开终端(CMD 或 Powershell )检查是否冲突:
|
|
如果显示「Destination Host Unreachable」就代表地址没被占用。如果没问题就选择一种设置方式将 LAN 口 IP 改为 192.168.0.100:
打开终端执行命令:
1 2 3 4
ssh [email protected] # 密码是 password uci set network.lan.ipaddr=192.168.0.100 uci commit network /etc/init.d/network restart
用浏览器访问 http://192.168.1.1/,用户名为
root
,密码为password
,手动设置:- 点击「网络 -> 接口 -> LAN -> 修改」
- IPv4 地址改为 192.168.0.100
- 点击「保存&应用」
设置好后重新连接树莓派网络。
更改 LAN 口参数 #
- 登陆 http://192.168.0.100/
- 点击「网络 -> 接口 -> LAN -> 修改」
- 协议:静态地址
- IPV4 地址:192.168.0.100(之前修改过,现在保持不变)
- IPv4 子网掩码: 255.255.255.0
- IPv4 网关:改为上级路由器管理界面 IP:192.168.0.1
- Pv4 广播:把上级路由网段 IP 最后一段改为 255: 192.168.0.255
- 使用自定义的 DNS 服务器:同样为上级路由器 IP:192.168.0.1
- 忽略此接口/不在此接口提供 DHCP 服务 (在页面底部):打勾
- 点击「保存&应用」
连接路由器 #
断开电脑与树莓派的连接,用网线将树莓派接到路由器 LAN 口。
客户端设置 #
连接主路由的设备需要进行以下设置:
- IP 获取方式改为 「静态(或手动)」
- IP 地址:填为路由器网段下任意不冲突的 IP (不能与已分配的 IP 冲突,IP 最后一段也不可为 0/1/255),以上文为例,可设置为 192.168.0.166
- 前缀长度/子网掩码:若提示填写前缀长度,则填写 24,若提示填写子网掩码,则填写 255.255.255.0
- DNS:填写为树莓派 LAN 口 IP:192.168.0.100
- 网关/路由器:填写为树莓派 LAN 口 IP:192.168.0.100
- 其他设置保持默认即可
安装后的设置 #
建议修改管理员密码,其余设置按需调整。
扩充容量 #
固件只使用闪存卡 1G 左右的空间,剩下的空间就闲置了。我前面刷入了 ext4 固件,使用 Linux 系统的 GParted 调整 rootfs 分区即可扩充空间。rootfs 分区前后至少留出 4M 的空间3。详细教程:SD 卡分区扩容指南 | 美丽应用。
修改管理员密码 #
- 点击「系统 -> 管理权」
- 在「密码」和「确认密码」处填入管理员密码
- 在「SSH 密钥」处填写公钥后可以 SSH 免密码连接
- 点击「保存&应用」
关闭电源灯 #
红色电源灯看着不舒服,于是我就关掉了。
点击「系统 -> LED 配置」,使用两个配置。
- 配置 1
- 软件:led0
- LED 名称:led0
- 默认状态:不打勾
- 触发器:无
- 配置 2
- 软件:led1
- LED 名称:led1
- 默认状态:不打勾
- 触发器:无
防火墙 #
我的树莓派刷入系统网络后没问题,但还是引用一下旁路由设置指南的内容,留给需要的人。
如果你的上级路由固件为 老毛子 Pandavan,树莓派做旁路由出现卡顿情况的话,请尝试关闭 Wan 口设置中的 “IPv4 硬件加速”
如果你严格按照此文章操作,但出现 无法上网、访问国内网站缓慢 等症状,可在完成上文全部步骤的基础上,在“网络 - 防火墙 - 自定义规则”中新增一行 iptables 规则并重启防火墙再试:
1
iptables -t nat -I POSTROUTING -j MASQUERADE
若仍未解决,可以尝试删除原有两条规则并重启防火墙再试:
1 2
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
如果以上两个方法未能解决,请尝试在 Lan 口的“物理设置”中取消“桥接接口”的打勾,并在下方的“接口”中选择“eth0”,保存并应用再试。但请注意,此时树莓派的板载无线网卡将无法使用 (有信号但无法上网)。
本篇文章所述设置方法可能对某些型号的华为路由器无效,建议更换其他路由器再试。
超频与散热 #
超频后性能更强,相关教程请看我写的两篇博客。
问答 #
树莓派与路由器断开连接后,怎么让电脑连接树莓派? #
通过 WIFI 或网线连接树莓派,手动把 IP 设置为 192.168.0.100 的同一网段,即 192.168.0.x(0≤x≤255,x≠100),例如 192.168.0.1。此时就能连接,可以用浏览器进入管理界面 192.168.0.100 了。
忘了树莓派的 IP 地址怎么办? #
先把 microSD 卡插入 Linux 电脑,然后打开终端执行命令。
|
|
输出结果里的 192.168.0.100 就是 IP 树莓派地址。如果你不会用 Linux 就重新刷固件吧。
OpenWrt-Rpi 的插件太多了,有精简版吗? #
请使用 OpenWrt-Rpi 的姊妹版 OpenWrt-Mini,点击这里下载,安装方法和 OpenWrt-Rpi 一样。
参考资料 #
- SuLingGG/OpenWrt-Rpi: Raspberry Pi & NanoPi R2S/R4S & G-Dock & x86 OpenWrt Compile Project. (Based on Github Action / Daily Update)
- 自编译 OpenWrt 系列 - 旁路由设置指南 | 美丽应用
- 自编译 OpenWrt 系列 - SD 卡分区扩容指南 | 美丽应用
- 关闭树莓派的指示灯 · Issue #150 · SuLingGG/OpenWrt-Rpi
microSD 才是正确的名称,但它常被误称为 TF 卡。两者的关系如下(摘录自维基百科):microSD卡原本称为TF卡(T-Flash卡或TransFlash),由摩托罗拉与闪迪共同研发,在2004年推出。不过闪迪无法自行将它推广普及化,前期仅有摩托罗拉的手机支持TransFlash。为了能将销路完全拓展,闪迪于是将TransFlash规格并入SD协会,成为SD家族产品之一,造就了目前使用最广泛的手机存储卡。 ↩︎
microSD 是闪存(flash memory)卡,而不是内存(RAM,Random Access Memory)卡,但「内存卡」的说法更广泛。 ↩︎
「rootfs 分区前后至少留出 4M 的空间」的说法是在这里看到的,其实我也不知道为什么要留出 4M 空间。如果你知道,请告诉我。 ↩︎