ARP на MikroTik — таблица, static ARP и proxy-ARP
ARP (Address Resolution Protocol) — протокол, преобразующий IP-адреса в MAC-адреса в локальной сети. Каждый раз, когда устройство хочет отправить пакет соседу по Ethernet, оно сначала спрашивает: «У кого IP 192.168.88.100? Ответьте свой MAC». ARP — невидимый, но критически важный механизм, и его настройка на MikroTik позволяет повысить безопасность сети и решить нетривиальные задачи маршрутизации.
Описание
Как работает ARP
Процесс разрешения адреса:
- Устройство A (192.168.88.10) хочет отправить пакет устройству B (192.168.88.20)
- A отправляет ARP Request (broadcast, FF:FF:FF:FF:FF:FF): «Кто имеет 192.168.88.20?»
- Устройство B отвечает ARP Reply (unicast): «192.168.88.20 — это AA:BB:CC:DD:EE:FF»
- A записывает соответствие в свою ARP-таблицу и отправляет пакет
ARP-таблица — это кеш, хранящий пары IP ↔ MAC. Записи имеют ограниченное время жизни и удаляются по таймауту.
Режимы ARP на интерфейсе MikroTik
Каждый интерфейс MikroTik может работать в одном из четырёх ARP-режимов:
| Режим | Поведение | Использование |
|---|---|---|
enabled | Стандартный: отвечает на ARP-запросы, добавляет динамические записи | По умолчанию, подходит для большинства сценариев |
disabled | Не отправляет и не отвечает на ARP | Редко используется. Требует static ARP для каждого устройства на обоих концах |
reply-only | Отвечает только на запросы из static ARP-таблицы. Не добавляет динамические записи | Привязка IP к MAC — безопасность |
proxy-arp | Отвечает на ARP-запросы от имени устройств из другой подсети | Связь между подсетями без маршрутизации на клиентах |
Gratuitous ARP
Gratuitous ARP — это ARP-ответ, отправленный без запроса. Устройство объявляет: «IP 192.168.88.1 — это мой MAC AA:BB:CC:11:22:33». Используется для:
- Обнаружения конфликтов IP-адресов
- Обновления ARP-таблиц соседей после смены MAC (VRRP failover, миграция VM)
- Ускорения обновления при смене IP-адреса на интерфейсе
Настройка
Просмотр ARP-таблицы
[admin@MikroTik] ># Вся ARP-таблица /ip/arp/print # Подробный вывод с интерфейсами /ip/arp/print detail # Фильтр по интерфейсу /ip/arp/print where interface=bridge-LAN # Только динамические записи /ip/arp/print where dynamic=yes # Поиск конкретного IP /ip/arp/print where address=192.168.88.100
Пример вывода:
codeFlags: D - DYNAMIC Columns: ADDRESS, MAC-ADDRESS, INTERFACE # ADDRESS MAC-ADDRESS INTERFACE 0 D 192.168.88.10 AA:BB:CC:11:22:33 bridge-LAN 1 D 192.168.88.20 AA:BB:CC:44:55:66 bridge-LAN 2 D 192.168.88.100 AA:BB:CC:77:88:99 bridge-LAN
Флаг D означает dynamic — запись создана автоматически через ARP-обмен.
Static ARP — привязка IP к MAC
Static ARP-запись не истекает по таймауту и не перезаписывается динамическим ARP. Это защита от ARP spoofing и средство привязки IP к конкретному устройству:
[admin@MikroTik] ># Добавление static ARP /ip/arp/add \ address=192.168.88.100 \ mac-address=AA:BB:CC:77:88:99 \ interface=bridge-LAN \ comment="Сервер бухгалтерии" /ip/arp/add \ address=192.168.88.101 \ mac-address=AA:BB:CC:DD:EE:01 \ interface=bridge-LAN \ comment="IP-телефон директора"
Static ARP сам по себе не блокирует устройства с другими MAC — он лишь гарантирует, что роутер всегда будет ассоциировать этот IP с указанным MAC. Для полной привязки нужен режим reply-only.
Reply-Only — жёсткая привязка IP-MAC
В режиме reply-only интерфейс:
- Отвечает на ARP-запросы только для записей из static ARP-таблицы
- Не создаёт динамические записи
- Устройство с «чужим» IP не сможет общаться через этот интерфейс
Это эффективная защита от несанкционированной смены IP и ARP spoofing.
Шаг 1. Создайте static ARP для ВСЕХ устройств в сети:
[admin@MikroTik] ># Сначала посмотрите текущие динамические записи /ip/arp/print where interface=bridge-LAN # Добавьте static записи для каждого устройства /ip/arp/add address=192.168.88.10 mac-address=AA:BB:CC:11:22:33 interface=bridge-LAN comment="ПК администратора" /ip/arp/add address=192.168.88.20 mac-address=AA:BB:CC:44:55:66 interface=bridge-LAN comment="ПК бухгалтера" /ip/arp/add address=192.168.88.100 mac-address=AA:BB:CC:77:88:99 interface=bridge-LAN comment="Сервер"
Шаг 2. Переведите интерфейс в reply-only:
[admin@MikroTik] >/interface/bridge/set bridge-LAN arp=reply-only
Внимание: после включения
reply-onlyлюбое устройство без static ARP потеряет связь с роутером. Убедитесь, что вы добавили запись для своего ПК, с которого управляете роутером.
Шаг 3. Привяжите DHCP-leases к ARP (опционально):
Вместо ручного добавления static ARP для каждого устройства можно настроить DHCP-сервер автоматически создавать ARP-записи:
[admin@MikroTik] >/ip/dhcp-server/set [find interface=bridge-LAN] add-arp=yes
Теперь при выдаче DHCP-lease автоматически создаётся static ARP. Но устройства со статическими IP (без DHCP) всё равно нужно добавлять вручную.
Proxy-ARP — связь между подсетями
Proxy-ARP позволяет роутеру отвечать на ARP-запросы от имени устройств из другой подсети. Это нужно, когда:
- Два сегмента сети должны общаться, но клиенты не имеют маршрута друг к другу
- VPN-клиенты должны быть «видны» в локальной сети как обычные устройства
- Нужно объединить две подсети без перенастройки клиентов
Пример: LAN 192.168.88.0/24 и VPN-клиенты 10.10.10.0/24. Устройство 192.168.88.10 хочет достучаться до 10.10.10.5, но не знает маршрут. С proxy-ARP роутер ответит на ARP-запрос для 10.10.10.5, подставив свой MAC, и переадресует пакет.
[admin@MikroTik] ># Включение proxy-ARP на LAN-интерфейсе /interface/bridge/set bridge-LAN arp=proxy-arp
Важно: proxy-ARP — это workaround, а не правильное решение. В большинстве случаев лучше настроить маршрутизацию на клиентах или использовать DHCP для раздачи маршрутов. Proxy-ARP увеличивает broadcast-трафик и усложняет диагностику.
ARP Timeout
По умолчанию динамические ARP-записи живут до тех пор, пока трафик активен, плюс таймаут после прекращения. Настройка таймаута:
[admin@MikroTik] ># Установить ARP timeout на bridge (по умолчанию auto — зависит от настроек ядра) /interface/bridge/set bridge-LAN arp-timeout=5m
Короткий таймаут (1–5 минут) — быстрее обнаруживает отключённые устройства, но увеличивает ARP-трафик. Длинный таймаут (30 минут — 1 час) — меньше broadcast, но устаревшие записи дольше сохраняются.
Проверка
[admin@MikroTik] ># Полная ARP-таблица с деталями /ip/arp/print detail # Количество ARP-записей /ip/arp/print count-only # Проверка режима ARP на интерфейсе /interface/bridge/print where name=bridge-LAN # Мониторинг ARP-трафика (broadcast) /tool/torch interface=bridge-LAN protocol=arp # Проверка конкретной связки /ping 192.168.88.100 count=3 /ip/arp/print where address=192.168.88.100
Типичные ошибки
-
Включили reply-only без static ARP для своего ПК — потеряли доступ к роутеру. Решение: подключиться через MAC-Telnet (Winbox → MAC-режим) или через консольный кабель и вернуть
arp=enabled -
Static ARP с неправильным interface — указали
ether2вместоbridge-LAN. Если устройство подключено через bridge, ARP должен быть привязан к bridge-интерфейсу, а не к физическому порту -
Proxy-ARP включён на WAN — роутер отвечает на ARP-запросы из интернета, что является уязвимостью. Proxy-ARP нужен только на LAN-интерфейсах и только в специфических сценариях
-
Конфликт с DHCP — включили
reply-only, но не настроилиadd-arp=yesна DHCP-сервере. Новые устройства получают IP через DHCP, но не могут общаться, потому что ARP-запись не создана -
ARP flood — слишком много broadcast ARP-запросов в большой сети (>500 устройств). Решение: разделите сеть на VLAN, используйте static ARP для серверов и принтеров, сократите ARP timeout
# Вся ARP-таблица /ip/arp/print # Подробный вывод с интерфейсами /ip/arp/print detail # Фильтр по интерфейсу /ip/arp/print where interface=bridge-LAN # Только динамические записи /ip/arp/print where dynamic=yes # Поиск конкретного IP /ip/arp/print where address=192.168.88.100 Flags: D - DYNAMIC Columns: ADDRESS, MAC-ADDRESS, INTERFACE # ADDRESS MAC-ADDRESS INTERFACE 0 D 192.168.88.10 AA:BB:CC:11:22:33 bridge-LAN 1 D 192.168.88.20 AA:BB:CC:44:55:66 bridge-LAN 2 D 192.168.88.100 AA:BB:CC:77:88:99 bridge-LAN # Добавление static ARP /ip/arp/add \ address=192.168.88.100 \ mac-address=AA:BB:CC:77:88:99 \ interface=bridge-LAN \ comment="Сервер бухгалтерии" /ip/arp/add \ address=192.168.88.101 \ mac-address=AA:BB:CC:DD:EE:01 \ interface=bridge-LAN \ comment="IP-телефон директора" # Сначала посмотрите текущие динамические записи /ip/arp/print where interface=bridge-LAN # Добавьте static записи для каждого устройства /ip/arp/add address=192.168.88.10 mac-address=AA:BB:CC:11:22:33 interface=bridge-LAN comment="ПК администратора" /ip/arp/add address=192.168.88.20 mac-address=AA:BB:CC:44:55:66 interface=bridge-LAN comment="ПК бухгалтера" /ip/arp/add address=192.168.88.100 mac-address=AA:BB:CC:77:88:99 interface=bridge-LAN comment="Сервер" /interface/bridge/set bridge-LAN arp=reply-only /ip/dhcp-server/set [find interface=bridge-LAN] add-arp=yes # Включение proxy-ARP на LAN-интерфейсе /interface/bridge/set bridge-LAN arp=proxy-arp # Установить ARP timeout на bridge (по умолчанию auto — зависит от настроек ядра) /interface/bridge/set bridge-LAN arp-timeout=5m # Полная ARP-таблица с деталями /ip/arp/print detail # Количество ARP-записей /ip/arp/print count-only # Проверка режима ARP на интерфейсе /interface/bridge/print where name=bridge-LAN # Мониторинг ARP-трафика (broadcast) /tool/torch interface=bridge-LAN protocol=arp # Проверка конкретной связки /ping 192.168.88.100 count=3 /ip/arp/print where address=192.168.88.100