Strumenti Utente

Strumenti Sito


mikrotik:wgbugwatchdog

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
mikrotik:wgbugwatchdog [03/08/2025 10:03] djbx83mikrotik: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 130+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.\\
  
-:foreach i in=[/interface wireguard peers find] do={ +  :local timeoutSec 130 
-    :local hs [/interface wireguard peers get $i last-handshake] +   
-    :local name [/interface wireguard peers get $i name]+  :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" 
 +      } 
 +  }
  
-    :if ([:len $hs] > 0) do={ +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="COPIA QUI DENTRO LO SCRIPT!"
mikrotik/wgbugwatchdog.1754208196.txt.gz · Ultima modifica: da djbx83

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki