|
Bog BOS: ARP (Address Resolution Protocol) |
Последние изменения: |
Последнее изменение файла: 2007.07.01
Скопировано с www.bog.pp.ru: 2024.11.11
Когда датаграмма 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 не используются, т.к. были перенесены в отдельный протокол):
Требуемое значение может быть извлечено из кеша вместо посылки запроса. Кеш заполняется не только при получении ответа на предыдущий запрос, но и "проходящими мимо" широковещательными запросами (они содержат физический и сетевой адрес отправителя). Обычно значение хранится в кеше 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
|
Bog BOS: ARP (Address Resolution Protocol) |
Последние изменения: |