mikrotik:wgbugwatchdog
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
| mikrotik:wgbugwatchdog [03/08/2025 10:03] – djbx83 | mikrotik:wgbugwatchdog [03/08/2025 10:14] (versione attuale) – djbx83 | ||
|---|---|---|---|
| Linea 3: | Linea 3: | ||
| ===== Wireguard Bug - Watchdog automatico per reset peer ===== | ===== Wireguard Bug - Watchdog automatico per reset peer ===== | ||
| - | :local timeoutSec | + | Questo script permette di effettuare un check dell' |
| + | Purtroppo c'è un bug che ancora Mikrotik non ha risolto, che non permette la riconnessione del peer remoto se il peer remoto è dietro nat, probabilmente perchè Mikrotik si aspetta che i pacchetti provengano sempre dalla stessa porta sorgente. (Penso io eh, non so se effettivamente sia questo il problema).\\ | ||
| + | Ad ogni modo, con questo script ho risolto il problema.\\ | ||
| - | :foreach i in=[/ | + | :local timeoutSec 130 |
| - | :local hs [/interface wireguard peers get $i last-handshake] | + | |
| - | :local name [/interface wireguard peers get $i name] | + | |
| + | :local hs [/interface wireguard peers get $i last-handshake] | ||
| + | :local name [/interface wireguard peers get $i name] | ||
| + | :if ([:len $hs] > 0) do={ | ||
| + | :local h [:tonum [:pick $hs 0 2]] | ||
| + | :local m [:tonum [:pick $hs 3 5]] | ||
| + | :local s [:tonum [:pick $hs 6 8]] | ||
| + | :local age ($h * 3600 + $m * 60 + $s) | ||
| + | :if ($age > $timeoutSec) do={ | ||
| + | /interface wireguard peers disable $i | ||
| + | :delay 1 | ||
| + | /interface wireguard peers enable $i | ||
| + | :log warning "WG peer $name riavviato: handshake $age sec fa" | ||
| + | } | ||
| + | } else={ | ||
| + | :log debug "WG peer $name mai connesso: handshake assente" | ||
| + | } | ||
| + | } | ||
| - | | + | Meglio ancora se configurato con lo scheduler: |
| - | :local h [:tonum [:pick $hs 0 2]] | + | |
| - | :local m [:tonum [:pick $hs 3 5]] | + | |
| - | :local s [:tonum [:pick $hs 6 8]] | + | |
| - | :local age ($h * 3600 + $m * 60 + $s) | + | |
| - | :if ($age > $timeoutSec) do={ | + | |
| - | /interface wireguard peers disable $i | + | |
| - | :delay 1 | + | |
| - | /interface wireguard peers enable $i | + | |
| - | :log warning "WG peer $name riavviato: handshake $age sec fa" | + | |
| - | } | + | |
| - | } else={ | + | |
| - | :log debug "WG peer $name mai connesso: handshake assente" | + | |
| - | } | + | |
| - | } | + | |
| + | /system scheduler | ||
| + | add interval=10s name=wg-watchdog on-event=" | ||
mikrotik/wgbugwatchdog.1754208196.txt.gz · Ultima modifica: da djbx83
