Network: arp, ip neighbour discovery теория

  • статья по практике в Linux отдельно
  • статья по теории отдельно
  • на каком уровне работает arp – на третьем как mpls

ipv6

Neighbor Discovery Protocol (ND) – по сути аналог arp в сетях IPv6, работает на базе ICMP, а не как отдельное вложение в Ethernet. Есть аналог reverse ARP по резолву адреса IPv6 из MAC – Inverse Neighbor Discovery (IND).

The protocol defines five ICMPv6 packet types to perform functions for IPv6 similar to the Address Resolution Protocol (ARP) and Internet Control Message Protocol (ICMP) Router Discovery and Router Redirect protocols for IPv4. It provides many improvements over its IPv4 counterparts (RFC 4861, section 3.1).

The Inverse Neighbor Discovery (IND) protocol extension (RFC 3122) allows nodes to determine and advertise an IPv6 address corresponding to a given link-layer address, similar to Reverse ARP for IPv4.




CARP

CARP (Common ARP) – альтернатива HSRP/VRRP на FreeBSD. Работает на основе ARP и разделения одного адреса несколькими устройствами.

proxy arp
Почему proxy arp лучше не использовать в Ethernet – не путать ширину маски сети и указывать маршрутизацию в ethernet не через интерфейс, а через next hop.
В ARP резолв вставляется конечный получатель трафика (не некст хоп) в итоге табла ARP и directly connected routes пухнет от количества хостов + роутеру нужно на это все отвечать + плюс бродкаст => proxy arp лучше не использовать. На практике ужас, особенно если линк в интернет. На Cisco по умолчанию включен, на Huawei выкл. 
https://ciscoexpert.wordpress.com/2008/06/28/proxy-arp/

Когда он получает (или формирует) пакет предназначенный маршрутизатору С, он должен инкапсулировать его в Ethernet-кадр. Логично, что MAC-адрес отправителя он подставляет адрес интерфейса FE0/0, получателя – адрес интерфейса FE0/1 маршрутизатора B.
Загвоздка в том, как он получит этот MAC-адрес.
В обычном случае, когда настроен ip route 0.0.0.0/0 10.1.2.2, хост А отправляет ARP запрос, где спрашивает – «Какой MAC у 10.1.2.2?», В в ответ отправляет свой МАС и всем счастье.

Сейчас у А нет даже IP-адреса В, сказано только куда отправлять пакет. Как быть? Ведь в ARP-запросе мы не можем поставить пустой IP, не можем и широковещательный – это бессмысленно. 

Выход из ситуации обеспечивает ARP-Proxy. А отправляет ARP-запрос, где запрашивает MAC-адрес устройства с IP-адресом 3.3.3.3 (несмотря на то, что оно в другой подсети).

В получает такой ARP-запрос и, если на интерфейсе активирован механизм ARP-Proxy, проверяет, что в его таблице маршрутизации есть маршрут до получателя (хотя бы даже дефолт), и отправляет А ARP-ответ c MAC-адрес своего интерфейса.

Таким образом каждый адрес, доступный через такой маршрут будет добавлен как directly connected в ARP-кэш.

Приятного в этом мало. Огромное количество широковещательных запросов, переполненный ARP-кэш, высокая загрузка процессора.

Нужно избегать таких конфигураций. Применима она по сути только к Point-to-Point интерфейсам (PPP, HDLC, FR).
Дампы

GARP

garp.pcap

ARP poisoning

arp-poisoning.pcap

arp-poisoning2.pcap

Leave a Reply