0x00 序
昨天tg上的网友给我一台装了pve的玩具服务器玩,尝试手动配置网络的时候不幸失联了,之后只能请他重装。 虽然机器又能访问了,但每次改网络都要担心失联这可太难顶了。
想了个笨法子,有没有用还需要验证,方法先记在下面。
0x01 权宜之计
因为PVE是基于Debian的,网络管理器用的也是Debian的ifupdown2
配置文件主要在/etc/network/interfaces
GUI和手动改配置一般都是改这个文件,
所以我们做改动前把这个文件备份一下
cp -a /etc/network/interfaces /etc/network/interfaces.lgood
如果 /etc/network/interfaces.d/* 下面的文件也要改动的话要做额外的处理,暂时不需要考虑这个
然后我们写个 shell 脚本来判断本地有没有网络,没有的话就先恢复配置文件,然后重启systemd的网络服务
还是不行的话我们索性强制重启 危险,但比重装强
#!/bin/sh
#注意这是权宜之计,不要长时间放在crontab
#最坏的情况会导致修改不了网络配置或不明原因重启(如果你忘掉这个脚本的话)
sleep 240
if ! ping -qc 2 1.1.1.1 2>&1 >/dev/null;then
echo "can't reach 1.1.1.1,restore config and restart network"
if [ -f /etc/network/interfaces.lgood ];then
cp -af /etc/network/interfaces.lgood /etc/network/interfaces
fi
/bin/systemctl restart networking.service
fi
sleep 10
#如果还是没网,尝试重启
if ! ping -qc 2 1.1.1.1 2>&1 >/dev/null;then
echo "still can't reach 1.1.1.1,restore config and do a force reboot"
if [ -f /etc/network/interfaces.lgood ];then
cp -af /etc/network/interfaces.lgood /etc/network/interfaces
fi
/sbin/reboot -f
fi
把这个脚本保存到 /opt/watch_net.sh,并给予执行权限chmod +x /opt/watch_net.sh
crontab -e
每次改网络配置前,在crontab里添加每5分钟一次的检查
*/5 * * * * /opt/watch_net.sh
这样就算改坏了网络失联,理论上再等10多分钟应该有还有希望连上