projects:wg_watchdog
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| projects:wg_watchdog [2025/03/23 01:17] – | projects:wg_watchdog [2025/04/06 19:07] (текущий) – | ||
|---|---|---|---|
| Строка 2: | Строка 2: | ||
| Проверка наличия интерфейса и перезапуск при необходимости | Проверка наличия интерфейса и перезапуск при необходимости | ||
| + | версия от 2025-03-27 | ||
| + | |||
| <file bash wg_watchdog.sh> | <file bash wg_watchdog.sh> | ||
| #!/bin/bash | #!/bin/bash | ||
| # ==AUTOEXEC== | # ==AUTOEXEC== | ||
| - | # === WG WatchDog === | + | # === WG WatchDog |
| - | # * wg-watchdog.sh — Мини-наблюдатель WireGuard | + | # * wg-watchdog.sh — Расширенный |
| - | # * Проверяет наличие интерфейса wg0 | + | # * Проверяет наличие интерфейса wg0 и его состояние |
| - | # * перезапускает WireGuard при необходимости. | + | # * Загружает модуль, |
| - | # | + | # * Можно отключить через флаг / |
| + | # // | ||
| - | # Проверка | + | sleep 15 |
| - | if ! ip link show wg0 &>/dev/null; then | + | |
| - | | + | WG_CONF="/ |
| - | sudo systemctl restart | + | WG_INTERFACE=" |
| + | SYSTEMD_UNIT=" | ||
| + | BASE_DIR=" | ||
| + | LOG_DIR=" | ||
| + | LOG_FILE=" | ||
| + | SYSTEMD_LOG_FILE=" | ||
| + | DISABLE_FLAG="/ | ||
| + | |||
| + | mkdir -p " | ||
| + | |||
| + | log() { | ||
| + | local message=" | ||
| + | echo " | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | if [ -f " | ||
| + | log "🛑 Watchdog отключён флагом $DISABLE_FLAG" | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | log "🔍 Проверка состояния WireGuard..." | ||
| + | |||
| + | # 1. Проверка конфигурационного файла | ||
| + | if [ ! -f " | ||
| + | log "❌ Конфигурационный файл | ||
| + | exit 1 | ||
| + | fi | ||
| + | log "✅ Конфигурация найдена: | ||
| + | |||
| + | # 2. Проверка и загрузка модуля wireguard | ||
| + | if ! lsmod | grep -q wireguard; then | ||
| + | log "🧩 Модуль wireguard не загружен. Пробуем загрузить..." | ||
| + | sudo modprobe wireguard || { | ||
| + | log "❌ Не удалось загрузить модуль wireguard" | ||
| + | exit 1 | ||
| + | } | ||
| + | log "✅ Модуль wireguard загружен" | ||
| + | fi | ||
| + | |||
| + | # 3. Проверка активности по handshake | ||
| + | if ip link show " | ||
| + | if sudo wg show " | ||
| + | log "✅ Интерфейс $WG_INTERFACE активен (handshake обнаружен)" | ||
| + | else | ||
| + | log " | ||
| + | sudo systemctl restart | ||
| + | fi | ||
| else | else | ||
| - | echo "[$(date ' | + | log "❌ Интерфейс |
| + | sudo systemctl restart " | ||
| fi | fi | ||
| + | |||
| + | # 4. Проверка автозапуска systemd | ||
| + | if systemctl is-enabled " | ||
| + | log "✅ Автозапуск $SYSTEMD_UNIT уже включён" | ||
| + | else | ||
| + | log "🔁 Включаем автозапуск $SYSTEMD_UNIT..." | ||
| + | sudo systemctl enable " | ||
| + | log "❌ Не удалось включить автозапуск" | ||
| + | exit 1 | ||
| + | } | ||
| + | log "✅ Автозапуск включён" | ||
| + | fi | ||
| + | |||
| + | log "✅ Проверка завершена. WireGuard работает штатно." | ||
| </ | </ | ||
| - | '' | + | |
| + | '' | ||
| + | |||
| + | <code ini wg-watchdog.service> | ||
| + | [Unit] | ||
| + | Description=WireGuard Auto-Recovery Watchdog | ||
| + | After=network-online.target | ||
| + | Wants=network-online.target | ||
| + | |||
| + | [Service] | ||
| + | Type=oneshot | ||
| + | ExecStart=/ | ||
| + | </ | ||
| + | |||
| + | ''/ | ||
| + | |||
| + | <code ini wg-watchdog.timer> | ||
| + | [Unit] | ||
| + | Description=Запуск WG WatchDog по расписанию | ||
| + | |||
| + | [Timer] | ||
| + | OnBootSec=1min | ||
| + | OnUnitActiveSec=5min | ||
| + | Persistent=true | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=timers.target | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | **🚀 Команды для активации** | ||
| + | <code bash> | ||
| + | sudo systemctl daemon-reload | ||
| + | sudo systemctl enable --now wg-watchdog.timer | ||
| + | </ | ||
| + | **Проверка:** | ||
| + | < | ||
| + | systemctl list-timers --all | grep wg-watchdog | ||
| + | </ | ||
| + | **Логи (по journalctl): | ||
| + | < | ||
| + | journalctl -u wg-watchdog.service --no-pager --since today | ||
| + | </ | ||
projects/wg_watchdog.1742681870.txt.gz · Последнее изменение: —
