projects:wg_watchdog
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| projects:wg_watchdog [2025/03/23 22:25] – | 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 | sleep 15 | ||
| - | if [ -f / | + | WG_CONF="/ |
| - | | + | WG_INTERFACE=" |
| + | SYSTEMD_UNIT=" | ||
| + | BASE_DIR=" | ||
| + | LOG_DIR=" | ||
| + | LOG_FILE=" | ||
| + | SYSTEMD_LOG_FILE=" | ||
| + | DISABLE_FLAG=" | ||
| + | |||
| + | mkdir -p " | ||
| + | |||
| + | log() { | ||
| + | local message=" | ||
| + | echo " | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | if [ -f " | ||
| + | | ||
| exit 0 | exit 0 | ||
| fi | fi | ||
| - | LOG_FILE="/ | + | log "🔍 Проверка состояния WireGuard..." |
| - | echo "$(date ' | + | |
| - | # Проверка интерфейса wg0 и его | + | # 1. Проверка |
| - | if ip link show wg0 &>/ | + | if [ ! -f " |
| - | if ip link show wg0 | grep -q "state UP"; then | + | log "❌ Конфигурационный |
| - | | + | exit 1 |
| + | fi | ||
| + | log "✅ Конфигурация найдена: $WG_CONF" | ||
| + | |||
| + | # 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 " | ||
| + | | ||
| else | else | ||
| - | | + | |
| - | sudo systemctl restart | + | sudo systemctl restart |
| fi | fi | ||
| else | else | ||
| - | | + | |
| - | sudo systemctl restart | + | 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.1742757903.txt.gz · Последнее изменение: —
