跳转至

树莓派4变身旁路由

上篇文章轶哥介绍了树莓派4使用OTG功能变身有线网卡的方法。今天我们就来实践让树莓派4变身路由器。(由于本文的「操作」不具备拨号功能,更适合作为旁路由使用。需要实现拨号请自行研究。😂)

2020年07月23日更新:树莓派可以直接安装OpenWRT作为旁路由,但是无法使用OTG有线网卡这个功能。

让树莓派联网

无线: 使用raspi-config,设置WIFI网络,让树莓派联网。

有线: 使用raspi-config,设置WIFI网络的国家,保存后按Esc退出安装界面,插入网线。

无论选择以上何种方式,请参考树莓派4使用OTG功能变身有线网卡的方法将Type-C接口和电脑的USB接口相连,使用OTG USB网卡确保我们在树莓派中途断网的情况下也能通过ssh [email protected]的方式连接到树莓派。

让树莓派具备AP功能(开热点)

安装RaspAP,让树莓派拥有漂亮的网络管理界面:

curl -sL https://install.raspap.com | bash

安装过程中会有一些选项,根据你的需要来选择即可,无论作出何种选择均不会影响树莓派变身为旁路由。

安装完成后,执行telinit 6,重启设备。

重启完成在浏览器输入http://raspberrypi.local/访问管理界面:

RaspAP-Login

用户名: admin 密 码: secret

登录成功后可以看到当前树莓派已经具备WIFI热点功能。

RaspAP-Home

RaspAP管理界面,我们会发现WiFi client功能无法正常使用。这是因为目前我们的AP工作方式是eth0接入,wlan0发出热点信号。

eth0-wlan0

这时,如果插入的是有线网络,其它设备搜索名称为raspi-webgui的WIFI,输入默认密码ChangeMe即可上网。运行模式如上图。

让USB OTG网卡也能上网

当前的USB OTG网卡仍然是169.254.x.x一类的地址,是无法连接网络的。

编辑/etc/dhcpcd.conf,在最末尾添加如下配置:

# OTG USB usb0 configuration
interface usb0
static ip_address=192.168.130.1/24
static domain_name_server=

生成/etc/dnsmasq.d/usb0.conf文件,添加如下配置:

interface=usb0
dhcp-range=192.168.130.100,192.168.130.255,255.255.255.0,12h

重启dhcpcddnsmasq服务。

sudo systemctl daemon-reload
sudo systemctl restart dhcpcd
sudo systemctl restart dnsmasq

通过ifconfig命令,我们可以看到usb0网卡拥有了192.168.130.1这个IP地址,同时与之相连的电脑也获取到了该网段的IP地址。

如果现在将网线插入到树莓派有线网卡,则USB OTG网卡也可以上网了。虽然usb0wlan0不在同一网段,但是他们之间的设备是可以互相访问的。此时的运行模式如下:

eth0-wlan0-usb0

让树莓派具备无线接入功能

现在我们知道如何将有线网络共享为无线WIFI信号并分享给USB OTG网卡使用。不过很多时候我们并没有有线网络接入的条件,我们需要进行无线网络接入(本文采用外接USB网卡的方式实现),然后分享给有线网卡eth0、无线热点wlan0、OTG USB网卡usb0。不过,由于无线网络接入速率较低,保留有限网卡eth0作为接入网口(WAN口)更具有现实意义,因此本文不再描述如何将其变为LAN口,感兴趣的小伙伴可以自己研究研究。

我们希望树莓派具备下图的运行模式:

eth0-wlan0-usb0-wlan1

我使用具备双频WIFI的网件AC6210网卡,在树莓派下免驱。

raspberry4-ac6210

插入USB无线网卡,执行ifconfig -a确认驱动安装正常,确认网卡编号是wlan1。如不出意外,网卡会自动连上之前连接过的WIFI。

/var/www/html/includes/config.php文件中的

define('RASPI_WIFI_CLIENT_INTERFACE', 'wlan0')

改为

define('RASPI_WIFI_CLIENT_INTERFACE', 'wlan1')

修改/etc/dhcpcd.conf文件,在wlan0(注意是板载网卡wlan0)的配置最后面加上nohook wpa_supplicant。例如:

# RaspAP wlan0 configuration
interface wlan0
static ip_address=10.3.141.1/24
static routers=10.3.141.1
static domain_name_server=9.9.9.9 1.1.1.1
nohook wpa_supplicant

最后重启hostapd

sudo systemctl restart hostapd.service

如一切正常,则USB OTG网卡以及WIFI热点均可正常访问网络。

当然,也有小伙伴发现无法上网,排查方式如下:

route

查看当前设备路由表。结果可能和下述相似:

root@raspberrypi:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.3.141.1      0.0.0.0         UG    304    0        0 wlan0
default         OpenWrt.lan     0.0.0.0         UG    305    0        0 wlan1
10.3.141.0      0.0.0.0         255.255.255.0   U     304    0        0 wlan0
192.168.100.0   0.0.0.0         255.255.255.0   U     305    0        0 wlan1
192.168.130.0   0.0.0.0         255.255.255.0   U     203    0        0 usb0

这是由于默认网关优先级不够导致无法正常上网。

route add default gw 正确的网关地址

修改后即可正常上网。

同理,有线网口eth0和USB无线网卡wlan1都可以作为WAN口接入网络,而具体想选择谁来上网,只需要调整路由的优先级即可。

按照轶哥提供的修改方法,RaspAP原本的功能不会受到影响,而且首页还能显示wlan1的信息,可以可视化配置wlan1接入的无线网络,是不是很酷呢?😎