Gratuitous ARP
Gratuitous ARP (от англ. gratuitous — «безвозмездный», «добровольный», «беспричинный») — это сетевой протокол, реализованный на основе протокола разрешения адресов (ARP, Address Resolution Protocol), при котором устройство отправляет ARP-запрос или ARP-ответ, не имеющий непосредственного запроса от другого узла сети. Основная цель такой передачи — не получение MAC-адреса по известному IP-адресу, а информирование всех устройств в локальной сети об изменении соответствия между IP-адресом и MAC-адресом самого отправителя. Gratuitous ARP является важным механизмом для обеспечения корректной работы сетей Ethernet, особенно в сценариях смены сетевых адаптеров, настройки отказоустойчивых конфигураций и предотвращения конфликтов IP-адресов.
Принцип работы
Обычный ARP-запрос отправляется, когда устройству A необходимо узнать MAC-адрес устройства B по его IP-адресу. Устройство A отправляет широковещательный (broadcast) запрос, содержащий IP-адрес B. Все устройства в сети получают этот запрос, но отвечает только то, чей IP-адрес совпадает с указанным. В ответе содержится MAC-адрес устройства B. После этого устройство A сохраняет полученную пару «IP — MAC» в своей ARP-таблице (кэше).
Gratuitous ARP работает иначе. Устройство отправляет ARP-пакет, в котором и IP-адрес отправителя, и IP-адрес получателя совпадают с собственным IP-адресом устройства. При этом в качестве MAC-адреса получателя может быть указан как широковещательный адрес (FF:FF:FF:FF:FF:FF), так и собственный MAC-адрес. Такой пакет не предназначен для получения ответа — он служит для оповещения сети. Существует два основных варианта реализации:
- Gratuitous ARP-запрос: устройство отправляет ARP-запрос, в котором поле «IP-адрес отправителя» равно его собственному IP-адресу, а поле «IP-адрес получателя» — тому же адресу. Поле «MAC-адрес отправителя» содержит реальный MAC-адрес устройства. Все остальные узлы сети, получив такой запрос, могут обновить свои ARP-таблицы, записав новое соответствие.
- Gratuitous ARP-ответ: устройство отправляет ARP-ответ без предшествующего запроса. В этом пакете поля «IP-адрес отправителя» и «IP-адрес получателя» также совпадают. Такой ответ может быть использован, например, для объявления о смене MAC-адреса.
Назначение и применение
Gratuitous ARP выполняет несколько ключевых функций, критически важных для стабильной работы локальных сетей.
Обнаружение конфликтов IP-адресов
При включении или перезагрузке сетевого интерфейса операционная система часто отправляет Gratuitous ARP-запрос. Если в сети уже есть устройство с таким же IP-адресом, оно ответит на этот запрос, инициировав конфликт. Это позволяет операционной системе или сетевому администратору своевременно обнаружить дублирование адресов и предпринять меры (например, выдать сообщение об ошибке или переключиться на другой IP). В протоколах IPv4, где управление адресами может быть менее централизованным, чем в IPv6, это особенно актуально.
Обновление ARP-таблиц соседних устройств
При смене сетевого адаптера (например, после замены вышедшей из строя сетевой карты) MAC-адрес устройства изменяется, а IP-адрес остаётся прежним. Без Gratuitous ARP все другие устройства в сети продолжали бы отправлять данные на старый MAC-адрес, что привело бы к потере пакетов. Отправив Gratuitous ARP, устройство заставляет всех соседей обновить свои ARP-таблицы, и трафик начинает поступать на новый MAC-адрес. Этот механизм широко используется в кластерных и отказоустойчивых конфигурациях, например, в протоколах VRRP (Virtual Router Redundancy Protocol) и HSRP (Hot Standby Router Protocol). Когда активный маршрутизатор выходит из строя, резервный берёт на себя его IP-адрес и отправляет Gratuitous ARP, чтобы коммутаторы и другие маршрутизаторы перенаправили трафик на него.
Поддержка виртуальных IP-адресов
В балансировщиках нагрузки и системах высокой доступности часто используются виртуальные IP-адреса (VIP). Физический сервер, который в данный момент обрабатывает запросы на VIP, отправляет Gratuitous ARP, чтобы сообщить сети, что трафик на этот VIP следует направлять на его MAC-адрес. При переключении на другой сервер новый владелец VIP также отправляет Gratuitous ARP, обновляя ARP-таблицы.
Инициализация сетевого интерфейса
Многие операционные системы (например, Windows, Linux) отправляют один или несколько Gratuitous ARP-пакетов сразу после того, как сетевой интерфейс получает IP-адрес (по DHCP или статически). Это помогает быстро интегрировать устройство в сеть, не дожидаясь, пока другие узлы сами обнаружат его через обычные ARP-запросы.
Формат пакета Gratuitous ARP
Пакет Gratuitous ARP имеет ту же структуру, что и обычный ARP-пакет. Отличия заключаются в заполнении полей.
| Поле | Значение в стандартном ARP-запросе | Значение в Gratuitous ARP (типичный случай) |
|---|---|---|
| Тип операции (HRD) | 1 (Ethernet) | 1 (Ethernet) |
| Тип протокола (PRO) | 0x0800 (IPv4) | 0x0800 (IPv4) |
| Длина аппаратного адреса (HLN) | 6 | 6 |
| Длина адреса протокола (PLN) | 4 | 4 |
| Код операции | 1 (запрос) или 2 (ответ) | 1 (запрос) или 2 (ответ) |
| MAC-адрес отправителя (SHA) | MAC-адрес запрашивающего | MAC-адрес отправителя (собственный) |
| IP-адрес отправителя (SPA) | IP-адрес запрашивающего | Собственный IP-адрес |
| MAC-адрес получателя (THA) | 00:00:00:00:00:00 (неизвестен) | Собственный MAC-адрес или широковещательный |
| IP-адрес получателя (TPA) | IP-адрес искомого устройства | Собственный IP-адрес |
Ключевое отличие: в Gratuitous ARP-запросе поля SPA и TPA равны, а поле THA может быть равно SHA. В Gratuitous ARP-ответе также совпадают SPA и TPA.
Критика и ограничения
Несмотря на полезность, Gratuitous ARP имеет ряд недостатков, которые могут быть использованы злоумышленниками.
Уязвимость к ARP-спуфингу
Поскольку Gratuitous ARP-пакеты принимаются и обрабатываются большинством устройств без проверки легитимности, злоумышленник может отправить поддельный Gratuitous ARP, в котором укажет свой MAC-адрес как соответствующий IP-адресу другого устройства (например, шлюза по умолчанию). Это позволяет перехватывать трафик, предназначенный для этого устройства (атака «человек посередине»). Для защиты от таких атак применяются статические ARP-записи, протоколы динамической проверки ARP (DAI, Dynamic ARP Inspection) в управляемых коммутаторах, а также шифрование трафика (например, HTTPS).
Отсутствие гарантии доставки
Gratuitous ARP — это широковещательный протокол, работающий на канальном уровне. Он не подтверждается и не гарантирует, что все устройства в сети получили и обработали пакет. В больших сетях с сегментацией (VLAN) Gratuitous ARP не распространяется за пределы своего широковещательного домена.
Избыточность трафика
Регулярная отправка Gratuitous ARP всеми устройствами может создавать избыточный широковещательный трафик, особенно в больших сетях. Это может привести к незначительному снижению производительности, хотя для современных сетей это редко является проблемой.
Примеры использования в различных операционных системах
- Linux: Утилита
arpingс ключом-Uпозволяет отправить Gratuitous ARP-запрос. Ядро Linux также может автоматически отправлять Gratuitous ARP при изменении MAC-адреса интерфейса или при получении нового IP-адреса по DHCP. - Windows: Операционная система Windows отправляет Gratuitous ARP при активации сетевого интерфейса (например, после подключения кабеля) и при изменении IP-адреса. В командной строке можно использовать
arp -sдля добавления статической записи, но для отправки Gratuitous ARP обычно используются сторонние утилиты. - Cisco IOS: На маршрутизаторах и коммутаторах Cisco Gratuitous ARP используется в протоколах HSRP и VRRP. Команда
ip gratuitous-arps(в некоторых версиях) включает или отключает отправку Gratuitous ARP для определённых интерфейсов.
Источники
- Стивенс, У. Р. «TCP/IP. Иллюстрированное руководство. Том 1. Протоколы». — Вильямс, 2010.
- RFC 826 — «An Ethernet Address Resolution Protocol». — D. Plummer, 1982.
- RFC 5227 — «IPv4 Address Conflict Detection». — S. Cheshire, 2008.
- Одом, У. «Официальное руководство Cisco по подготовке к сертификации CCNA». — Вильямс, 2016.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →