如果 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 个可用服务器中的另一个。我该怎么做才能使这项工作自动进行?

定时任务:

*/3 * * * * ping -c4 google.com || wg-command-here?

因此,每隔 3 分钟 google.com 就会被 ping 一次。如果失败,那么它将运行 wg-command-here。这将是什么 =D?

因此,每当 ping 失败 => 与 当前 Wireguard 服务器断开连接 => 连接到总共 5 个可用服务器中的另一个随机,但最好不是当前连接的那个出于显而易见的原因)。

有没有人有一个简洁的脚本可以解决这个问题?我在 Google 上搜索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 脚本的路径]