Automatische Sicherung und Wiederherstellung von dynamischen Adresslisten auf Mikrotik

RouterOS in Mikrotik speichert keine dynamischen Elemente in Adresslisten. Bei einem Neustart oder Stromausfall bleiben nur statische Elemente in den Listen. Sie haben beispielsweise eine Regel, die Spammer oder Port-Scanner abfängt und deren IP-Adressen für einen Monat sperrt. Normalerweise werden solche Adressen als dynamische Einträge in Listen gespeichert, aber sie werden nicht während des Neustarts gespeichert, was bedeutet, dass es leicht möglich ist, die "Rettich" -Datenbank zu verlieren, die beispielsweise für einige Monate ununterbrochenen Gateway-Betriebs gesammelt wurde.

Damit dieses Schema funktioniert, benötigen Sie einen FTP-Server (ich besitze Windows, aber die Batch-Datei ist für Nixes leicht zu wiederholen) mit einem Konto, das über Lese- / Schreibberechtigungen verfügt. Der Mechanismus basiert auf dem Zusammenspiel der folgenden Elemente: den Skripten backupDynList_to_FTP und BackupDynListFromFTP auf dem Gateway und dem Skript convertmtik.bat auf dem FTP-Server. Ein Server eines Drittanbieters wird benötigt, um den internen Speicher von Mikrotik auszulagern (Listen können sehr groß sein und nichtflüchtiger Speicher ist nicht für alle Benutzer geeignet) und um die Datei mit leistungsfähigeren Mitteln für die Textverarbeitung zu verarbeiten als die integrierte Skriptsprache von Mikrotik. Der DynListExport-Funktionsaufruf wird verwendet, um das Systemlimit für die Größe der Liste zu umgehen. Die Notwendigkeit, die Liste zu konvertieren, beruht auf der Tatsache, dass, wenn dasselbe Element (z. B. ein statischer Datensatz) bereits in der Datenbank vorhanden ist, beim Import ein Fehler auftritt und der Import abgebrochen wird. Um dies zu vermeiden, wird jedes Mal, wenn ein statischer Datensatz hinzugefügt wird, die Fehlerbehandlungsroutine zurückgesetzt, und im Falle einer Übereinstimmung wird der Datensatz einfach nicht hinzugefügt, und der Importvorgang wird fortgesetzt.

Das Skript BackupDynList_to_FTP wird jede Stunde (00:00) ausgeführt. Es sammelt alle Daten zu dynamischen Datensätzen (die mindestens eine halbe Stunde gültig sind) in allen Listen in der Datei iplist_dyn.src und sendet diese Datei an ftp. Auf dem Server wird jede Stunde mit einer halbstündigen Verschiebung zum ersten Skript (00:30) die Batchdatei convertmtik.bat ausgeführt, die das vom Gateway empfangene ursprüngliche Skript in ein vor Zufallsfehlern geschütztes Skript umwandelt und unter dem Namen iplist_dyn_done.src speichert

Bei einem Absturz oder Neustart des Gateways werden zum Zeitpunkt des Starts automatisch Daten zu dynamischen Datensätzen gelöscht. 60 Sekunden nach dem Start lädt das Skript BackupDynListFromFTP die Datei iplist_dyn_done.src von FTP herunter und startet die Ausführung. Die Listen werden wiederhergestellt.

Der Aktivator Hourly_Dynlist_Backup_on_FTP (/ sys sheduler) wird zu Beginn jeder Stunde ausgeführt:

/system script run BackupDynList_to_FTP 

Skript BackupDynList_to_FTP (vergessen Sie nicht, die FTP-Adresse, den Benutzernamen und das Passwort zu ändern):

 /system script environment remove [ find where name="DynListExport" ]; :global DynListExport do={ :foreach i in=[/ip firewall address–list find where dynamic=yes and timeout>0d00h30m] do={ :local list [/ip firewall address–list get $i list]; :local address [/ip firewall address–list get $i address]; :local timeout [/ip firewall address–list get $i timeout]; :local comment [/ip firewall address–list get $i comment]; :put "/ip firewall address–list add list=$list address=$address timeout=$timeout comment=\"$comment\";"}; } :log info "Starting Backup to FTP Script..." :global iplistfile ("iplist_dyn.rsc") :if ([/file find name=$iplistfile]!= "") do={/file rem $iplistfile}; /execute script="\$DynListExport" file=$iplistfile :delay 60s /tool fetch address="_FTP_" port=21 mode=ftp src–path="iplist_dyn.rsc.txt" user= password= dst–path="iplist_dyn.src" upload=yes :delay 20s /file rem $iplistfile :log info "Finished Backup to FTP!" 

Der Activator BackupDynList_from_FTP (/ sys sheduler) wird beim Start des Gateways (Start) ausgeführt:

 {:delay 60s}; /system script run BackupDynListFromFTP 

Skript BackupDynListFromFTP (vergessen Sie nicht, die FTP-Adresse, den Benutzernamen und das Passwort zu ändern):

 :local BackupFile "iplist_dyn_done.src" /file remove [find name=$BackupFile] /tool fetch address="_FTP_" port=21 mode=ftp src–path="$BackupFile" user= password= /import file–name=$BackupFile {:delay 30s}; /file remove [find name=$BackupFile] /log info "$BackupFile imported" 

Server-Skript Convertmtik.bat - verwendet für seine Arbeit den SED-Port des Linux-Dienstprogramms, beispielsweise von gnuwin32, das im Pfad auf dem Server registriert sein muss:

 echo # ––––––––––––––––––––––––––––––––––––––––––––––––––––– — > iplist_dyn_done.src echo # %date% %time% >> iplist_dyn_done.src echo # ––––––––––––––––––––––––––––––––––––––––––––––––––––– — >> iplist_dyn_done.src echo /ip firewall address–list > iplist_dyn_done.src sed –e "s/;//" –e "s/\/ip firewall address–list //" –e "s/.*/:do { & } on–error={}/" iplist_dyn.src >> iplist_dyn_done.src 

Source: https://habr.com/ru/post/de477510/


All Articles