bash - 如果 ping 失败,将wireguard 重新连接到另一个 VPN 服务器?
问题描述
我正在使用 WireGuard 连接到 Mullvads(= vpn 服务)vpn 服务器。我总共使用了 5 种不同的wireguard vpn 配置(vpn 服务器*)。称为 server1、server2、server3、server4、server5。
所以要连接到我运行的server3 wg-quick up server3
,并断开与当前服务器-server3-的连接-wg-quick down server3
有时 vpn 服务器出现故障。我想要几乎立即重新连接到 5 台可用服务器中的另一台。我该怎么做才能自动完成这项工作?
crontab:
*/3 * * * * ping -c4 google.com || wg-command-here?
所以每 3 分钟 google.com 都会被 ping 通。如果失败,那么它将运行wg-command-here
。哪个会是什么=D?
因此,每当 ping 失败 => 与当前的wireguard 服务器断开连接=> 连接到总共 5 个可用服务器中的另一个(随机,但由于显而易见的原因,最好不是当前连接的那个)。
有没有人有一个可以解决这个问题的简洁脚本?我用谷歌搜索了2 天,根本没有找到该死的解决方案。有可能是什么鬼:o。我的编程知识为零,所以我真的希望在这里有一个复制粘贴解决方案。
解决方案
您需要运行一个脚本,该脚本检查连接时间脚本在服务器在线时对服务器执行 ping 操作,它连接到 wiregaurd vpn,如果连接的服务器 ping 失败 3 次,它会不时检查连接的服务器它通过 ping 检查另一台服务器
在运行之前更改脚本中的 serverip
脚本
#!/bin/bash
server1IP= 84.18.418.64 #change server1 ip or name
server2IP= 84.18.418.687 #change server2 ip or name
server3IP= 845.158.418.64 #change server3 ip or name
server4IP= 44.168.418.64 #change server4 ip or name
server5IP= 64.68.418.64 #change server5 ip or name
while true
do
if /bin/ping -c 1 $server1Ip
then
sudo wg-quick up server1
tries=0
while [[ $tries -lt 3 ]]
do
if /bin/ping -c 1 $server1Ip
then
tries=0
continue
fi
tries=$((tries+1))
done
sudo wg-quick down server1
fi
if /bin/ping -c 1 $server2Ip
then
sudo wg-quick up server2
tries=0
while [[ $tries -lt 3 ]]
do
if /bin/ping -c 1 $server2Ip
then
tries=0
continue
fi
tries=$((tries+1))
done
sudo wg-quick down server2
fi
if /bin/ping -c 1 $server3Ip
then
sudo wg-quick up server3
tries=0
while [[ $tries -lt 3 ]]
do
if /bin/ping -c 1 $server3Ip
then
tries=0
continue
fi
tries=$((tries+1))
done
sudo wg-quick down server3
fi
if /bin/ping -c 1 $server4Ip
then
sudo wg-quick up server4
tries=0
while [[ $tries -lt 3 ]]
do
if /bin/ping -c 1 $server4Ip
then
tries=0
continue
fi
tries=$((tries+1))
done
sudo wg-quick down server4
fi
if /bin/ping -c 1 $server5Ip
then
sudo wg-quick up server5
tries=0
while [[ $tries -lt 3 ]]
do
if /bin/ping -c 1 $server5Ip
then
tries=0
continue
fi
tries=$((tries+1))
done
sudo wg-quick down server5
fi
done
将此脚本保存为wiregaurd.sh 或下载 https://anonfiles.com/p3Y94av1u6/wiregaurd_sh
sudo chmod +x Wiregaurd.sh
sudo sed -i -e 's/\r$//'wiregaurd.sh
sudo nohup "./wiregaurd.sh" &
或者
在启动时运行此脚本,将其放入 crontab
@reboot [wiregaurd 脚本的路径]
推荐阅读
- javascript - 引导表 4 图标未正确显示
- python - 在 keras 中从 pytorch 实现 BCEWithLogitsLoss
- python - SQLAlchemy:通过多态子类过滤现有查询(相当于`.of_type()`,但对于`session.query()`)
- python - 再次加载数据后如何使QTableView刷新背景颜色
- html - 粘在没有滚动的页面上
- typescript - 打字稿将缺少的字段添加到应该具有它们的类型
- python - Dask:无法从单独的 multiprocessing.Process 向全局客户端提交任务
- python - 多个 Django 应用程序的 Django 管理员
- javascript - 如果字典中的所有其他元素都相同,则对计数求和
- javascript - 在同一画布中顺时针旋转一个轮子,逆时针旋转另一个轮子