目录:网上冲浪指南

使用树莓派作为旁路网关

2021/04/11

家里一直有个吃灰的树莓派,趁着最近换上了精品线路主机,一个用树莓派来做旁路网关的想法油然而生。由于主路由——京东无线宝还没下车,不好直接刷成 OpenWrt,所以有些需求也只能通过树莓派旁路由来实现:

  1. 全局接入互联网

  2. 避免 DNS 污染

最终需要实现的网络结构如下所示:

CBZnehw
之所以这里的主路由地址是 192.168.68.1 是因为京东无线宝无法修改子网网段,你可以按照自己的实际情况将 192.168.68.x 替换掉。

准备树莓派

硬件准备

我的树莓派是大学时期买的 3B,有线网卡只有 100Mbps 的速度,USB 也全部都是 2.0 的。为了能够配上主路由的千兆口,所以又在淘宝买了一个 USB 3.0 千兆网卡(AX88179 Gigabit Ethernet,型号仅供参考)。由于 USB 2.0 的限制,理论上这个 USB 3.0 网卡在树莓派 3B 上的速度应该能有 480Mbps。

再就是电源适配器,树莓派 3B 需要 5V 2.5A 的电源供给,使用输出功率较低的电源适配器会影响树莓派在测试等高负载场景下的性能表现。

软件准备

首先安装树莓派系统烧录工具 —— Raspberry Pi Imager

# pacman -S rpi-imager

运行烧录工具,选择喜欢的系统进行安装,我选择的是不带图形界面的 Manajro ARM。

QgOBI3D
这里我并没有给树莓派安装 OpenWrt,而是选择了更加通用的 Manjaro Linux,这完全是出自个人偏好,以及方便自行升级维护的打算。

将操作系统烧录进树莓派后就可以开机进行一些常规的初始化配置了,例如 fish shell 之类的(在这篇博文有我分享的 Manjaro 常规配置)。

给树莓派配置静态地址

首先卸载 Manjaro 自带的 DHCP 客户端,因为树莓派作为旁路网关,IP 地址需要固定住,使用 DHCP 只会影响获取 IP 地址的速度。接着,修改 systemd-networkd 配置,给树莓安排一个静态 IP。

/etc/systemd/network/20-wired.network
[Match]
Name=eth* (1)

[Network]
Address=192.168.68.3/24 (2)
Gateway=192.168.68.1 (3)
DNS=192.168.68.1 (4)
  1. 设置用来绑定 IP 地址的网卡,例如 eth1,支持 * 作为通配符

  2. 配置本机地址

  3. 配置网关地址,设置为主路由地址即可

  4. 设置 DNS 地址,使用主路由地址即可

树莓派启动 DHCP 服务

接下来安装 dhcp 服务端

# pacman -S dhcp

dhcp 自带了一个样例文件,另存一下,方便以后参考

# mv /etc/dhcpd.conf /etc/dhcpd.conf.example

接着创建 DHCP 服务端配置文件

/etc/dhcpd.conf
option domain-name-servers 192.168.68.1;
option subnet-mask 255.255.255.0;
option routers 192.168.68.3;  (1)
subnet 192.168.68.0 netmask 255.255.255.0 { (2)
  range 192.168.68.100 192.168.68.250;
}
  1. 路由器地址,设置为树莓派的静态 IP 即可

  2. 配置子网 IP,需要与分配给网络接口的子网一致

最后,创建一个 systemd service 文件,用于开机自启 DHCP 服务。

# cp /usr/lib/systemd/system/dhcpd4.service /etc/systemd/system/dhcpd4@.service

然后编辑这份 service 文件,添加网络接口配置。

/etc/systemd/system/dhcpd4@.service
...
[Service]
...
ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/dhcpd.conf -pf /run/dhcpd4/dhcpd.pid %I
...

最后启用 DHCP 服务:

# systemctl enable dhcpd4@eth1

你可以通过 ip link 来查看网卡的名称来替换掉上面命令中的 eth1。

收尾

最后,依次重启主路由、树莓派,然后重新连接电脑的网络,应该就可以看到网关被设置成了树莓派的地址:

$ ip r
> default via 192.168.68.3 dev wlo1 proto dhcp metric 600
> 192.168.68.0/24 dev wlo1 proto kernel scope link src 192.168.68.101 metric 600

问题记录

下面是我在配置树莓派旁路网关的过程中遇到的一些奇怪的问题,可能会对你有所帮助。

电源输出功率不足导致测速结果较低

一开始图方便,用的小米插线板提供的 USB 接口,没注意到输出功率是 5V 2.1A,导致树莓派动不动就报低电压警告。测速的话也只有 40Mbps 左右,换成 5V 2.5A 的电源适配器,马上就到 150Mpbs 了。

内核自带网卡驱动性能差

我买的是 USB 网卡芯片型号是 AX88179,内核自带驱动,但是测速结果还是不够理想。在热心群友的帮助下,替换了厂商提供的 Linux 驱动,测速结果能够到 200Mbps 了。

内容导航

本网站所展示的文章由 Zeeko Zhu 采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可

Zeeko's blog, Powered by ASP.NET Core 🐳