Aclaración: la solución está configurada para D-Link DFL, cisco 29xx y WatchGuard Firebox, pero es adecuada para todo lo que puede respaldar cuando se conecta a través de ssh y / o cargarlos en un horario / evento al servidor ftp / tftp.
Todo comenzó con el hecho de que mi programador amigo preguntó: "¿Por qué no almacenan las configuraciones de red en el sistema de control de versiones?" Y la verdad, pensé, ¿por qué? La mayoría de los archivos de configuración se pueden descargar en formato de texto (bueno, estos son binarios, por supuesto, pero la información legible se abre y se muestra en un editor de texto).
En la red, tenemos alrededor de 30 DFL Link DFL diferentes, una docena de Cisco 29xx y un par de WatchGuard Firebox. Para cada dispositivo, los empleados de nivel de administrador de la rama de TI, donde se encuentra, además de TI de la oficina central, tienen acceso de nivel de administrador. Esto conlleva problemas como "No hice una copia de seguridad durante seis meses y rompí todo, ¿tiene nuestra copia de seguridad?" Y "el equipo quemó la última copia de seguridad lo hizo el administrador anterior, no sé dónde, nos configuró como estaba". Y si Cisco ya restablece automáticamente running-config a ftp cada vez que se guarda, entonces este no es el caso con D-Link. Y el sistema de control de versiones ayudaría a rastrear problemas como "No recuerdo qué y cuándo lo cambié, pero tenemos algo que se usa una vez que el mes se ha roto". La regulación de respaldo no lo salva del factor humano y no lo hace por usted, por lo que es mejor advertir que desenredar.
Admito honestamente, antes de sentarme a escribir una publicación, no sabía sobre rancio y oxidado. Pero ambos no saben lo que necesito en su totalidad. El primero está dirigido a Cisco y no funciona muy bien con ningún exótico, el segundo no tiene autorización del usuario (aunque esto puede hacerse con simples manipulaciones con el servidor web) y, lo más importante, ambos requieren un inicio de sesión y una contraseña para el sistema redundante. Todos los DFL de D-link admiten el inicio de sesión ssh. Cisco fusiona las copias de seguridad y, en general, no requiere una conexión. En consecuencia, por qué mantener las contraseñas cambiando periódicamente, además, si puede iniciar sesión con la clave.
Se decidió hacer algo que me convenga solo.
En realidad, las copias de seguridad automáticas ruegan durante mucho tiempo. Pero el sistema de control de versiones era nuevo.
Entonces, la tarea: recopilar todas las configuraciones importantes del equipo de red en un solo lugar con soporte para versionar archivos, actualizarlas automáticamente allí, para permitir que los administradores en otra zona horaria las descarguen de una manera simple, sin llamarme a las 3 de la mañana. Todo esto, por supuesto, es gratis.Para todos los DFL, el archivo de configuración se llama igual, por lo que fue necesario nombrarlos claramente al copiar. Tampoco quería reconfigurar el sistema de llenado de configuración de ejecución existente para ftp con cisco.
Primero, configure un sistema de control de versiones
Tomé svn, tk. svn es el único popular que almacena binarios diff, no todos los archivos en la historia. No es que fuera importante en pequeños volúmenes, pero agradable. En general, tengo en cuenta la pequeña cantidad de archivos de configuración, qué sistema de control de versiones tomar, sin diferencia.
El servidor Visual SVN se instala desde el
sitio oficial utilizando el método listo para usar. Lo puse en un servidor bajo Windows, para que fuera más fácil para los colegas administrar (crear usuarios, distribuir derechos). A continuación, se crea un repositorio, se crean las secciones necesarias en él y se crea el único usuario con todos los derechos sobre el repositorio (por ahora). En Windows, las acciones se completan.
Las copias de seguridad automáticas las hago yo desde una única máquina Linux (bajo Debian).
Primero configuramos svn para que tengamos un cliente:
sudo apt-get install svn
Ahora se crea una copia del proyecto a mano (creado en el directorio actual):
svn checkout https://servername.mydomain.ru/svn/DFL_BACKUPS/ DFL_BACKUPS --username go
Ahora tengo tres secciones en el repositorio:
- Current_backup, donde las configuraciones D-Link DFL se almacenan y se sobrescriben.
- Old_versions, donde las configuraciones con una fecha asignada se almacenan para facilitar la descarga por parte de los administradores de sucursales.
- Cisco, donde se almacenan las configuraciones de Cisco y WatchGuard Firebox (bueno, sucedió).
Comencemos con las copias de seguridad automáticas de DFL y configuremos el propio DFL
La conexión continúa en ssh. Para no mostrar contraseñas en forma abierta, se utiliza un par de claves pública-privada. Privado se almacena en el servidor en / usr / dfl_scripts / sshkeys / dfl_key.
Generamos un par de claves público-privadas en el servidor de copia de seguridad automática:
ssh-keygen –t rsa
el abierto se vierte en todos los DFL y se establece la regla de acceso ssh:


Bueno, se permite la gestión remota correspondiente. El puerto predeterminado puede cambiarse a, por ejemplo, 2222, aunque el acceso solo es posible desde ciertas direcciones.

El archivo con la configuración actual de D-Link DFL se encuentra en la raíz y se llama config.bak, simplemente puede copiarlo usted mismo usando scp.
Entonces, el guión (corté la lista de ramas para que no hubiera hoja):
El script está repleto de cron y se ejecuta a las 8:30 a.m. todos los días. Así es como se ve crontab:
30 08 * * * /usr/dfl_scripts/autobackup.sh 30 06 * * * /usr/dfl_scripts/ciscobackup.sh 00 06 * * 1 /usr/dfl_scripts/fireboxbackup.sh
Ahora sobre cisco
En los dispositivos mismos, se configura algo como esto:
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
Como resultado, el comando write-memory restablece la configuración actual a ftp. Mi ftp está en un servidor diferente a un montón de copias de seguridad automáticas. Hay 2 formas: hacer una copia del repositorio en ese servidor y agregar configuraciones allí o copiar configuraciones a un servidor vecino. Básicamente, la diferencia es si hacer cp o scp.
En el directorio donde caen las configuraciones con Cisco, pongo incron para monitorear la apariencia de los archivos. Por la apariencia del archivo, lo renombro como debería y lo copio al servidor del recopilador de copia de seguridad automática en un directorio temporal. Al recortar, los archivos del directorio temporal se cargan en svn. En total, tengo en el sistema de control de versiones una configuración actualizada durante un tiempo determinado una vez al día. En mi opinión, esto es suficiente, pero el sistema se puede modificar sin ningún problema para cualquier lista de deseos.
La configuración de incrontab se ve así:
/var/ftp/cisco/in/autolog/ IN_CREATE /usr/ftp_scripts/incron_cisco.sh $# $%
El guión en sí:
La secuencia de comandos programada se inicia en el servidor de copia de seguridad automática de acuerdo con la programación:
Como puede ver, aquí también estamos hablando de WatchGuard Firebox. Fui francamente flojo para hacer un directorio separado para ellos. Entonces las copias de seguridad caen en ftp en el mismo lugar que cisco. WatchGuard realiza copias de seguridad en un script separado media hora antes y generalmente una vez por semana. Tenga en cuenta que la sintaxis ha cambiado desde la versión de firmware 12. Anteriormente, esto se podía hacer con una imagen de respaldo para el comando ftp, y ahora se ha agregado la exportación. En él, no pude configurar el inicio de sesión a través de ssh por clave, por lo que se utilizan contraseñas.
Los binarios de WatchGuard se exportan solo encriptados, por lo que con un aspecto de texto y diff no funcionará muy bien. Preste atención a la clave de cifrado: mayúsculas, minúsculas y números obligatorios, al menos 8 caracteres. En caso de incumplimiento, el comando simplemente no se ejecuta, no se indica específicamente dónde está el error.
Entonces, todo se ha hecho. Ahora ponemos al cliente en nuestra computadora en funcionamiento bajo Windows. Simplemente puede ver archivos y diferencias desde el navegador, pero descargue la versión de una revisión específica solo desde el cliente. Ponemos TorToSiteSVN
desde el sitio oficial .
En el servidor, cree un usuario con los derechos necesarios (lectura) para las sucursales.
Luego, debe ingresar el cliente a través del menú contextual a cualquier archivo y conectarse al repositorio. No es necesario crear una copia del repositorio usted mismo si no planea realizar cambios en los archivos. Bueno, tenga cuidado con esto, tendrá que trabajar con la copia a través del sistema de control de versiones, y no solo con una parte del sistema de archivos.


Para hacer diferencias en archivos de texto no estándar, debe asegurarse de que SVN considere que estos archivos no son binarios, sino de texto. Así:
svn propset svn:mime-type text/plain current_backup/*.bak
Ejecute este comando, por ejemplo, en linux y luego realice commit.
Bueno, aquí están los cambios, mira a través de los ojos. Vemos que las reglas del firewall han cambiado:


Es más conveniente mirar en un navegador.

Si sucedió algo, el administrador puede descargar la copia de seguridad deseada sin gestos innecesarios en la fecha deseada.

Aunque, por lo general, lo último es suficiente.
En cierto modo, surgió la invención de la bicicleta. Pero ha estado trabajando en D-link DFL durante casi un año, exactamente como lo necesito, y a veces ayuda mucho.
Espero que alguien sea útil.
Referencias
Sobre rancioWatchGuard Firebox CLI manualPro oxidado