- Главная
- Блог
- Без категории
- Протокол ARP и команда arp: руководство по работе с ARP-таблицей в Linux
Протокол ARP и команда arp: руководство по работе с ARP-таблицей в Linux
Команды:
arp (address resolution protocol - протокол разрешения адресов)
arp -n (-numeric - числовой формат)
arp -d (delete) IP — удалить запись с указанным IP.
Мы уже знаем, что протокол DNS предназначен для того, чтобы преобразовывать человекочитаемые доменные имена в числовые значения IP адреса.
Так же, есть протокол ARP (Address Resolution Protocol) который предназначен для дальнейшего преобразования IP адреса в физического адрес устройства или MAC адрес. Он осуществляет широковещательный запрос по сети, чтобы найти MAC-адрес устройства по IP-адресу.
А, чтобы каждый раз не отправлять этот широковещательный запрос, изначально просматривается таблица соответствий, ARP-кэш или ARP-таблица, которая хранит уже известные пары IP-MAC и помогает быстро находить MAC-адреса.
Так вот, команда arp выводит как раз ARP-таблицу известных данной системе пар IP-MAC адресов
arp
Address HWtype HWaddress Flags Mask Iface
_gateway ether 00:0c:29:10:8f:b3 C ens33
- Address — IP-адрес устройства или шлюза в локальной сети.
- HWtype — тип аппаратного адреса (ether означает Ethernet MAC-адрес).
- HWaddress — аппаратный адрес или MAC-адрес, соответствующий IP-адресу.
- Flags — флаги состояния записи; C (complete) означает, что соответствие IP и MAC найдено и работоспособно.
- Mask — обычно используется для протоколов с масками, в данном выводе не заполнено.
- Iface — сетевой интерфейс, для которого действует эта запись (ens33), т.е. наш локальный сетевой интерфейс.
В конкретном примере:
- _gateway с MAC 00:0c:29:10:8f:b3 — это шлюз по умолчанию для сети на интерфейсе ens33.
Чтобы у нас все записи отображались в числовом формате, добавим уже известный нам ключ из других сетевых утилит -numeric - числовой формат
arp -n (-numeric - числовой формат)
arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.0.1 ether 00:0c:29:10:8f:b3 C ens33
Давайте, попробуем пропинговать какой-нибудь сетевой адрес, чтобы у нас добавилась запись в arp таблицу
ping 192.168.0.11
arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.0.1 ether 00:0c:29:10:8f:b3 C ens33
192.168.0.11 ether 00:0c:29:5f:e4:a0 C ens33
Теперь в таблице появилась еще одна запись и мы видим, что устройство с адресом 192.168.0.11 имеет физический адрес 00:0c:29:5f:e4:a0
Давайте попробуем пропинговать внешнюю сеть
ping 8.8.8.8
arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.0.1 ether 00:0c:29:10:8f:b3 C ens33
192.168.0.11 ether 00:0c:29:5f:e4:a0 C ens33
Но, тут никакой записи не появилось! Почему?
Дело в том, что в таблицу добавляются только соседние адреса, т.е. из этой же локальной сети. В таблицу не добавляются адреса устройств, находящиеся за шлюзом, т.е. в других сетях.
Даже если мы попробуем пропинговать устройство, которое находится максимально близко к нам, но, так же находится за шлюзом (наш физический компьютер, подключенный к физическому роутеру)
ping 192.168.88.2
arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.0.1 ether 00:0c:29:10:8f:b3 C ens33
192.168.0.11 ether 00:0c:29:5f:e4:a0 C ens33
Если мы изменим на машине 192.168.0.11 адрес на 192.168.0.15 и попробуем пропинговать старый адрес 192.168.0.11 у нас появится ошибка, что адрес не пингуется. Однако, в таблице появится запись
Address HWtype HWaddress Flags Mask Iface
192.168.0.11 (incomplete) ens33
192.168.0.15 ether 00:0c:29:5f:e4:a0 C ens33
192.168.0.1 ether 00:0c:29:10:8f:b3 C ens33
что говорит о том, что данная запись незавершенная, т.е. система не знает актуального физического адреса для этого устройства, так как она не получила ответ с этой информацией.
Однако, у нас появилась запись
192.168.0.15 ether 00:0c:29:5f:e4:a0 C ens33
т.е. актуальная запись для физического адреса 00:0c:29:5f:e4:a0
Откуда она взялась? Ведь мы же не пинговали устройство 192.168.0.15, чтобы появилась новая запись!?
А дело в том, что, когда устройство меняет свой IP адрес, оно отправляет в сеть ARP-оповещение (ARP announcements) целью которого является уведомить другие узлы в локальной сети об обновлённом сопоставлении IP и MAC, чтобы обновить их ARP-таблицы и избежать конфликтов или ошибок маршрутизации.
После перезагрузки машины, данная таблица очищается, в ситуации, если вы не добавляли какие-то записи вручную.
Чтобы вручную удалить нужную запись, можно воспользоваться командой:
arp -d (delete) IP — удалить запись с указанным IP.
sudo arp -d 192.168.0.11