本来想做科学上网的,结果难度太大,牵连甚广,于是先往后放放。
自从用了树莓派连WiFi,搭建私人局域网以后,网络比之前稳定了很多,使用自己的路由器可以放心地在内网传输数据,路由接硬盘实现多终端看片也是非常爽的。以后将用这一套装备实现私人云存储,想想也是蛮有逼格的。
然而用了一段时间后,偶尔会出现连不上外网的情况。SSH到树莓派,ifconfig
发现WiFi连接断了,没有IP,手动重启:
$ sudo ifdown wlan0
$ sudo ifup wlan0
然后就恢复了。
Google了一下,发现问题出在树莓派断网之后不会自动重连。
网上找到了以下几种解决方案,顺便补充了一下相关知识:
-
最粗暴的方法:每隔5s向
www.google.com
发一个ping,如果ping失败了,则重启网络或者重启系统。
看到这个方法我是崩溃的,居然还真有人用…… -
比较粗暴的方法:将
/etc/wpa_supplicant/ifupdown.sh
复制到/etc/ifplugd/action.d
。
大概原理就是,只要网络发生变化(包括eth0连接或中断),就执行ifupdown.sh
脚本,进行WiFi重连。据说这个方法可行,但是似乎也做了很多不必要的事情,好在一般eth0不会频繁变化,问题也不大。 -
有一点点粗暴的方法:https://github.com/dweeber/WiFi_Check。
这个方法是每隔5分钟,通过ifconfig
检查一下wlan0的IP,如果找不到IP则说明网络断了,进行WiFi重连。
嗯,最后果断选用这个:$ chmod +x WiFi_Check $ sudo vim /etc/crontab
加入
*/5 * * * * root /absolute/path/to/WiFi_Check
这里使用系统级的/etc/crontab
,并以root
用户执行脚本,注意crontab
中需要配置正确的PATH
,因为脚本很多命令都是不指定完整路径的。系统级的crontab
大概是每分钟读一次,因此修改后不需重启系统。
网友评论