前言

众所周知,学校的网络是要登录的,不过在工作室是有自己的路由器的。虽然工作室的路由器用的很爽,但是有的东西是不得不连学校的网,比如各类报名系统以及一些学校的资料。

在两个网络之间切换其实本来也不是啥难事,但是难就难在校园网要登录,虽然我有脚本,但我已经懒到点一下脚本都觉得懒了。刚好手上有树莓派,所以就来尝试着搭了一个。

方案

树莓派4B确实是有两个网卡的,一个有线一个无线。现在树莓派是以有线的方式连接到了工作室的路由器上,然后无线网卡就空了出来。所以方案就很简单了。有线网卡连工作室内网,无线网卡连接校园网。然后配置下路由表,保证需要连接学校的内容都是通过无线网卡进行发送就行了。

实现

使用指令添加路由表

因为一开始找到的是route指令,所以这里是基于这个指令实现的,实际上还有ip,ip-routes之类一堆实现方式。

连上树莓派,然后敲下面的指令

sudo route add -net [dest] netmask [netmask] dev [device] gw [gateway]
sudo route add -net 10.0.0.0 netmask 255.0.0.0 dev wlan0 gw 10.162.255.254

其中,dest可以是一个范围,但是需要netmask与之配合,这里就涉及到了子网掩码的相关计算,这里顺便复习了一下,不过估计以后还是会拿计算器算。

然后device可以用ifconfig查看,网卡是有命名规范的,我记得鸟哥讲过。最后的gateway就是路由表了,这里可以通过route直接查看,用route -n可以跳过名称解析,比直接敲快一点。

这里我感觉只指定dev就够了,不过还是写上了gateway

敲完之后进行测试是没有问题的。

设置静态路由表

再然后就是一个重启的问题,重启后路由表会被清空。我能找到的大部分资料是关于ubuntu和centos如何设置重启后依然生效的,而我是archlinux的树莓派。即使是arch的官方wiki也只是提了下用ip指令设置静态路由表。

查阅的过程中我了解到我这种想法叫做add static route。顺着这条线索,我找到了一些论坛,他们指示我在/etc/systemd/network中修改相关文件。然后我进来发现只要个有线网的eth0.network文件。这时候arch的另一篇wiki终于起作用了。

原来他们是用systemd-networkd管理网络的。配置文件是可以自己写的,参考其他的说明,我写了个wlan0.network

[Match]
Name=wlan0

[Network]
DHCP=yes
DNSSEC=no

[Route]
Gateway=10.162.255.254
Destination=123.456.78.0/24

[Route]
Gateway=10.162.255.254
Destination=10.0.0.0/8

然后重启网络

sudo systemctl restart systemd-networkd

完成