linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Сеть: L2 / L3/arp

kb/network-l2-l3 ── Сеть: L2 / L3 ── beginner

ARP - Address Resolution Protocol

ARP отвечает на вопрос «у кого MAC = ?» для конкретного IP в одной сети. Linux хранит результат в neighbor-таблице (`ip neigh`).

view as markdownaka: arp-table, neighbor-table

Зачем нужен ARP

Сетевая карта думает в mac-address'ах, не в IP. Чтобы хост A отправил IP-пакет хосту B в той же подсети, A должен знать MAC B. ARP (RFC 826) - протокол получения этой связки.

Алгоритм:

  1. A хочет послать на 192.168.1.20. Смотрит в neighbor-таблицу
  2. Если записи нет - A шлёт ARP request broadcast'ом: «у кого 192.168.1.20? скажите 192.168.1.10 (мой MAC AA:BB:...)»
  3. B видит запрос (адресован ему), отвечает unicast'ом: «192.168.1.20 - это 00:1c:42:...»
  4. A кеширует пару IP↔MAC в neighbor-таблицу
  5. Теперь A может слать ethernet-frame напрямую B

ARP работает только внутри одного broadcast-домена (одна L2-сеть). Через роутер ARP не проходит - там вступает routing-table.

ARP в IPv6

В IPv6 ARP заменён на NDP (Neighbor Discovery Protocol) - концепция та же, но через ICMPv6 и multicast вместо broadcast. Linux объединяет обе таблицы:

bash
ip -4 neigh    # IPv4 ARP
ip -6 neigh    # IPv6 NDP
ip neigh       # обе вместе

Состояния neighbor-записи

  • REACHABLE - пара IP↔MAC недавно подтверждена
  • STALE - давно не подтверждалась, но запись есть
  • DELAY / PROBE - переходные, идёт probe чтобы проверить
  • FAILED - не ответил, запись помечена как недоступная

Linux сам отмечает STALE → REACHABLE когда видит подтверждающий трафик (например ACK-пакеты от соседа).

ARP-проблемы на проде

  • Дубликат IP в одной сети - ARP конфликтует, какие-то хосты пишут в dmesg: «duplicate address detected»
  • Gratuitous ARP при failover (VRRP, keepalived): новый владелец IP шлёт unsolicited ARP чтобы коммутаторы и соседи быстро обновили таблицы
  • ARP poisoning - атакующий шлёт фальшивые ARP-replies, перехватывая трафик; защита - статические записи или 802.1x

§ команды

bash
ip neigh

Текущая ARP/NDP-таблица - что мы знаем про соседей

bash
ip -s neigh show 192.168.1.20

-s: счётчики (сколько пакетов прошло через эту запись)

bash
ping -c 1 192.168.1.20 && ip neigh | grep 192.168.1.20

Сначала пингуем чтобы заполнить ARP, потом смотрим запись

bash
sudo ip neigh flush all

Очистить ARP-кеш (полезно при дебаге flapping)

bash
sudo arping -c 3 192.168.1.1

Послать ARP-запрос напрямую - полезно для проверки L2-связности когда ICMP блокирован

§ см. также

  • ipv4-addressingIPv4-адресация и CIDRIP-адрес = 32 бита, обычно как `a.b.c.d`. **/N** в конце - длина префикса сети: `/24` = первые 24 бита фиксированы, последние 8 - host'ы (256 адресов).
  • ipv6-basicsIPv6 - адресация и базовые концепцииIPv6 - 128-битные адреса в 8 группах по 16 бит. Link-local fe80::/10 для соседей, global для интернета. SLAAC выдаёт адрес автоматически через Router Advertisement. Neighbor Discovery (NDP) заменяет ARP.
  • mac-addressMAC addressMAC - 48-битный аппаратный адрес сетевой карты, формат `aa:bb:cc:dd:ee:ff`. Уникален в пределах L2-сегмента, используется в [[ethernet-frame]] для адресации L2.
  • ethernet-frameEthernet frameEthernet-frame - единица передачи на L2: dst-MAC, src-MAC, ethertype, payload (обычно IP-пакет), FCS-checksum. Стандартный MTU = 1500 байт.
  • broadcast-domainBroadcast-домен - что это и кто в нём живётГруппа устройств, где L2-фрейм с dst MAC `FF:FF:FF:FF:FF:FF` (broadcast) доходит до всех. Switch расширяет broadcast-домен, router его останавливает.

§ упоминается в уроках

  • ›intermediate-01-network-101
  • ›intermediate-03-three-node-routing
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки