Что делает протокол ARP и зачем нужна команда arp -a?
Набрал в терминале arp -a и увидел список IP-адресов с какими-то длинными адресами через двоеточия. Что это за протокол ARP, что показывает эта команда и зачем оно вообще нужно?
2 ответа
ARP (Address Resolution Protocol) решает одну задачу: сопоставить IP-адрес с MAC-адресом внутри локальной сети.
Зачем это нужно. В пределах одной локальной сети данные передаются не по IP, а по MAC-адресам (это те самые «длинные адреса через двоеточия», вроде a4:5e:60:c1:22:0f, физический адрес сетевой карты). Но программы работают с IP. Значит, прежде чем отправить кадр, нужно узнать: «у кого из соседей по сети IP 192.168.1.1 и какой у него MAC?». Этим и занимается ARP:
- Хост кричит на всю сеть (broadcast): «У кого IP 192.168.1.1? Сообщите свой MAC».
- Владелец этого IP отвечает: «Это я, мой MAC такой-то».
- Ответ кэшируется в ARP-таблице, чтобы не спрашивать каждый раз.
Команда arp -a как раз показывает эту таблицу — кэш соответствий IP ↔ MAC:
arp -a
? (192.168.1.1) at a4:5e:60:c1:22:0f on en0 ifscope [ethernet]
? (192.168.1.15) at 3c:22:fb:7a:11:9d on en0 ifscope [ethernet]
Здесь видно, что роутер 192.168.1.1 имеет MAC a4:5e:60:c1:22:0f. Полезно для диагностики локальной сети: проверить, что устройство «видится», найти дубли IP, посмотреть, кто вообще есть в сетке.
Важно: ARP работает только внутри локальной сети. Для выхода в интернет хост узнаёт MAC не конечного сервера, а своего шлюза (роутера).
Полезные варианты команды на разных системах:
arp -a # вся таблица (Windows / macOS / Linux)
arp -n # Linux, без резолва имён, быстрее
ip neigh # современный аналог на Linux
И ещё момент про безопасность: на ARP завязана атака ARP-spoofing, когда злоумышленник в той же сети подделывает ARP-ответы и выдаёт свой MAC за MAC роутера, чтобы пропускать чужой трафик через себя. Так что неожиданно «съехавший» MAC шлюза в arp -a — повод насторожиться.