Как мы перестали гадать на конфигах и отдали рутину ИИ (но без фанатизма)

Как мы перестали гадать на конфигах и отдали рутину ИИ (но без фанатизма)

Изображение: recraft

Сегодня сетевые конфиги — это очень запутанная сущность. Раньше у тебя была маленькая сеть, два десятка коммутаторов в одной стойке, и ты помнил каждый порт. А теперь облака, удалёнка, куча BGP-соседей, списки доступа на сотню страниц. И всё это живёт своей жизнью.

Классический способ «подключился по SSH — поправил — сохранил» работает до первого кривого правила. Которое ты добавил в пятницу вечером, уставший, потому что «ну надо было срочно открыть порт для тестов». А через три месяца этот порт светится наружу, и security спрашивает: «Ты чё, серьёзно?»

Человеческий мозг не железный. Мы не держим в голове 500 правил Firewall и не помним, что два года назад из-за похожего изменения лежало полсети. Поэтому мы пошли другим путём: не запрещать людям ошибаться, а дать им инструмент, который ловит глупости до того, как они уехали в прод.

Спойлер: мы скрестили Git, эмуляторы сети и локальный ИИ с памятью на всю нашу документацию. Получилось не идеально, но жить стало заметно легче.

Сначала порядок, потом магия

Какую бы умную нейросеть ты ни взял, если конфиги лежат кто в поле, кто в лесу — толку не будет. Поэтому первое условие: всё в Git. Каждый коммутатор, каждый роутер, каждый ACL — в репозитории. Любое изменение теперь выглядит так:

  • создал ветку;
  • поправил YAML или Jinja-шаблон;
  • открыл Pull Request.

И вот тут, до того как конфиг уедет на железо, мы вклиниваемся в свои проверки. Обычный CI сумеет только синтаксис проверить: «скобка не там» или «IP не такой». А вот понять, что новое правило разрешает доступ к базе из любого места — это уже не к линтеру. Тут нужен кто-то с мозгами. Ну или с LLM.

ИИ — это не волшебник, а толковый стажёр

Модели вроде Llama или Mistral отлично понимают, что permit tcp any any eq 3306 значит открыть MySQL настежь. Но «голая» модель не знает, что в вашей компании так делать категорически нельзя. У неё нет ваших политик безопасности, нет истории инцидентов. Поэтому просто кинуть конфиг в ChatGPT — плохая идея. Он и поругает, и похвалит, но внутренних правил не знает. А если знает, значит, вы ему их скормили, а это уже утечка.

Нам нужно было, чтобы ИИ перед ответом лез в нашу базу знаний: политики, инструкции вендоров, старые тикеты. Это называется RAG (Retrieval-Augmented Generation). По-русски — «дай-ка я посмотрю в шпаргалку».

Как это работает на примере

Инженер открывает PR, меняет Firewall-правило. Система не просто скармливает весь конфиг нейросети, а сначала идёт в векторную базу, где лежат наши документы, и ищет похожие.

Допустим, есть правило: allow tcp any any eq 3306. База находит фрагмент из «Стандарта безопасности»: «порт 3306 только из подсети приложений, через прокси». ИИ это читает и пишет в PR коммент:

«Эй, это нарушает пункт 4.2. Нельзя открывать MySQL всему миру. Используй группу App-Proxy». Вжух — и инженер исправляет, не дожидаясь, когда его отругают на код-ревью. Но RAG умеет не только ругаться. Он ещё и память компании хранит.

Почему мы больше не наступаем на старые грабли

У каждого в команде есть такая история: «О, я такое уже делал, тогда полсети легло на два часа». Обычно эти знания уходят вместе с человеком. А мы загрузили в базу все постмортемы, тикеты из Jira и даже записи из корпоративного чата — но аккуратно, без личного.

И вот представь: инженер настраивает OSPF-фильтр. ИИ находит в архиве инцидент двухлетней давности: «Точно такой же фильтр на версии 17.3 привёл к чёрной дыре в маршрутизации». И выдаёт предупреждение. Даже если сейчас версия новая, он просто обратит внимание, и инженер полезет проверять документацию.

Это как если бы у тебя в команде был молчаливый ветеран, который помнит всё дерьмо, случившееся за последние пять лет, и вовремя дёргает за рукав.

А работает ли это вообще? Проверяем на эмуляторе

ИИ хорош, но иногда галлюцинирует. Может сказать, что всё ок, а на деле BGP-соседство не поднимется. Поэтому мы добавили в пайплайн ещё один шаг – эмуляцию.

Берём ContainerLab или Eve-NG, поднимаем там виртуальные копии наших устройств (с теми же версиями ОС, насколько возможно) и применяем новую конфигурацию. Потом запускаем тесты: пинги, BGP-сходимость, отказ линка.

Эмулятор честно скажет: «Соседство не установилось» или «Петля в маршрутизации». Мы эти результаты отдаём обратно ИИ, он их переваривает и пишет в PR: «Эмулятор подтвердил, что всё работает, но будь осторожен с версией: на железе у тебя 17.9, а эмулятор на 17.3».

Да, это не панацея. ASIC на эмуляторе не пощупать, очереди не проверить. Но 90% проблем с маршрутизацией и политиками ловится именно так.

Почему мы не используем облачный ChatGPT

Потому что конфиги — это по сути карта всей внутренней сети. IP-адреса, топология, пароли — да, иногда они зашиты в комментариях. Отправлять это в какой-то API за океан — самоубийство.

Поэтому мы развернули локальные модели. У нас стоит сервер с GPU, на нём крутится Llama или Mistral. Данные никуда не уходят. А значит, не нужно ничего маскировать, вырезать IP и притворяться, что ничего секретного нет. Модель видит конфиг как есть — и анализ получается точнее. Плюс скорость: ответ за пару секунд, а не «подожди, облако подумает».

Как это выглядит в жизни (спойлер: почти как обычный CI)

  1. Инженер пушит изменения в Git.
  2. Запускается CI (GitLab CI, GitHub Actions — не важно).
  3. Сначала обычный линтер: проверка синтаксиса.
  4. Потом RAG-модуль: ИИ лезет в базу знаний, ищет политики и старые кейсы, выдаёт замечания.
  5. Потом эмулятор поднимает стенд, прогоняет тесты.
  6. ИИ собирает всё в один комментарий под Pull Request.

Пример комментария, который видит инженер:

Синтаксис — ок.

Эмулятор — BGP сошёлся, пинги проходят.

Политики — нарушение пункта 5.1 (доступ к порту 22 из любой сети).

История — риск, похожий на инцидент #202 (два года назад так уронили DMZ).

Вердикт — нужен аппрув от security.

Человек читает, исправляет или аргументирует, почему сейчас можно. Без ИИ эти замечания ему бы написал сеньор на ревью через полдня. А тут — мгновенно.

Важный момент: человек всё равно главный

Мы не доверяем ИИ блокировать слияние кода. Он не робот-полицейский, а умный ассистент. Если он ошибся и назвал безопасное изменение опасным — инженер ставит пометку «ложное срабатывание». Мы это логируем и потом правим промпты или доки.

Со временем ложных срабатываний становится меньше. А младшие инженеры, читая развёрнутые комментарии ИИ со ссылками на документы, учатся быстрее. Двойная польза.

Ок, а что мы получили в цифрах?

Мы не фанаты KPI ради KPI, но пару метрик отслеживаем:

  • Время обнаружения ошибки упало с «часы или дни» до нескольких минут (сразу после коммита).
  • Откаты в проде стали реже процентов на 40. Потому что эмулятор ловит глупости до деплоя.
  • Время ревью — старшие инженеры теперь смотрят только сложные моменты, а не вылавливают опечатки. Сэкономлена куча нервов.

Что дальше? Полная автоматизация?

Мы не гонимся за тем, чтобы ИИ сам правил конфиги. Но уже экспериментируем с таким сценарием: ИИ находит устаревшее правило, проверяет его по политикам, прогоняет в эмуляторе и, если уверен, создаёт Merge Request с исправлением. Инженеру остаётся только нажать Approve.

Или ещё круче: пишешь на русском: «Открыть доступ к серверу оплаты из подсети 10.0.0.0/24», а ИИ сам генерирует нужные ACL, сверяет с политиками и даже тесты для эмулятора пишет. До этого мы ещё не дошли, но выглядит реально.

Если коротко

Сети стали слишком сложными, чтобы полагаться только на глаза и память. Git + эмулятор + локальный ИИ с RAG — это не хайп, а рабочий инструмент. Он не заменит инженера, но избавит от рутины, напомнит о старых граблях и не даст случайно открыть MySQL на весь мир.

Попробуйте начать с малого: залейте свои политики в векторную базу, подключите локальную LLM и попросите её комментировать PR. Результат удивит. Только не забудьте про эмулятор — ИИ иногда врёт.

Ирек Багаутдинов, старший архитектор системных решений платформы «Боцман» (входит в «Группу Астра»)

Группа Астра
Автор: Группа Астра
ГК «Астра» (ООО «РусБИТех-Астра») — один из лидеров российской IT-индустрии, ведущий производитель программного обеспечения, в том числе защищенных операционных систем и платформ виртуализации. Разработка флагманского продукта, ОС семейства Astra Linux, ведется с 2008 года. На сегодня в штате компании более 1000 высококвалифицированных разработчиков и специалистов технической поддержки.
Комментарии: