@ Карта сайта News Автора!

Bog BOS: ARP (Address Resolution Protocol)

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL

Последнее изменение файла: 2007.07.01
Скопировано с www.bog.pp.ru: 2024.11.23

Bog BOS: ARP (Address Resolution Protocol)

Когда датаграмма IP попадает на обработку программе доступа к физической сети (драйверу устройства), то ее необходимо обеспечить физическим адресом пункта назначения. ARP (Address Resolution Protocol) обеспечивает преобразование IP адресов в MAC адреса (48-битные Ethernet адреса).

Протокол

Модуль ARP посылает широковещательный кадр Ethernet с запросом, содержащий IP адрес требуемого узла. В ответ ожидается ARP пакет, содержащий IP адрес и соответствующий ему MAC адрес. Ответ может быть получен непосредственно от узла, распознавшего свой IP адрес или от посредника (proxy, promiscuous ARP, ARP hack). В качестве посредника обычно выступает маршрутизатор, который указывает в ответе свой собственный MAC адрес в качестве соответствия запрашиваемому IP адресу (предполагается, что запрашиваемый IP адрес принадлежит узлу, присоединенному к одному из интерфейсов маршрутизатора).

Пакеты ARP используют отдельный тип протокола Ethernet (0x0806) наравне с датаграммами IP (0x0800), а не являются частью IP протокола. Пакет ARP содержит информацию о типе физической сети (1 для Ethernet), типе сетевого уровня (0x0800 для IP) и длине их адресов (6 и 4), физические и сетевые адреса отправителя и цели (могут быть незаполнены), тип операции (операции RARP не используются, т.к. были перенесены в отдельный протокол):

  1. запрос ARP (broadcast)
  2. ответ ARP (unicast)
  3. запрос RARP
  4. ответ RARP

Требуемое значение может быть извлечено из кеша вместо посылки запроса. Кеш заполняется не только при получении ответа на предыдущий запрос, но и "проходящими мимо" широковещательными запросами (они содержат физический и сетевой адрес отправителя). Обычно значение хранится в кеше 20 минут (запись о запросе без ответа обычно хранится 3 минуты). Механизм удаления устаревших записей (сборка мусора) в Linux 2.4 значительно сложнее и приводит к повторным запросам каждую минуту (см. /proc/sys/net/ipv4/neigh/).

Преобразование адресов является динамическим, т.е. не требует вмешательства администратора или приложений (скорее, наоборот, нужно пресекать "лишние" преобразования).

Физические связи типа "точка-точка" не требуют наличия ARP.

При загрузке хост выдает ARP запрос со своим собственным IP адресом в качестве сетевого адреса отправителя и цели. В нормальной ситуации ответа быть не должно, иначе мы имеем в сети 2 хоста с одинаковым IP адресом. Такой запрос также позволяет обновить кеш на остальных узлах сети в случае смены MAC адреса загружаемого узла.

Управление кешем

Для управления кешем служит команда arp (пакет net-tools в Red Hat Linux). Ключи (-v: повысить болтливость):

В ядре 2.4 и выше для управления кешем используется команда ip из пакета iproute:
ip [общие-опции] neighbour команда параметры.

Команды:

Параметры команд add, change, replace:

Параметры команды delete:

Параметры команды show и flush:

Опция -statistics команды show позволяет узнать количество пользователей каждой записи (ref) и значения таймеров (used, в секундах): последнее использование, последняя перепроверка, время изменения.

Организация ARP прокси:
ip neighbour { add | del } proxy IP-адрес [dev имя-интерфейса]

Утилита arping позволяет проверять работу подсистемы ARP на удаленном узле, рассылая запросы ARP и заполняя кеш на основании полученных ответов:

Безопасность

Протокол не имеет встроенных средств защиты, поэтому злоумышленник может послать фальшивые ответы ARP (по локальной сети или через прокси), которые окажутся в кеше. В результате, исходящий траффик будет направлен по ложному пути и будет перехвачен злоумышленником. Чтобы избежать этого, фальшивые ARP пакеты должны быть отфильтрованы на входе в прокси и коммутатором локальной сети (надо фильтровать как по адресам отправителя, так и цели; не забывать, что это не IP пакеты!).

Пассивная защита (наблюдение) обеспечивается программами arpwatch (используется libpcap для инспекции пакетов) и arpsnmp (использует внешнюю программу для построения БД, например, скрипт arpfetch, который использует snmpwalk из пакета cmu-snmp/net-snmp). Обе программы входят в пакет arpwatch и используют общую БД адресов (/var/arpwatch/arp.dat). arpwatch просматривает все "пробегающие мимо" ARP пакеты, ведет БД соответствия MAC и IP адресов, посылает извещения (по email и syslog) обо всех изменениях. Ключи:

Типы почтовых извещений:

Сообщения на syslog (источник сообщения - DAEMON; уровни - ERR, INFO, NOTICE, DEBUG; легко отличить по слову arpwatch)

Процедура запуска в Linux - /etc/rc.d/init.d/arpwatch (start, stop, restart, reload); параметры в Red Hat Linux хранятся в /etc/sysconfig/arpwatch. Для обеспечения запуска при загрузке надо выполнить

chkconfig --level 2 arpwatch on
chkconfig --level 3 arpwatch on
chkconfig --level 4 arpwatch on
chkconfig --level 5 arpwatch on

Ссылки

@ Карта сайта News Автора!

Bog BOS: ARP (Address Resolution Protocol)

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru