ARP: определение MAC адресов в локальной сети

12.12.2019

Теги: LinuxWindowsКомандаЛокальнаяСеть

ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса по IP-адресу другого компьютера. Существуют следующие типы сообщений ARP: запрос ARP (ARP request) и ответ ARP (ARP reply). Система-отправитель при помощи запроса ARP запрашивает физический адрес системы-получателя. Ответ (физический адрес узла-получателя) приходит в виде ответа ARP.

Компьютер А (IP-адрес 192.168.1.1) и компьютер Б (IP-адрес 192.168.1.2) соединены сетью Ethernet. Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Компьютеру А для осуществления передачи через Ethernet требуется узнать MAC-адрес компьютера Б в сети Ethernet. Для этой задачи и используется протокол ARP.

Компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене. Суть запроса: «компьютер с IP-адресом 192.168.1.2, сообщите свой MAC-адрес компьютеру с МАС-адресом ...». Этот запрос доставляется всем устройствам в том же сегменте Ethernet. Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес.

Протокол имеет буферную память (ARP-таблицу), в которой хранятся пары адресов (IP-адрес, MAC-адрес) с целью уменьшения количества посылаемых запросов, следовательно, экономии трафика и ресурсов. Записи ARP-таблицы бывают двух вид видов: статические и динамические. Статические добавляются самим пользователем, динамические же — создаются и удаляются автоматически. При этом в ARP-таблице всегда хранится широковещательный физический адрес FF:FF:FF:FF:FF:FF.

Команда arp в Windows

Позволяет просмотреть ARP-таблицу, добавить в нее новую запись или удалить существующую:

> arp
Отображение и изменение таблиц преобразования IP-адресов в физические,
используемые протоколом разрешения адресов (ARP).

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

  -a            Отображает текущие ARP-записи, опрашивая текущие данные
                протокола. Если задан inet_addr, то будут отображены IP и
                физический адреса только для заданного компьютера. Если
                ARP используют более одного сетевого интерфейса, то будут
                отображаться записи для каждой таблицы.
  -g            То же, что и параметр -a.
  -v            Отображает текущие ARP-записи в режиме подробного
                протоколирования. Все недопустимые записи и записи в
                интерфейсе обратной связи будут отображаться.
  inet_addr     Определяет IP-адрес.
  -N if_addr    Отображает ARP-записи для заданного в if_addr сетевого
                интерфейса.
  -d            Удаляет узел, задаваемый inet_addr. Параметр inet_addr может
                содержать знак шаблона * для удаления всех узлов.
  -s            Добавляет узел и связывает адрес в Интернете inet_addr
                с физическим адресом eth_addr.  Физический адрес задается
                6 байтами (в шестнадцатеричном виде), разделенных дефисом.
                Эта связь является постоянной
  eth_addr      Определяет физический адрес.
  if_addr       Если параметр задан, он определяет адрес интерфейса в
                Интернете, чья таблица преобразования адресов должна
                измениться. Если параметр не задан, будет использован
                первый доступный интерфейс.
Пример:
  > arp -s 157.55.85.212   00-aa-00-62-c6-09  .. Добавляет статическую запись.
  > arp -a

Создать запись в ARP-таблице:

> arp -s IP-адрес MAC-адрес

Вывести записи ARP-таблицы:

> arp -a
Интерфейс: 192.168.53.1 --- 0x5
  адрес в Интернете      Физический адрес      Тип
  192.168.53.255        ff-ff-ff-ff-ff-ff     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  224.0.0.252           01-00-5e-00-00-fc     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический

Интерфейс: 192.168.110.2 --- 0x14
  адрес в Интернете      Физический адрес      Тип
  192.168.110.1         04-bf-6d-9a-c7-a8     динамический
  192.168.110.3         08-00-27-92-ce-01     динамический
  192.168.110.255       ff-ff-ff-ff-ff-ff     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  224.0.0.252           01-00-5e-00-00-fc     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический
  255.255.255.255       ff-ff-ff-ff-ff-ff     статический

Интерфейс: 172.28.128.1 --- 0x15
  адрес в Интернете      Физический адрес      Тип
  172.28.128.255        ff-ff-ff-ff-ff-ff     статический
  224.0.0.22            01-00-5e-00-00-16     статический
  224.0.0.251           01-00-5e-00-00-fb     статический
  224.0.0.252           01-00-5e-00-00-fc     статический
  239.255.255.250       01-00-5e-7f-ff-fa     статический

Команда arp в Linux

Позволяет просмотреть ARP-таблицу, добавить в нее новую запись или удалить существующую:

$ arp --help
Использование:
  arp [-vn] [<HW>] [-i <интерфейс>] [-a] [<имя_компьютера>]       <- Отобразить кэш arp
  arp [-v]          [-i <if>] -d  <host> [pub]                    <- Удалить элемент ARP
  arp [-vnD] [<HW>] [-i <интерфейс>] -f [<имя_файла>]             <- Добавить запись в arp из файла
  arp [-v]   [<HW>] [-i <if>] -s  <host> <hwaddr> [temp]          <- Добавить элемент
  arp [-v]   [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub

        -a показать (все) хосты в альтернативном (BSD) стиле
        -e                       display (all) hosts in default (Linux) style
        -s, --set установить новую запись ARP
        -d, --delete удалить определенную запись
        -v, --verbose более детальный вывод
        -n, --numeric не преобразовывать адреса в имена
        -i, --device указание сетевого интерфейса (например, eth0)
        -D, --use-device прочитать <hwaddr> из заданного устройства
        -A, -p, --protocol указание семейства протоколов
        -f, --file считать новые записи из файла или из /etc/ethers

  <HW>=Используйте '-H <hw>' для указания типа аппаратного адреса. По умолчанию: ether
  Список всех возможных типов HW (которые поддерживают ARP)
    ash (Ash) ether (Ethernet) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet) 
    dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI) 
    irda (IrLAP) x25 (универсальный X.25) eui64 (Универсальный EUI-64) 

Создать запись в ARP-таблице:

> sudo arp -s IP-адрес MAC-адрес

Вывести записи ARP-таблицы:

$ arp
Адрес                    HW-тип  HW-адрес            Флаги  Маска          Интерфейс
192.168.110.13           ether   08:00:27:78:7a:c2   C                     enp0s3
192.168.110.2            ether   1c:1b:0d:e6:14:bd   C                     enp0s3
_gateway                 ether   04:bf:6d:9a:c7:a8   C                     enp0s3

Альтернативный способ просмотра записей таблицы — команда

$ ip neigh
192.168.110.3 dev enp0s3 lladdr 08:00:27:78:7a:c2 REACHABLE
192.168.110.2 dev enp0s3 lladdr 1c:1b:0d:e6:14:bd STALE
192.168.110.1 dev enp0s3 lladdr 04:bf:6d:9a:c7:a8 STALE

Поиск: Linux • Windows • Команда • Локальная сеть • ARP • IP адрес • MAC адрес • Протокол • Protocol • Ethernet

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.