Если ping останавливается, VPN соединение должно переподключаться.
В поисках решения, отблагодарю финансово.
В поисках решения, отблагодарю финансово.
[Unit]
Description=Auto Reconnect VPN Service
After=network.target
[Service]
Type=simple
ExecStart=reconnect.sh (путь поставь к скрипту)
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl enable reconnect_vpn.servicesudo systemctl start reconnect_vpn.serviceСкрипт для reconnect.sh:#!/bin/bash
# Адрес для ping
PING_ADDRESS="8.8.8.8"
# Имя VPN соединения
VPN_CONNECTION="..."
while true; do
if ! ping -c 1 $PING_ADDRESS &> /dev/null; then
echo "Ping не удался, переподключаемся к VPN..."
nmcli con up id $VPN_CONNECTION
sleep 10 # ждём 10 сек
else
echo "Ping прошел удачно"
fi
sleep 5 # Чекаем каждые 5 сек
done
#!/bin/bash
# Адрес для ping
PING_ADDRESS="8.8.8.8"
# Имя VPN соединения
VPN_CONNECTION="..."
# Здесь будет лог
LOG_FILE="/var/log/reconnect_vpn.log"
while true; do
if ! ping -c 1 $PING_ADDRESS &> /dev/null; then
echo "$(date): Ping не удался, переподключаемся к VPN..." >> $LOG_FILE
nmcli con up id $VPN_CONNECTION
sleep 10
else
echo "$(date): Ping успешен" >> $LOG_FILE
fi
sleep 5 # Чекаем подключение каждые 5 секунд
done
[Service]Type=simpleExecStart=reconnect.shRestart=alwaysStandardOutput=syslogСоздаешь файл службы в каталоге /etc/systemd/system, например, reconnect_vpn.service, и открываешь его в текстовом редакторе
sudo nano /etc/systemd/system/reconnect_vpn.service
потом вставляешь этот код:
Код:[Unit] Description=Auto Reconnect VPN Service After=network.target [Service] Type=simple ExecStart=reconnect.sh (путь поставь к скрипту) Restart=always [Install] WantedBy=multi-user.target
опять же, не забудь про путь к скрипту
Сохрани и закрой файл.
Загрузи конфигурацию systemd:
sudosystemctl daemon-reload
Включаешь службу, чтобы она запускалась при загрузке системы:
sudo systemctl enable reconnect_vpn.service
Запустишь службу:
sudo systemctl start reconnect_vpn.service
Скрипт для reconnect.sh:
Bash:#!/bin/bash # Адрес для ping PING_ADDRESS="8.8.8.8" # Имя VPN соединения VPN_CONNECTION="..." while true; do if ! ping -c 1 $PING_ADDRESS &> /dev/null; then echo "Ping не удался, переподключаемся к VPN..." nmcli con up id $VPN_CONNECTION sleep 10 # ждём 10 сек else echo "Ping прошел удачно" fi sleep 5 # Чекаем каждые 5 сек done
Все.
Пусть и в треде финансовая благодарность, но думаю это лишнее, это полезно для коммьюнити. Надеюсь все получилосьБлагодарю за развернутый ответ.