Разновидности протокола ARP

4 minute read

В предыдущей статье был рассмотрен протокол ARP, структура и принцип его работы. Сегодня я хочу показать несколько разновидностей данного протокола, которые также иногда используются в сетях.

Proxy ARP

Иногда его еще называют promiscuous ARP, данный протокол описан в RFC 925 и RFC 1027.

Proxy ARP - это метод с помощью которого маршрутизаторы могут сделать себя доступными для устройств.

Например, устройство с адресом 15.65.32.124/24 хочет отправить пакет на адрес 15.65.100.35/24, но на данном устройстве не настроен шлюз по умолчанию, поэтому устройство не знает как отправить на маршрутизатор пакет. В таком случае устройство генерирует ARP Request для адреса 15.65.100.35. Локальный маршрутизатор, получив данный запрос и зная как достичь сети 15.65.100.0, сгенерирует и отправит ответный пакет ARP Reply, в котором будет содержаться его собственный идентификатор канальной среды.

Таким образом, маршрутизатор заставит устройство поверить, что интерфейс маршрутизатора и есть интерфейс с адресом 15.65.100.35. Все пакеты, которые будут генерироваться для данного адреса будут отправляться на интерфейс маршрутизатора. Данный пример является скорее исключением, потому что в современном мире всё же принято назначать адрес шлюза на устройство, для того чтобы не делать дополнительных забот для сети.

Второй вариант использования Proxy ARP - несовпадение масок на интерфейсах шлюза и устройств. Допустим на маршрутизаторе есть два интерфейса. Каждому из интерфейсов назначены адреса с /28 маской. Пусть будет на первом интерфейсе адрес 160.1.74.1/28, а на другом 160.1.74.28/28. Данные адреса на интерфейсах располагаются в разных подсетях.

Клиентские устройства же сконфигурированы в той же сети 160.1.74.0, но с маской /24 и не имеют представления о существовании подсетей с /28 маской. Например, первый клиент имеет адрес 160.1.74.10/24, а второй клиент адрес 160.1.74.20/24.

Для того чтобы первый смог отправить информацию второму ему необходимо создать запрос ARP Request. Маршрутизатор, получив пакет, распознает, что адрес назначения с его точки зрения находится в другой подсети и как и в первом случае отправит ответный пакет ARP Reply, в котором будет содержаться собственный идентификатор канальной среды маршрутизатора.

Таким образом, Proxy ARP делает прозрачной топологию подсетей для клиентских устройств.

Gratuitous ARP

Устройство иногда может создавать запрос ARP со своим собственным IP-адресом в качестве адреса назначения. Такой запрос ARP называется Gratuitous ARP и может использоваться в следующих случаях:

  • Первый случай - использование для проверки дублирования адресов в сети. Устройство, которое отправит ARP Request со своим собственным адресом в качестве адресата назначения в запросе и в ответ получит ARP Reply от другого устройства, сможет узнать, что данный адрес является дубликатом в сети
  • Второй случай - использование для того чтобы объявить свой новый идентификатор канальной среды. Если устройство получает ARP Request для IPv4 адреса, который уже есть в кэше ARP, то кэш будет обновлен, используя новый идентификатор канального уровня отправителя
  • Третий случай - использование маршрутизаторами протокола Hot Standby Router Protocol (HSRP). В случае когда активный маршрутизатор теряет свою роль активного, резеврный маршрутизатор отправляет Gratuitous ARP для того чтобы обновить кэш ARP у устройств в той же подсети

По умолчанию Gratuitous ARP выключен на маршрутизаторах cisco. Для того чтобы отключить данное поведение, надо в режиме глобальной конфигурации ввести команду ip gratuitous-arps.

Подробно посмотреть GARP можно скачав данный дамп

Reverse ARP

Вместо сопоставления идентификатора канальной среды с заранее известным IP-адресом, Reverse ARP позволяет сопоставить IP-адрес с заранее известным идентификатором канальной среды.

Некоторые устройства после старта системы могут не знать свой IP-адрес. RARP может быть запрограммирован в программное обеспечение данных устройств, позволяя данному устройству выполнить ARP Request с идентификатором канальной среды самого устройства. Ответный RARP Reply будет содержать соответствующий IP-адрес.

RARP был значительный образом вытеснен протоколом DHCP (Dynamic Host Configuration Protocol) - расширением протокола Bootstrap (BootP), каждый из которых предоставляет куда больше информации нежели один IP-адрес.

Также более подробно посмотреть протокол RARP можно скачав этот дамп

Практика

Рассмотрим на практике второй вариант использования Proxy ARP. Возьмем схему и адресацию, указанную в описании метода использования Proxy ARP.

Схема Proxy ARP

Выполнив все настройки адресации на интерфейсах клиентов и маршрутизатора, запустим ping между клиентами.

Первоначально в таблице ARP на маршрутизаторе не присутстовали никакие записи, кроме записей собственных интерфейсов:

1
2
3
4
5
Router# show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  160.1.74.1              -   5000.0003.0000  ARPA   GigabitEthernet0/0
Internet  160.1.74.28             -   5000.0003.0001  ARPA   GigabitEthernet0/1
Router#

После запуска ping на клиенте можно увидеть, что маршрутизатор отвечает на запрос клиента свой ответом, предварительно включив на маршрутизаторе debug arp

1
2
3
4
5
6
7
8
9
10
11
*Oct  5 21:33:42.486: IP ARP: rcvd req src 160.1.74.10 5000.0001.0000, dst 160.1.74.20 GigabitEthernet0/0
*Oct  5 21:33:42.487: IP ARP: creating entry for IP address: 160.1.74.10, hw: 5000.0001.0000
*Oct  5 21:33:42.487: IP ARP: sent rep src 160.1.74.20 5000.0003.0000,
                 dst 160.1.74.10 5000.0001.0000 GigabitEthernet0/0
*Oct  5 21:33:42.489: IP ARP: creating incomplete entry for IP address: 160.1.74.20 interface GigabitEthernet0/1
*Oct  5 21:33:42.490: IP ARP: sent req src 160.1.74.28 5000.0003.0001,
                 dst 160.1.74.20 0000.0000.0000 GigabitEthernet0/1
*Oct  5 21:33:42.491: IP ARP: rcvd rep src 160.1.74.20 0050.0000.0200, dst 160.1.74.28 GigabitEthernet0/1
*Oct  5 21:33:42.493: IP ARP: rcvd req src 160.1.74.20 0050.0000.0200, dst 160.1.74.10 GigabitEthernet0/1
*Oct  5 21:33:42.494: IP ARP: sent rep src 160.1.74.10 5000.0003.0001,
                 dst 160.1.74.20 0050.0000.0200 GigabitEthernet0/1

Теперь на маршрутизаторе есть полная карта для всех устройств в сети

1
2
3
4
5
6
7
Router# show arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  160.1.74.1              -   5000.0003.0000  ARPA   GigabitEthernet0/0
Internet  160.1.74.10             8   5000.0001.0000  ARPA   GigabitEthernet0/0
Internet  160.1.74.20            16   0050.0000.0200  ARPA   GigabitEthernet0/1
Internet  160.1.74.28             -   5000.0003.0001  ARPA   GigabitEthernet0/1
Router#

Однако для того чтобы понять, что в сети настроен Proxy ARP надо обратиться к клиенту и проверить таблицу ARP у него.

Таблица ARP в Linux

В таблице можно заметить, что для двух разных IP-адресов идёт соответствие одинакового идентификатора канальной среды - MAC-адреса интерфейса Gi0/1 маршрутизатора. Это и есть признак того, что в сети работает Proxy ARP.

По умолчанию Proxy ARP включен на маршрутизаторах cisco. Для того чтобы отключить данное поведение, надо ввести команду no ip proxy-arp на интерфейсе маршрутизатора.

P.S. вся информация представленная здесь используется исключительно в образовательных целях. Все совпадения с реальными объектами, адресами, именами и т.д. случайна и не несёт цели получить от этого выгоду или причинить кому-либо вред.

Back to top ↑

Leave a comment