同时使用多网卡提升树莓派网络利用率

1,458 阅读4分钟

树莓派 3 自带的有线网卡是 100M 的,无线网卡是 72M 的,都比较慢。想提升网速的话,最直接的方法是使用 usb 网卡,千兆的有线网卡或者 450M 以上的 2.4GHz 无线网卡或者 5GHz 无线网卡。但因为树莓派 3 的 usb 接口是 2.0 的,而且 tf 卡也要共享带宽,所以也提升不了太多,而高速的 usb 网卡也不便宜(千兆 usb 有线网卡最便宜大概要 50 多,450M 以上的 usb 无线网卡更贵),而且大家手头上通常没有闲置的,为此购买不大值得。

那么一个间接的方法是同时使用有线和无线网卡,这样合理使用的话速度可以叠加。因为我有一个闲置的 300M usb 无线网卡,所以将它和内置有线网卡一起使用(因为测试过,它和内置无线网卡一起使用的话,会互相影响,速度反而更慢,所以不用内置无线网卡了),这样理论上就有 400M 的带宽了,当然实际上达不到。

但一起使用的话需要一些技术手段,如果只是(在同一个网段)简单启用双网卡,虽然两个 ip 地址都能用,但实际上只有一个网卡会工作,因为所有的流量都走到了路由表里第一个网卡了,这样肯定是不行的。那么大致有如下几个方法:
1、两个网卡分别接入不同的网段。
2、两个网卡绑定在一起使用。
3、配置路由表,让两个网卡在同一个网段可以同时使用。

因为我的网络环境很简单,只有一个路由器和一个网段,所以方法 1 我就不考虑了。但如果有两个网段的话,方法 1 是最简单的。开始时我想使用方法 2,将两个有线网卡绑定到一起来共享 1 个 ip 是比较简单的,但将一个有线网卡和一个无线网卡绑定到一起,则麻烦很多,网上资料也比较杂乱。另外因为我配置也是通过 ssh 进行的,不能把网络连接搞断了。还好我还有内置无线网卡可以使用,如果一共只有两个网卡,那几乎就没办法配置了。但即使这样也很麻烦,最后几经尝试都以失败告终。

最后只能使用方法 3。方法 3 的好处是配置简单,但缺点是使用起来比较麻烦,需要自己来做负载均衡,不过灵活性比较高。

我路由器地址是 192.168.1.1,有线网卡是 eth0,无线网卡是 wlan0,在路由器上分别绑定到 192.168.1.6 和 192.168.1.7。那么在两个网卡都连接上后,只需要执行这样一个脚本,就可以让两个网卡同时工作了:

ip route add 192.168.1.0/24 dev eth0 src 192.168.1.6 table 100
ip route add default via 192.168.1.1 dev eth0 table 100
ip rule add from 192.168.1.6 lookup 100

ip route add 192.168.1.0/24 dev wlan0 src 192.168.1.7 table 200
ip route add default via 192.168.1.1 dev wlan0 table 200
ip rule add from 192.168.1.7 lookup 200

具体效果是通过 192.168.1.6 访问树莓派会走有线网卡,通过 192.168.1.7 访问树莓派会走无线网卡。如果从树莓派下载多个文件,可以通过轮询或者随机选择 ip 来生成文件地址列表文件,然后使用 aria2c -i 文件列表 来下载,就可以同时使用两个网卡了。

如果是在树莓派往外连接,还是要看路由表里哪个网卡在前边(用 ip route 命令查看,一般有线网卡在前边),另外也可以在命令里指定网卡,比如用 curl --interface eth0 或者 wget --bind-address 192.168.1.6

可以使用了后,重点就是速度能提升多少了。在我的环境,从树莓派往电脑下载文件,树莓派内置有线网卡能达到 11.3 MB/s,300M 的无线网卡,速度最快能达到 21 MB/s 出头,但不稳定,容易降到十几兆。一起使用的话,最快可以达到 30 MB/s 出头,但容易降到 25 - 26 MB/s。效果还是非常明显的。