通过本文,你将了解:
- 如何在树莓派上安装OpenWRT
- 如何使用树莓派搭建旁路由
- 本文使用的树莓派型号为
Raspberry Pi 4 Model B
,内存为8G。 - 本文采用的是
openwrt
的变种immortalwrt
,版本为21.02.0-rc3
。相比于openwrt
,immortalwrt
的优势在于它的软件源更加丰富、功能更加强大。
前言
为了连接进入一个在寝室楼间的自治网络,我需要一个能运行bird
与wireguard
的路由器。
而我手头上的路由器并不支持bird
与wireguard
,所以我决定使用树莓派搭建一个旁路由。
何为旁路由
旁路由,顾名思义,就是在原有的路由器旁边再搭建一个路由器,用于连接其他网络。
具体来说,旁路由就是将原有路由器和你的软路由用lan
口互相连接,或者用wan
口连接,然后将原有路由器的lan
口接入你的软路由的lan
口,并进行一些配置,让你的软路由成为原有路由器的一个旁系网络,从而分担原有路由器的部分功能。下方是一个很典型的旁路由拓扑图:
为了实现这一功能,我们需要在树莓派上依次进行以下操作:
- 安装
openwrt
- 配置
openwrt
- 配置原有路由器
安装openwrt
下载openwrt
镜像
首先,我们需要下载openwrt
的镜像。
在这里,我选择了immortalwrt
,因为它的软件源更加丰富、功能更加强大。
你可以在这里找到immortalwrt
的镜像。
对于Raspberry Pi 4 Model B
,我们选择bcm27xx/bcm2711
,然后选择ext4
的完整镜像。
通常你会看到:
rpi-4-ext4-factory.img.gz
rpi-4-ext4-sysupgrade.img.gz
这样两个文件,但是我建议你下载rpi-4-ext4-factory.img.gz
,因为它是一个完整的镜像,可以直接烧录到SD卡中。而rpi-4-ext4-sysupgrade.img.gz
是一个升级包,需要在已经安装了openwrt
的树莓派上进行升级。
烧录镜像
接下来,我们需要将镜像烧录到SD卡中。
你可以使用balenaEtcher
或者Raspberry Pi Imager
来烧录镜像,这里我选择了官方提供的Raspberry Pi Imager
。
选择你下载的镜像,点击烧录,等待几分钟即可完成烧录。
配置openwrt
将插入SD卡的树莓片通电,它就会自动启动。
如果烧录正常,等待几秒你会发现一个名为openwrt
的开放WiFi。
连接该WiFi,访问192.168.1.1
并立即按照提示修改密码,这也将会是你的root密码。
配置旁路由
所谓旁路由,是网络中绕过主要路由或默认路径的一种通信方式。在本方案中,我将会保留原始路由器的DHCP功能,因此旁路由的配置将会非常简单。
1. 配置网络接口
首先,我们需要将树莓派的网络配置为旁路由模式。
- 登录OpenWRT管理界面(
192.168.1.1
) - 进入
Network
→Interfaces
- 编辑
LAN
接口
将LAN接口的配置修改为:
- Protocol:
Static address
- IPv4 address: 与主路由器同网段的IP地址(例如主路由器是
192.168.1.1
,则可设置为192.168.1.2
) - IPv4 netmask:
255.255.255.0
- IPv4 gateway: 主路由器的IP地址(例如
192.168.1.1
) - Use custom DNS servers: 填入DNS服务器地址(例如
114.114.114.114
和8.8.8.8
)
2. 关闭DHCP服务
因为我们要保留主路由器的DHCP功能,所以需要关闭树莓派的DHCP服务:
- 进入
Network
→DHCP and DNS
- 在
Server Settings
选项卡中,找到LAN
接口 - 勾选
Ignore interface
,禁用LAN接口的DHCP服务 - 点击
Save & Apply
3. 配置防火墙
为了让旁路由正常工作,我们需要配置防火墙规则:
- 进入
Network
→Firewall
- 编辑
lan
区域的防火墙规则 - 确保以下设置:
- Input:
Accept
- Output:
Accept
- Forward:
Accept
- 勾选
Masquerading
和MSS clamping
- Input:
4. 重启系统
完成以上配置后,重启树莓派以应用所有设置:
reboot
配置主路由器
1. 设置静态路由
在主路由器的管理界面中,我们需要添加静态路由规则,将特定的流量导向旁路由:
- 登录主路由器管理界面
- 找到
路由表
或静态路由
设置 - 添加路由规则:
- 目标网络: 你想要通过旁路由访问的网络段
- 子网掩码: 对应的子网掩码
- 网关: 树莓派的IP地址(例如
192.168.1.2
)
2. 设置客户端网关(可选)
如果你希望某些设备的所有流量都通过旁路由,可以在这些设备上手动设置网关为树莓派的IP地址。
或者,在支持的路由器上,可以通过DHCP预留的方式为特定设备分配旁路由作为网关。
安装和配置额外软件
现在旁路由已经搭建完成,我们可以在树莓派上安装需要的软件了。
安装BIRD
BIRD是一个功能强大的路由守护进程,支持多种路由协议:
# 更新软件包列表opkg update
# 安装BIRDopkg install bird2 bird2c
# 启用BIRD服务/etc/init.d/bird enable/etc/init.d/bird start
安装WireGuard
WireGuard是一个现代化的VPN解决方案:
# 安装WireGuardopkg install wireguard-tools kmod-wireguard
# 生成密钥对wg genkey | tee privatekey | wg pubkey > publickey
配置示例
创建WireGuard配置文件/etc/config/network
,添加以下接口配置:
config interface 'wg0' option proto 'wireguard' option private_key '你的私钥' list addresses '10.0.0.2/24'
config wireguard_wg0 option description '对等节点' option public_key '对等节点的公钥' option endpoint_host '对等节点的IP地址' option endpoint_port '51820' list allowed_ips '10.0.0.0/24' option persistent_keepalive '25'
测试和验证
1. 检查网络连通性
在旁路由上ping外网,验证网络连接:
ping 8.8.8.8ping baidu.com
2. 检查路由表
查看路由表确认配置正确:
ip route show
3. 检查服务状态
确认安装的服务正常运行:
# 检查BIRD状态/etc/init.d/bird status
# 检查WireGuard状态wg show
故障排除
常见问题
-
无法访问外网
- 检查DNS配置是否正确
- 确认防火墙规则没有阻止流量
- 验证主路由器的网关设置
-
设备无法通过旁路由上网
- 检查静态路由配置
- 确认旁路由的IP地址设置正确
- 验证DHCP设置
-
VPN连接失败
- 检查WireGuard配置文件
- 确认防火墙允许VPN端口
- 验证密钥对是否匹配
调试命令
# 查看系统日志logread
# 查看网络接口状态ip addr show
# 查看防火墙规则iptables -L -n
总结
通过本文的配置,你已经成功搭建了一个基于树莓派的旁路由系统。这个系统可以:
- 与现有网络环境和谐共存
- 支持BIRD路由协议
- 支持WireGuard VPN连接
- 提供灵活的网络路由控制
旁路由的优势在于它不会影响现有的网络结构,同时又能提供额外的网络功能。你可以根据实际需求继续扩展更多功能,比如广告过滤、流量分析等。
建议定期备份OpenWRT的配置文件,以防意外情况下需要快速恢复系统。