ARP (Address Resolution Protocol — протокол определения адреса) — протокол канального уровня, предназначенный для определения MAC-адреса Получателя в TCP/IP сетях.

Для передачи пакета в сети TCP/IP Отправитель должен знать MAC адрес Получателя. MAC адрес Получателя (физический адрес), Отправитель может узнать, выполнив широковещательный ARP запрос, или может прочитать в своем ARP кэше. ARP кэш хранит данные несколько минут после сеанса связи, затем данные о MAC адресе Получателя удаляются из кэша и перед выполнением очередного сеанса связи Отправитель будет вынужден опять отправить ARP запрос в сеть. MAC адреса (физические адреса) имеют смысл только в локальной сети, а при обращении в другую сеть используется MAC адрес роутера.

Просмотр MAC адресов в ARP кэше Linux:

arp
Адрес HW-тип HW-адрес Флаги Маска Интерфейс
192.168.1.6              ether   d0:27:88:61:0a:bb   C                     eth0
192.168.1.16             ether   a8:fa:d8:e9:d3:3e   C                     eth0
dm800se.local            ether   00:09:34:2c:36:9d   C                     eth0
dior-MS-7641.local       ether   8c:89:a5:c3:e7:21   C                     eth0
my.router                ether   90:e6:ba:d3:27:8c   C                     eth0

Просмотр MAC адресов в ARP кэше Windows:

arp -a
Интерфейс: 192.168.1.136 --- 0x2
  Адрес IP                Физический адрес      Тип
  192.168.1.3             00-e0-18-90-06-8c     динамический
  192.168.1.4             00-1d-7d-06-03-0e     динамический
  192.168.1.8             00-1f-d0-a1-43-ef     динамический
  192.168.1.25            50-e5-49-a3-87-1f     динамический
  192.168.1.100           00-e0-53-08-61-f7     динамический

Замечание: Для заполнения ARP кэша, с каждым из перечисленных узлов в сети была установлена связь с помощью команды ping.

Возможен еще один способ просмотра кэша ARP — это непосредственно прочитать файл кэша ARP /proc/net/arp.

Альтернативой команде arp является команда ip neigh.

Протокол ARP является абсолютно незащищённым. На использовании недостатков протокола ARP основан ARP-spoofing (ARP-poisoning) — техника сетевой атаки, позволяющая перехватывать трафик между узлами. Подробнее о ARP-spoofing читайте у Игоря Чубина. Существует несколько программ предназначенных для борьбы с ARP-spoofing и управления ARP таблицами. Демон arpwatch создает базу соответствия между IP и MAC-адресами, и при обнаружении аномалий, посылает сообщение в системный журнал и по электронной почте администратору системы.

Отключение ARP на интерфейсе:

sudo ifconfig eth0 down
sudo ifconfig eth0 -arp up

Включение ARP на интерфейсе

sudo ifconfig eth0 down
sudo ifconfig eth0 arp up

Внесение постоянной записи в ARP кэш

sudo arp -s dm800se.local 00:09:34:2c:36:9d

Удаление записи из ARP кэша

sudo arp -d dm800se.local -i eth0

Внесение постоянной записи в ARP кэш в режиме прокси ARP

sudo arp -s dm800se.local 00:09:34:2c:36:9d pub -i eth0

В результате выполнения этой команды Ваш компьютер будет отвечать на ARP запросы предназначенные хосту dm800se.local.

Удаление записи из ARP кэша в режиме прокси

sudo arp -d dm800se.local -i eth0 pub

Внесение временной записи в ARP кэш

sudo arp -s dm800se.local 00:09:34:2c:36:9d temp -i eth0