mikrotik:wgbugwatchdog
Wireguard Bug - Watchdog automatico per reset peer
Questo script permette di effettuare un check dell'attributo last-handshake, se questo è maggiore di 130 secondi allora riavvia il peer.
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.
:local timeoutSec 130
:foreach i in=[/interface wireguard peers find] do={
: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:
/system scheduler add interval=10s name=wg-watchdog on-event="COPIA QUI DENTRO LO SCRIPT!"
mikrotik/wgbugwatchdog.txt · Ultima modifica: da djbx83
