Импорт конфигураций файрволов/роутеров — гайд по выгрузке¶
Назначение¶
Парсер конфигураций файрволов (backend/app/core/firewall_parsers/)
разбирает running-config устройства и автоматически наполняет Hosts,
Scope, Findings и Credentials (конвейер обогащения — в
docs/modules/ARCHITECTURE.md). Поверх самой конфигурации он умеет
дополнительно по возможности извлекать два вида наблюдаемого живого состояния — данные, которых в конфиге нет вовсе, но которые реально
полезны для разведки:
- ARP-таблица (
ArpEntry: ip, mac, interface) — каждый хост, с которым устройство фактически общалось недавно, независимо от того, сканировался ли он когда-либо. - Список DHCP-lease/клиентов (
DhcpLease: ip, mac, hostname) — то же, плюс (если вендор отдаёт) собственный hostname клиента — часто самая богатая идентифицирующая деталь для несканированного хоста.
Как использовать: выполните команду выгрузки конфигурации вендора как обычно, затем допишите вывод ARP/DHCP-команды в тот же файл перед загрузкой — ничего разделять или помечать не нужно, парсер ищет характерный заголовок таблицы каждой команды (или, у вендоров без заголовка у ARP-дампа, сам формат строк) в любом месте вставленного текста. Если эти команды пропустить, поля из чистой конфигурации (интерфейсы, ACL, NAT, VLAN, пользователи) разберутся как и раньше — подход чисто аддитивный.
Живое состояние не диффится с предыдущей загрузкой
(diff_parsed_configs сравнивает только конфиг) и не сканируется/не
помечается in_scope автоматически — создаются лишь лёгкие заглушки
Host (тег discovered-via-arp-dhcp) или обогащается существующий Host
(тег mac:... / пустой hostname).
Команды по вендорам¶
| Вендор | Экспорт конфигурации | ARP-команда | Команда DHCP-lease |
|---|---|---|---|
| Cisco IOS/IOS-XE | show running-config |
show ip arp |
show ip dhcp binding |
| Cisco ASA | show running-config |
show arp |
show dhcpd binding |
| MikroTik RouterOS | /export |
/ip arp print |
/ip dhcp-server lease print |
| Huawei VRP | display current-configuration |
display arp |
display dhcp server ip-in-use all |
| Fortinet FortiOS | show full-configuration |
get system arp |
get system dhcp lease-list <interface> |
| PaloAlto PAN-OS | экспорт в формате set |
show arp all |
(не поддерживается — см. заметку) |
| UniFi (EdgeOS/USG) | config.gateway.json |
(не поддерживается) | (не поддерживается) |
| pfSense | config.xml |
(не поддерживается) | (не поддерживается) |
Заметки:
- PaloAlto:
show arp allразбирается; стандартной операционной команды просмотра DHCP-lease, сравнимой с остальными, нет (PAN-OS реже бывает DHCP-сервером в сегменте) —dhcp_leasesу этого вендора остаётся пустым намеренно, это не ошибка. - UniFi / pfSense: оба экспортируют структурированную конфигурацию (JSON/XML), а не CLI-текст, поэтому естественного места «дописать CLI-вывод» в тот же файл, как у шести CLI-вендоров выше, нет. Их контроллеры показывают списки клиентов (UniFi: страница Clients; pfSense: Status → DHCP Leases / Diagnostics → ARP Table), но их подключение потребовало бы второго, специфичного пути инжеста — пока не реализовано.
- Доступность hostname: только MikroTik и Fortinet отдают hostname клиента в стандартном выводе DHCP-lease; остальные дают только ip+mac (для создания/обогащения Host этого всё равно достаточно).
Пример — Cisco IOS¶
Вставьте все три вывода в один файл в любом порядке и загрузите как обычно:
hostname EdgeRouter1
!
interface GigabitEthernet0/0
ip address 203.0.113.1 255.255.255.252
!
interface GigabitEthernet0/1
ip address 10.10.10.1 255.255.255.0
!
ip access-list extended OUTSIDE_IN
permit ip any any
!
username admin privilege 15 password 7 0822455D0A16
!
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.10.10.50 23 0022.3344.5566 ARPA GigabitEthernet0/1
Internet 10.10.10.75 - 0033.4455.6677 ARPA GigabitEthernet0/1
IP address Client-ID/Hardware address Lease expiration Type
10.10.10.50 0022.3344.5566 Mar 01 2026 12:00 AM Automatic
Экран предпросмотра покажет счётчики «ARP entries» / «DHCP leases» вместе с обычными интерфейсами/ACL/NAT, а блок «planned changes» сообщит, сколько хостов будет обнаружено новых, а сколько — обогащено.
Почему это безопасно вставлять как есть¶
Парсер никогда не предполагает наличия ARP/DHCP-вывода, и его
обнаружение не влияет на автоопределение вендора (detect() смотрит
только маркеры конфигурации). Извлечение — best-effort аддитивный скан:
строка принимается, только если явно содержит и IP-подобный, и
MAC-подобный токен (firewall_parsers/util.py::extract_ip_and_mac),
поэтому обычные строки конфигурации не могут быть приняты за
ARP/DHCP-данные, а кривой ввод просто даёт пустой список вместо
ошибки.