Проблема
Конфигурация сетевого оборудования это цифровой паспорт вашей инфраструктуры. VLAN, IP-адреса, правила доступа, настройки маршрутизации всё это может быть потеряно при сбое, выходе оборудования из строя или человеческой ошибке. Восстанавливать сложную сеть с нуля без сохранённых конфигураций это часы или даже дни простоя. При этом ручной бэкап «через раз» с сохранением файлов на локальный диск администратора ненадёжен: про него забывают, конфигурации теряют актуальность, а при увольнении сотрудника исчезает и единственная копия. Нужна автоматическая, централизованная и версионированная система резервного копирования, которая работает независимо от вендора будь то MikroTik, Cisco или D-Link.
Решение
Организовать надёжный бэкап конфигураций можно на трёх уровнях сложности:
- Встроенные средства самого оборудования настройка автоматической выгрузки конфигурации на FTP/TFTP/SCP-сервер по расписанию. Простой вариант, который работает «из коробки» и не требует дополнительного ПО.
-
Централизованные системы управления конфигурациями специализированные инструменты, которые сами подключаются ко всем устройствам по SSH/Telnet, забирают конфигурации, хранят историю изменений и могут отправить уведомление при обнаружении различий. Среди таких решений:
- RANCID классический инструмент, написанный на Perl и Expect, проверенный годами. Поддерживает MikroTik (RouterOS) и Cisco IOS (а также множество других вендоров).
- Oxidized его современная Ruby-альтернатива, более лёгкая, гибкая и простая в настройке. Имеет встроенный веб-интерфейс.
- Ansible универсальный инструмент автоматизации, позволяющий писать плейбуки для бэкапа конфигураций любого сетевого оборудования. Даёт максимальную гибкость и интеграцию с системами контроля версий (Git).
- Самодельные скрипты (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-сервер:
- Зайдите в веб-интерфейс Winbox или WebFig, System, Scripts.
- Создайте новый скрипт с кодом:
# Переменные для подключения к 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
- Перейдите в System, Scheduler, создайте новую задачу (например,
DailyBackup), укажите интервал (например,00:00:00для ежедневного запуска) и в поле On Event пропишите команду/system script run [имя_скрипта].
После этого каждый день в указанное время устройство будет создавать бэкап и отправлять его на FTP-сервер.
1.3. Cisco IOS: автоматическое сохранение конфигурации с помощью функции Archive
В Cisco IOS есть встроенный механизм archive, который позволяет автоматически сохранять копии конфигурации на TFTP/SCP/FTP-сервер при каждом изменении или по расписанию.
Настройка на примере TFTP-сервера:
- Войдите в глобальный режим конфигурации:
cisco
configure terminal
- Задайте путь и параметры архивации:
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-доступа.
1.4. D-Link (DGS-3120 и подобные): встроенная команда autobackup
Многие управляемые коммутаторы 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. Это позволит администратору сразу узнать об успешном завершении бэкапа или о возникших ошибках.
Для этого потребуется:
- Создать бота через BotFather в Telegram и получить его токен.
- Определить свой 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.ios, ansible-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-репозиторием. Главное настроить автоматизацию и не полагаться на «ручной режим».







