Автоматические бэкапы конфигов MikroTik
Копия настроек нужна не тогда, когда роутер сгорел. Она нужна, когда кто-то что-то поменял неделю назад, и теперь непонятно, что именно. Разбор: что снимать, как часто, сколько хранить и как потом найти изменение.
Binary или export
Это не выбор, это два разных инструмента.
| Binary (.backup) | Export (.rsc) | |
|---|---|---|
| Что внутри | Слепок всей системы, включая пароли, ключи и сертификаты | Текст команд, которыми конфигурация воспроизводится |
| Читается глазами | Нет | Да |
| Сравнивается построчно | Нет | Да |
| Переносится на другую модель | Нет, только на такую же и обычно ту же версию | Да, с правками под другие имена интерфейсов |
| Пароли внутри | Есть всегда | Нет, если не указать show-sensitive |
| Когда спасает | Железка умерла, нужна такая же и быстро | Надо понять, что изменилось, или собрать точку заново |
Вывод простой: снимать надо оба. Binary для восстановления, export для понимания. По отдельности каждый закрывает половину случаев.
Как часто и сколько хранить
Ежедневно, ночью, и держать копии за две недели. Логика в том, что поломанную конфигурацию замечают не сразу: неделя это обычный срок между «кто-то поправил правило файрвола» и «а почему у нас касса не печатает». Если копий только за вчера, откатываться будет не к чему.
Место это почти не занимает. Текстовый экспорт роутера весит десятки килобайт, двоичная копия сотню-другую. Для полусотни точек четырнадцать ежедневных копий это порядка сотни мегабайт, то есть ничего.
Где их держать
Не на самом роутере. Копия, лежащая на флеш-памяти той же коробки, бесполезна ровно в том случае, ради которого её снимали. Панель после скачивания по умолчанию удаляет файлы с устройства, чтобы не забивать и без того небольшой диск.
И не только на сервере с панелью. Если он умрёт, пропадёт всё сразу: и копии, и база с историей. Поэтому отдельно снимается архив самой панели, с базой, настройками и ключом шифрования, и вот его надо держать где-то ещё. Ключ важнее остального: без него пароли устройств в базе не расшифровать.
Как это устроено в панели
- Правило расписания: что снимать (весь парк, группа или сама панель), в какое время, по каким дням и сколько последних копий держать. По умолчанию 03:00 и четырнадцать копий.
- Оба формата сразу, двоичный и текстовый, каждый отдельным файлом.
- Пароль бэкапа задаётся в правиле. Пусто означает без шифрования, и это осознанный выбор, а не умолчание по недосмотру.
- Старые копии убираются сами, по числу, а не по возрасту: точка, которая месяц лежала и не отвечала, не останется совсем без копий.
- Сравнение любых двух конфигураций одной точки построчно: видно, что именно добавилось и что исчезло.
- Поиск по всем сохранённым конфигурациям сразу. Отвечает на вопросы вида «где ещё остался старый адрес сервера» и «на каких площадках есть это правило».
Проверка, о которой забывают
Бэкап, который никто не пробовал восстановить, это не бэкап, а надежда. Раз в квартал стоит взять копию случайной точки и развернуть её на запасной коробке той же модели. Заодно выяснится, что binary с версии 7.14 не встаёт на 7.21, и что половина точек снимает копии в три часа ночи, когда провайдер на площадке уводит канал на профилактику.
Панель показывает возраст последней копии по каждой точке и поднимает в блок «требует внимания» те, у которых копии старше недели или нет вовсе. Это не отменяет проверку восстановлением, но закрывает более частый случай: копии не снимались, и никто не заметил.
git clone https://github.com/maximdr86/tikpilot
cd tikpilot && cp .env.example .env
docker compose up -d
Частые вопросы
Можно ли обойтись только export?
Можно, но восстановление точки после смерти железки займёт вечер вместо десяти минут, и сертификаты придётся выпускать заново.
Нужно ли шифровать копии?
Если сервер с ними доступен не только вам, обязательно: в двоичной копии лежат пароли Wi-Fi и учётные записи роутера.
Что снимать с точки, которая почти всегда недоступна?
Ничего особенного. Правило отработает в следующий раз, когда точка будет на связи, а панель покажет, что копия старая.
Как быть с паролями в текстовом экспорте?
По умолчанию их там нет. Галочка show-sensitive существует,
но включать её стоит, только понимая, что дальше этот файл живёт как
секрет.