Erläuterung: Die Lösung ist für D-Link DFL, Cisco 29xx und WatchGuard Firebox konfiguriert, eignet sich jedoch für alles, was beim Herstellen einer Verbindung über SSH und / oder Hochladen nach einem Zeitplan / Ereignis auf den FTP- / TFTP-Server gesichert werden kann.
Alles begann damit, dass mein Programmierer fragte: "Warum speichern Sie Netzwerkkonfigurationen nicht im Versionskontrollsystem?" Und die Wahrheit - ich dachte - warum? Die meisten Konfigurationsdateien können im Textformat heruntergeladen werden (das sind natürlich Binärdateien, aber lesbare Informationen werden geöffnet und in einem Texteditor angezeigt).
Im Netzwerk haben wir ungefähr 30 verschiedene D-Link DFLs, ein Dutzend Cisco 29xx und ein paar WatchGuard Firebox. Für jedes Gerät haben Angestellte auf Administratorebene der IT-Niederlassung, in der es sich befindet, sowie die IT der Hauptverwaltung Zugriff auf Administratorebene. Dies führt zu Problemen wie "Ich habe sechs Monate lang kein Backup erstellt und alles kaputt gemacht. Haben Sie unser Backup?" Und "Die letzte Sicherung des Geräts wurde vom vorherigen Administrator ausgeführt. Ich weiß nicht, wo. Konfigurieren Sie uns so, wie es war." Und wenn cisco jedes Mal, wenn es gespeichert wird, running-config automatisch auf ftp zurücksetzt, ist dies bei D-Link nicht der Fall. Und das Versionskontrollsystem würde helfen, Probleme wie "Ich weiß nicht mehr, was und wann ich es geändert habe, aber wir haben eine Funktion, die einmal im Monat verwendet wird" aufzuspüren. Die Backup-Regelung bewahrt Sie nicht vor dem menschlichen Faktor und sichert nicht für Sie, daher ist es besser, zu warnen, als zu entwirren.
Ich gebe ehrlich zu, bevor ich mich hinsetzte, um einen Beitrag zu schreiben, wusste ich nichts über ranzig und oxidiert. Aber beide wissen nicht, was ich in vollem Umfang brauche. Der erste ist auf Cisco zugeschnitten und eignet sich nicht für Exoten, der zweite hat keine Benutzerberechtigung (obwohl dies durch einfache Manipulationen mit dem Webserver möglich ist), und vor allem erfordern beide ein Login und ein Passwort für das redundante System. Alle D-Link-DFLs unterstützen die SSH-Anmeldung. Cisco führt Backups selbst zusammen und benötigt im Allgemeinen keine Verbindung dazu. Warum sollten sich die Passwörter regelmäßig ändern, wenn Sie sich mit dem Schlüssel anmelden können?
Es wurde beschlossen, etwas zu tun, das mir alleine passt.
Eigentlich betteln Auto-Backups schon lange. Aber das Versionskontrollsystem - es war frisch.
Die Aufgabe besteht also darin, alle wichtigen Konfigurationsdateien vom Netzwerkgerät an einem Ort mit Unterstützung für die Versionsverwaltung zu sammeln, sie dort regelmäßig automatisch zu aktualisieren und es Administratoren in einer anderen Zeitzone zu ermöglichen, sie auf einfache Weise herunterzuladen, ohne mich um drei Uhr morgens anzurufen. All dies ist natürlich kostenlos.Da die Konfigurationsdatei für alle DFLs gleich heißt, mussten sie beim Kopieren eindeutig benannt werden. Ich wollte auch nicht das vorhandene Laufen-Config-Füllsystem zu ftp mit Cisco umkonfigurieren.
Richten Sie zunächst ein Versionskontrollsystem ein
Ich habe SVN genommen, tk. svn ist das einzige populäre Programm, das verschiedene Binärdateien speichert, nicht alle Dateien im Verlauf. Nicht, dass es bei kleinen Mengen wichtig gewesen wäre, aber schön. Generell berücksichtige ich die geringe Menge an Konfigurationsdateien, die das Versionskontrollsystem berücksichtigen soll - kein Unterschied.
Der Visual SVN-Server wird von der
offiziellen Site mithilfe der On-the-Go-Ready-Methode installiert. Ich habe es auf einen Server unter Windows gestellt, damit es für Kollegen einfacher war zu verwalten (Benutzer anlegen, Rechte verteilen). Als Nächstes wird ein Repository erstellt, die erforderlichen Abschnitte werden darin erstellt, und der einzige Benutzer mit vollständigen Rechten für das Repository wird (vorerst) erstellt. Unter Windows sind die Aktionen abgeschlossen.
Auto-Backups werden von mir von einem einzelnen Linux-Rechner (unter Debian) erstellt.
Zuerst setzen wir svn so, dass wir einen Client haben:
sudo apt-get install svn
Nun wird eine Kopie des Projekts von Hand erstellt (erstellt im aktuellen Verzeichnis):
svn checkout https://servername.mydomain.ru/svn/DFL_BACKUPS/ DFL_BACKUPS --username go
Jetzt habe ich drei Abschnitte im Repository:
- Current_backup, in dem D-Link-DFL-Konfigurationen gespeichert und überschrieben werden.
- Alte_Versionen, in denen Konfigurationen mit einem zugewiesenen Datum gespeichert werden, um den Download für Zweigstellenadministratoren zu vereinfachen.
- Cisco, in dem Cisco- und WatchGuard Firebox-Konfigurationen gespeichert sind (nun, es ist passiert).
Beginnen wir mit automatischen DFL-Sicherungen und dem Einrichten von DFL selbst
Verbindung geht auf ssh. Um Passwörter nicht in offener Form zu präsentieren, wird ein öffentlich-privates Schlüsselpaar verwendet. Private ist auf dem Server unter / usr / dfl_scripts / sshkeys / dfl_key gespeichert.
Wir generieren ein Paar öffentlich-privater Schlüssel auf dem Auto-Backup-Server:
ssh-keygen –t rsa
Das offene wird in alle DFLs gegossen und die SSH-Zugriffsregel wird erstellt:


Nun, die entsprechende Fernverwaltung ist erlaubt. Der Standardport kann beispielsweise auf 2222 geändert werden, obwohl der Zugriff nur von bestimmten Adressen aus möglich ist.

Die Datei mit der aktuellen Konfiguration von D-Link DFL befindet sich im Stammverzeichnis und heißt config.bak. Sie können sie einfach mit scp auf sich selbst kopieren.
Also das Skript (ich habe die Liste der Zweige so geschnitten, dass es kein Blatt gab):
Das Skript ist in Cron vollgestopft und wird täglich um 8:30 Uhr ausgeführt. So sieht Crontab aus:
30 08 * * * /usr/dfl_scripts/autobackup.sh 30 06 * * * /usr/dfl_scripts/ciscobackup.sh 00 06 * * 1 /usr/dfl_scripts/fireboxbackup.sh
Nun zu Cisco
Auf den Geräten selbst ist so etwas konfiguriert:
archive log config logging enable logging size 500 hidekeys path ftp://ftp.mydomain.ru/in/autolog/$H-$T write-memory ip ftp username user ip ftp password mypass ip scp server enable
Infolgedessen setzt der Befehl write-memory die aktuelle Konfiguration auf ftp zurück. Mein FTP befindet sich auf einem anderen Server als eine Reihe von automatischen Sicherungen. Es gibt zwei Möglichkeiten: Erstellen Sie eine Kopie des Repositorys auf diesem Server und fügen Sie dort Konfigurationsdateien hinzu oder kopieren Sie Konfigurationsdateien auf einen benachbarten Server. Grundsätzlich ist der ganze Unterschied, ob man cp oder scp macht.
In das Verzeichnis, in das die Configs mit Cisco fallen, habe ich incron gestellt, um das Erscheinungsbild von Dateien zu überwachen. Anhand des Erscheinungsbilds der Datei benenne ich sie wie gewünscht um und kopiere sie in ein temporäres Verzeichnis auf den Auto-Backup-Collector-Server. Durch das Ausschneiden werden Dateien aus dem temporären Verzeichnis auf svn hochgeladen. Insgesamt habe ich im Versionskontrollsystem einmal am Tag eine aktuelle Konfiguration für eine bestimmte Zeit. Meiner Meinung nach ist dies ausreichend, aber das System kann problemlos für jede Wunschliste geändert werden.
Die Konfiguration von incrontab sieht folgendermaßen aus:
/var/ftp/cisco/in/autolog/ IN_CREATE /usr/ftp_scripts/incron_cisco.sh $# $%
Das Skript selbst:
Das geplante Skript wird auf dem Auto-Backup-Server gemäß dem Zeitplan gestartet:
Wie Sie sehen, handelt es sich hier auch um WatchGuard Firebox. Ich war ehrlich gesagt faul, ein separates Verzeichnis für sie zu erstellen. So fallen Backups auf FTP an den gleichen Ort wie Cisco. WatchGuard-Backups in einem separaten Skript eine halbe Stunde früher und in der Regel einmal pro Woche. Bitte beachten Sie, dass sich die Syntax von Firmware-Version 12 geändert hat. Zuvor konnte dies mit einem Backup-Image zum FTP-Befehl durchgeführt werden, und jetzt wurde der Export hinzugefügt. Darauf konnte ich die Anmeldung per ssh per Schlüssel nicht konfigurieren, daher werden Passwörter verwendet.
WatchGuard-Binärdateien werden nur verschlüsselt exportiert, sodass sie mit Text-Look und Diff nicht sehr gut funktionieren. Achten Sie auf den Verschlüsselungsschlüssel: obligatorische Groß- und Kleinbuchstaben sowie Ziffern, mindestens 8 Zeichen. Bei Nichtbeachtung wird der Befehl einfach nicht ausgeführt, es wird nicht speziell angegeben, wo der Fehler liegt.
Also ist alles erledigt. Nun setzen wir den Client unter Windows auf unseren Arbeitsrechner. Sie können Dateien und Unterschiede einfach über den Browser anzeigen, die Version jedoch nur über den Client von einer bestimmten Revision herunterladen. Wir setzen TorToSiteSVN
von der offiziellen Website .
Erstellen Sie auf dem Server einen Benutzer mit den erforderlichen Rechten (Lesen) für die Zweige.
Anschließend müssen Sie den Client über das Kontextmenü zu einer beliebigen Datei eingeben und eine Verbindung zum Repository herstellen. Sie müssen keine Kopie des Repositorys selbst erstellen, wenn Sie keine Änderungen an den Dateien vornehmen möchten. Seien Sie vorsichtig damit, Sie müssen mit der Kopie über das Versionskontrollsystem arbeiten und nicht nur mit einem Teil des Dateisystems.


Um Unterschiede für nicht standardmäßige Tex-Dateien zu erstellen, müssen Sie sicherstellen, dass SVN diese Dateien nicht als binär, sondern als Text betrachtet. So:
svn propset svn:mime-type text/plain current_backup/*.bak
Führen Sie diesen Befehl beispielsweise unter Linux aus und führen Sie anschließend ein Commit aus.
Nun, hier sind die Änderungen, durch die Augen schauen. Wir sehen, dass sich die Firewall-Regeln geändert haben:


Es ist bequemer, in einem Browser zu schauen.

Wenn etwas passiert ist, kann der Administrator das gewünschte Backup ohne unnötige Gesten zum gewünschten Datum herunterladen.

Obwohl in der Regel das Neueste ausreicht.
In gewisser Weise kam die Erfindung des Fahrrads zustande. Aber es arbeitet seit fast einem Jahr an D-Link DFL, genau wie ich es brauche, und manchmal hilft es sehr.
Ich hoffe, dass jemand nützlich ist.
Referenzen:
Über ranzigWatchGuard Firebox CLI-HandbuchPro oxidiert