GonetsDocs/Документация/Техническая-документация-api/api/services/arp_service.md
2025-10-14 16:14:11 +05:00

2.8 KiB
Raw Blame History

ARP Service

Сервис низкоуровневого ARP-сканирования локальной сети.

Назначение:

  • Обнаружение активных узлов в пределах сетей хоста путём широковещательных ARP‑запросов от имени выбранного интерфейса.
  • Помощь сервисам более высокого уровня (например, IPService) при проверке занятости адресов перед применением конфигураций.

Особенности реализации:

  • Определяет подключённые сети интерфейса через netifaces и строит CIDR для сканирования.
  • Формирует ARP‑пакеты с помощью scapy (Ether/ARP) и отправляет их с таймаутом.
  • Добавляет локальный адрес интерфейса в результирующий список клиентов.

Требования/ограничения:

  • Для отправки ARP‑кадров могут потребоваться повышенные привилегии или capability на сырой сокет.

class services.arp_service.NetworkScanner(interface=None, translations: Translations = Depends(translations_dependency))

Bases: object

Инициализация сетевого сканера.

Предоставляет методы для сканирования сети с использованием ARP-запросов и вывода информации о клиентах.

print_clients(clients)

Выводит список адресов клиентов в формате таблицы.

  • Parameters: clients (List *[*dict ]) – Список словарей с ключами “ip” и “mac”, представляющих клиентов.

Выводит IP-адреса и MAC-адреса в отсортированном по IP порядке.

scan_network(attempts=3, timeout=2)

Сканирует сеть для обнаружения активных клиентов.

  • Parameters:
    • attempts (int , optional) – Количество попыток отправки ARP-запросов. По умолчанию 3.
    • timeout (int , optional) – Таймаут ожидания ответа в секундах. По умолчанию 2.
  • Returns:
    Список словарей с ключами “ip” и “mac”, представляющих
    обнаруженных клиентов, включая локальные IP-адреса.
  • Return type: List[dict]

NOTE

Учитывает локальные IP-адреса интерфейса и удаляет дубликаты.