Сбой службы поддержки клиентов сервера Ubuntu 22.04LTS
Я тестировал это на нескольких серверах Ubuntu 22.04LTS (только CLI) и пока оказался нестабильным. Я создал новую службу, которая запускает сценарий оболочки для запуска VPN-клиента Globalprotect Palo Alto Networks и автоматического подключения к нашему центру обработки данных. Сценарий каждую минуту выполняет проверку связи с IP-адресом внутри центра обработки данных и в случае сбоя повторно подключает VPN-клиент. У меня было несколько подходов к коду, и пока он нестабильен. Иногда он может работать стабильно, пока я не перезагружаюсь, а потом не работает. Служба или сценарий объединяет несколько экземпляров клиента globalprotect, из-за чего он больше не может подключиться к VPN. Вот служебный файл:
cat /etc/systemd/system/myVpn.service
[Unit]
Description=My Vpn Connection
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/myvpn.sh
ExecStop=/bin/sh -c 'globalprotect disconnect'
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
Сценарий:
cat /usr/local/bin/myvpn.sh
#!/bin/bash
#Variables
ping_targets="x.x.x.x"
failed_hosts=""
#Start gp client vpn and log the event
globalprotect connect -p x.x.x.x -u xxxx
echo "myVpn.service: ## Starting globalprotect ##" | systemd-cat -p info
#Check connectivity every minute
while :
do
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "myVpn.service: ${TIMESTAMP} checking opmgr central reachable over vpn" | systemd-cat -p info
ping -c 1 x.x.x.x > /dev/null
if [ $? -ne 0 ]; then
if [ "$failed_hosts" == "" ]; then
failed_hosts="x.x.x.x"
else
failed_hosts="$failed_hosts, 'x.x.x.x'"
fi
fi
if [ "$failed_hosts" != "" ]; then
globalprotect connect -p x.x.x.x -u xxxx
echo "myVpn.service: ## Reconnecting due to packet loss ##" | systemd-cat -p info
fi
sleep 60
done
Я удалил имена пользователей и IP-адреса и заменил их на x по соображениям безопасности. Я ценю любые отзывы или советы по этому поводу. Это расстраивает, когда первый тестовый сервер работал стабильно все выходные, а вчера он также потерял VPN-соединение. Лучше ли это выполнять как задание crontab, а не как услугу?