Организация простого и надёжного бэкапа конфигураций сетевого оборудования (MikroTik, Cisco, D-Link)

Проблема

Конфигурация сетевого оборудования это цифровой паспорт вашей инфраструктуры. VLAN, IP-адреса, правила доступа, настройки маршрутизации всё это может быть потеряно при сбое, выходе оборудования из строя или человеческой ошибке. Восстанавливать сложную сеть с нуля без сохранённых конфигураций это часы или даже дни простоя. При этом ручной бэкап «через раз» с сохранением файлов на локальный диск администратора ненадёжен: про него забывают, конфигурации теряют актуальность, а при увольнении сотрудника исчезает и единственная копия. Нужна автоматическая, централизованная и версионированная система резервного копирования, которая работает независимо от вендора будь то MikroTik, Cisco или D-Link.

Решение

Организовать надёжный бэкап конфигураций можно на трёх уровнях сложности:

  1. Встроенные средства самого оборудования настройка автоматической выгрузки конфигурации на FTP/TFTP/SCP-сервер по расписанию. Простой вариант, который работает «из коробки» и не требует дополнительного ПО.
  2. Централизованные системы управления конфигурациями  специализированные инструменты, которые сами подключаются ко всем устройствам по SSH/Telnet, забирают конфигурации, хранят историю изменений и могут отправить уведомление при обнаружении различий. Среди таких решений:
    • RANCID  классический инструмент, написанный на Perl и Expect, проверенный годами. Поддерживает MikroTik (RouterOS) и Cisco IOS (а также множество других вендоров).
    • Oxidized  его современная Ruby-альтернатива, более лёгкая, гибкая и простая в настройке. Имеет встроенный веб-интерфейс.
    • Ansible  универсальный инструмент автоматизации, позволяющий писать плейбуки для бэкапа конфигураций любого сетевого оборудования. Даёт максимальную гибкость и интеграцию с системами контроля версий (Git).
  3. Самодельные скрипты (Bash/Python)  когда нужно полное управление процессом или специфические интеграции.

В этой статье мы рассмотрим каждый из подходов. Вы сможете выбрать тот, который лучше всего подходит под размер вашей инфраструктуры и доступные ресурсы.

Пошаговая инструкция

1. Встроенные средства: выгрузка конфигурации с устройств

Этот подход подходит, если у вас немного устройств, и вы не хотите разворачивать дополнительный софт. Достаточно иметь FTP-сервер (подойдёт даже обычная Windows-машина с настроенной FTP-службой) или SCP-сервер (например, Linux-сервер с OpenSSH).

1.1. Настройка FTP/SCP-сервера для хранения бэкапов

  • FTP-сервер можно развернуть на любой операционной системе. Проще всего это сделать через встроенный IIS на Windows Server: в IIS Manager нужно создать новый FTP-сайт, указав путь к папке для бэкапов и настроив разрешения для доступа устройств.
  • SCP-сервер это стандартный SSH-сервер, который есть в любой Linux-системе. Нужно лишь создать отдельного пользователя (например, backupuser), задать ему пароль или настроить аутентификацию по ключам. На роутерах/коммутаторах при использовании SCP обычно указываются те же учётные данные, что и для SSH-доступа.

1.2. MikroTik RouterOS: встроенный скрипт для автоматического бэкапа

В MikroTik RouterOS есть встроенный планировщик задач (Scheduler), который может запускать скрипты по расписанию.

Пример скрипта для создания .backup и .rsc файлов и отправки их на FTP-сервер:

  1. Зайдите в веб-интерфейс Winbox или WebFig,  System, Scripts.
  2. Создайте новый скрипт с кодом:
# Переменные для подключения к FTP-серверу
:local ftpServer "192.168.1.100"
:local ftpUser "backupuser"
:local ftpPassword "StrongPassword123"
:local backupName "backup_$[/system identity get name]_$[/system clock get date].backup"
:local exportName "config_$[/system identity get name]_$[/system clock get date].rsc"

# Создание бэкапов
/system backup save name=$backupName
/export file=$exportName

# Отправка на FTP-сервер
/tool fetch upload=yes src-path=$backupName dst-path=$backupName mode=ftp user=$ftpUser password=$ftpPassword address=$ftpServer
/tool fetch upload=yes src-path=$exportName dst-path=$exportName mode=ftp user=$ftpUser password=$ftpPassword address=$ftpServer

# Удаление временных файлов
/file remove $backupName
/file remove $exportName
  1. Перейдите в System, Scheduler, создайте новую задачу (например, DailyBackup), укажите интервал (например, 00:00:00 для ежедневного запуска) и в поле On Event пропишите команду /system script run [имя_скрипта].

После этого каждый день в указанное время устройство будет создавать бэкап и отправлять его на FTP-сервер.

1.3. Cisco IOS: автоматическое сохранение конфигурации с помощью функции Archive

В Cisco IOS есть встроенный механизм archive, который позволяет автоматически сохранять копии конфигурации на TFTP/SCP/FTP-сервер при каждом изменении или по расписанию.

Настройка на примере TFTP-сервера:

  1. Войдите в глобальный режим конфигурации:

cisco

configure terminal
  1. Задайте путь и параметры архивации:

cisco

archive
 path tftp://192.168.1.100/configs/$h-$t
 write-memory
 time-period 1440

Где:

  • path — адрес TFTP-сервера, $h подставляется hostname устройства, $t — временная метка.
  • write-memory — архивировать конфигурацию после выполнения команды write memory.
  • time-period 1440 — выполнять архивацию каждые 1440 минут (раз в сутки).

После настройки роутер будет автоматически сохранять конфигурацию на TFTP-сервер.

Более продвинутые протоколы (SCP/SFTP) настраиваются аналогично, но требуют предварительной настройки SSH-доступа.

Многие управляемые коммутаторы D-Link поддерживают встроенную команду config autobackup, которая периодически сохраняет конфигурацию на указанный TFTP-сервер.

Пример настройки:

d-link

config autobackup path tftp 192.168.1.100 configs/switch.cfg interval 1440

Команда указывает устройству сохранять конфигурацию на TFTP-сервер 192.168.1.100 в файл switch.cfg каждые 1440 минут (раз в сутки).

На некоторых моделях D-Link также доступна команда create backup time_range, которая позволяет задать расписание для создания бэкапов конфигурации или логов.

2. Централизованное управление бэкапами: RANCID и Oxidized

Если в вашей сети десятки устройств от разных производителей, лучше использовать специализированные системы. Они централизованно подключаются ко всем устройствам, забирают конфигурации и хранят их с историей изменений.

2.1. Oxidized — современная альтернатива RANCID

Oxidized это лёгкий и расширяемый инструмент для бэкапа конфигураций сетевого оборудования. Он поддерживает более 130 типов операционных систем, включая MikroTik RouterOS, Cisco IOS и D-Link, и может использовать в качестве источника данных CSV, SQLite, MySQL или HTTP.

Установка и настройка Oxidized на Ubuntu/Debian:

# Установка Ruby и необходимых пакетов
sudo apt update
sudo apt install ruby ruby-dev libssl-dev libyaml-dev make git

# Установка Oxidized через RubyGems
sudo gem install oxidized oxidized-web

# Создание конфигурационного файла
mkdir -p ~/.config/oxidized
oxidized -e

После запуска будет создан пример конфигурации ~/.config/oxidized/config. Отредактируйте его, указав:

yaml

username: admin               # имя пользователя для доступа к устройствам
password: secret              # пароль
model: ios                    # модель по умолчанию (если не указана в source)

# Источник данных — CSV файл
source:
  csv:
    file: /home/user/.config/oxidized/router.db
    delimiter: !ruby/regexp /:/
    map:
      name: 0
      ip: 1
      model: 2

Создайте файл router.db со списком устройств в формате имя:ip:модель:

router1:192.168.1.1:ios
router2:192.168.1.2:routeros
switch1:192.168.1.3:dlink

Затем просто запустите oxidized, и он начнёт опрашивать устройства по очереди, сохраняя их конфигурации в папку ~/.config/oxidized/configs/ с контролем версий.

Для автоматического запуска Oxidised через systemd используется команда:

sudo systemctl enable oxidized
sudo systemctl start oxidized

Веб-интерфейс будет доступен на порту 8888 (по умолчанию) и позволит просматривать конфигурации прямо в браузере.

2.2. RANCID — проверенное временем решение

RANCID — это классический инструмент, написанный на Perl с использованием Expect. Он активно используется в крупных инфраструктурах уже много лет.

Установка RANCID:

sudo apt install rancid

Конфигурация RANCID находится в файле /etc/rancid/rancid.conf. Основной параметр — список групп устройств LIST_OF_GROUPS. Для каждого устройства в группе нужно прописать IP, тип устройства и учётные данные.

После настройки RANCID будет автоматически собирать конфигурации, отслеживать изменения и отправлять уведомления по email.

3. Ansible: универсальный подход для автоматизации

Если у вас уже используется Ansible для управления серверами, вы можете легко расширить его и на сетевое оборудование.

Пример простого плейбука для бэкапа конфигураций Cisco и MikroTik:

yaml

---
- name: Backup network device configurations
  hosts: network_devices
  gather_facts: no

  tasks:
    - name: Backup running config (Cisco)
      ios_config:
        backup: yes
        backup_options:
          filename: "{{ inventory_hostname }}_running.cfg"
          dir_path: ./backups/
      when: ansible_network_os == 'ios'

    - name: Backup config (MikroTik)
      routeros_command:
        commands:
          - /export compact
      register: mikrotik_config
      when: ansible_network_os == 'routeros'

    - name: Save MikroTik config to file
      copy:
        content: "{{ mikrotik_config.stdout[0] }}"
        dest: "./backups/{{ inventory_hostname }}_config.rsc"
      when: ansible_network_os == 'routeros'

Перед запуском убедитесь, что в файле инвентаря hosts.ini указаны все устройства с соответствующими параметрами ansible_network_os:

[network_devices]
cisco_router ansible_host=192.168.1.1 ansible_network_os=ios
mikrotik_router ansible_host=192.168.1.2 ansible_network_os=routeros

Затем плейбук можно запускать по cron-расписанию:

ansible-playbook -i hosts.ini backup_network.yml

При каждом запуске Ansible будет подключаться к устройствам по SSH, забирать конфигурации и сохранять их в папку ./backups/ с уникальными именами.

4. Интеграция с Git для хранения истории изменений

Все рассмотренные централизованные инструменты (и даже самодельные скрипты) можно легко интегрировать с Git. Это даст вам полную историю изменений, возможность сравнения версий и удобный откат.

Пример для Oxidized: он уже умеет автоматически коммитить изменения в Git при обнаружении различий в конфигурации. Достаточно добавить в ~/.config/oxidized/config:

yaml

output:
  git:
    repository: "/home/user/oxidized-git-repo"
    user: "oxidized"
    email: "oxidized@example.com"

Пример для самодельного скрипта (Bash):

#!/bin/bash
BACKUP_DIR="/backups/network"
cd $BACKUP_DIR
git add .
git commit -m "Automated backup on $(date +%Y-%m-%d)"
git push origin main

Добавьте этот фрагмент в конец вашего скрипта бэкапа, и каждое обновление будет автоматически попадать в репозиторий.

5. Настройка уведомлений (Telegram)

Для оперативного контроля над процессом резервного копирования полезно настроить отправку уведомлений в Telegram. Это позволит администратору сразу узнать об успешном завершении бэкапа или о возникших ошибках.

Для этого потребуется:

  1. Создать бота через BotFather в Telegram и получить его токен.
  2. Определить свой chat_id (отправив боту любое сообщение и вызвав URL https://api.telegram.org/bot<TOKEN>/getUpdates).

Пример Bash-функции для отправки сообщений:

#!/bin/bash
BOT_TOKEN="your_bot_token_here"
CHAT_ID="your_chat_id_here"

send_telegram() {
    local message="$1"
    curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
        -d chat_id="$CHAT_ID" \
        -d text="$message" \
        -d parse_mode="HTML"
}

# Пример использования в скрипте бэкапа
send_telegram "✅ Резервное копирование конфигураций успешно завершено на $(date +'%Y-%m-%d %H:%M:%S')"

Устранение распространённых проблем

ПроблемаВероятная причинаРешение
Ошибка подключения при использовании FTP/TFTPБрандмауэр блокирует порт 21/69 или сервер не доступенУбедитесь, что FTP/TFTP-сервер запущен, порты открыты, и устройства могут до него достучаться. Для TFTP также проверьте права на запись в целевой папке.
RANCID не может подключиться к устройствуУстаревшие учётные данные в cloginrc или несовместимый тип устройстваПроверьте логи RANCID (обычно в /var/log/rancid/). Обновите файл .cloginrc, добавив правильный пароль и метод входа.
Oxidized не забирает конфигурацию с MikroTikНеправильно указана модель устройстваУбедитесь, что в файле router.db указана модель routeros (для версий RouterOS 6 и выше) или routeros7. Oxidized чувствителен к регистру.
Ansible не может подключиться к устройствуНе установлены необходимые коллекцииУстановите коллекции для работы с сетевым оборудованием: ansible-galaxy collection install cisco.iosansible-galaxy collection install community.routeros
Нет уведомлений в TelegramНеверный токен бота или chat_idПроверьте работоспособность API: выполните curl https://api.telegram.org/bot<ТОКЕН>/getMe. Если бот отвечает, проблема в chat_id.
Потеря конфигураций из-за сбоя FTP-сервераОтсутствует резервное копирование самих бэкаповНастройте дополнительную репликацию папки с бэкапами на другой сервер или в облачное хранилище.

Итог

Мы рассмотрели три подхода к организации бэкапа конфигураций сетевого оборудования: от встроенных средств MikroTik, Cisco и D-Link до централизованных систем (Oxidized, RANCID, Ansible) с контролем версий через Git и уведомлениями в Telegram. Бэкап конфигураций сетевого оборудования не требует больших затрат, но экономит часы простоя при аварии. Выбирайте подход, который соответствует размеру вашей сети и доступным ресурсам: для небольшого офиса хватит встроенных средств и FTP-сервера, для десятков устройств Oxidized или Ansible с Git-репозиторием. Главное настроить автоматизацию и не полагаться на «ручной режим».

Menu