ARP в MikroTik: таблица ARP, reply-only, proxy-arp и решение конфликтов

ARP в MikroTik: таблица ARP, reply-only, proxy-arp и решение конфликтов

Есть проблемы, которые выглядят как мистика, пока не знаешь причину. Устройство в сети пингуется через раз. Хост вроде онлайн, но до него не достучаться. В логах мелькает «detected conflict by arp». MAC-адрес в таблице роутера почему-то «плавает». Всё это — симптомы проблем с ARP. И MikroTik даёт достаточно инструментов чтобы эти проблемы диагностировать, исправить и предотвратить.

В этой статье разберём: как работает ARP в MikroTik, что показывает ip arp таблица, зачем нужны режимы reply-only и proxy-arp, что означает add arp for leases в DHCP, как бороться с ARP-конфликтами и как правильно очистить ARP таблицу. Всё с командами RouterOS.

Что такое ARP и зачем он нужен

ARP (Address Resolution Protocol) — протокол, который связывает IP-адреса с MAC-адресами на уровне Ethernet. Когда устройство хочет отправить пакет на IP 192.168.1.10 — оно не знает MAC-адрес получателя. Оно отправляет широковещательный ARP-запрос: «Кто имеет адрес 192.168.1.10? Скажите мне свой MAC». Устройство с этим IP отвечает: «Это я, мой MAC — 00:11:22:33:44:55».

Без ARP Ethernet-сети не работают. IP-пакет не может быть доставлен без знания MAC-адреса следующего хопа. Это фундаментальный протокол L2/L3 взаимодействия, и проблемы с ним немедленно сказываются на связности сети.

Результаты ARP-запросов кэшируются в ARP-таблице — чтобы не спрашивать каждый раз. В MikroTik эта таблица называется /ip arp.

ARP таблица в MikroTik: как читать и что там хранится

Смотрим текущую ARP-таблицу:

/ip arp print

Пример вывода:

Flags: X - disabled, I - invalid, H - DHCP, D - dynamic, P - published, C - complete
 #    ADDRESS         MAC-ADDRESS        INTERFACE   STATUS
 0 DC 192.168.1.1     D4:CA:6D:AA:BB:CC  bridge      complete
 1 DC 192.168.1.10    00:11:22:33:44:55  bridge      complete
 2 D  192.168.1.15    78:24:AF:22:11:01  bridge      incomplete
 3  C 192.168.1.100   AA:BB:CC:DD:EE:FF  bridge      complete

Разбираем флаги ARP таблицы:

  • D (dynamic) — запись создана автоматически в результате ARP-обмена. Живёт до истечения arp-timeout, потом удаляется.
  • S (static) — запись добавлена вручную администратором. Не удаляется по таймауту.
  • H (DHCP) — запись создана DHCP-сервером (при включённом add-arp=yes).
  • P (published) — MikroTik отвечает на ARP-запросы за этот IP (proxy ARP).
  • C (complete) — запись актуальна, MAC подтверждён.
  • incomplete — ARP-запрос был отправлен, но ответа ещё нет или он не пришёл.

Фильтрация вывода:

# Только динамические записи
/ip arp print where dynamic=yes

# Только статические
/ip arp print where dynamic=no

# Записи на конкретном интерфейсе
/ip arp print where interface=bridge

# Конкретный IP
/ip arp print where address=192.168.1.10

# Поиск по MAC
/ip arp print where mac-address="00:11:22:33:44:55"

ARP Timeout в MikroTik: как настроить и зачем

Динамические ARP-записи не живут вечно. По истечении таймаута MikroTik удаляет запись и при следующем обращении к этому IP снова отправляет ARP-запрос. Это нормальное поведение.

Посмотреть текущий таймаут:

/ip settings print
# Пример вывода
          arp-timeout: 30s
    ip-forward: yes

По умолчанию — 30 секунд. Изменить:

# Увеличить таймаут до 5 минут
/ip settings set arp-timeout=5m

# Или до 1 минуты
/ip settings set arp-timeout=1m

Когда менять ARP timeout

  • Таймаут слишком маленький — ARP-запросы отправляются часто, широковещательный трафик растёт. В больших сетях с тысячами устройств это заметная нагрузка. Увеличьте до 5–15 минут.
  • Таймаут слишком большой — если устройство сменило MAC-адрес (замена сетевой карты, пересоздание VM), старая запись будет жить долго и маршрутизация к этому IP сломается до истечения таймаута. Для динамичных сред (виртуализация, частые замены) — не ставьте больше 5 минут.

Add ARP for Leases в MikroTik DHCP: что это и зачем включать

В настройках DHCP-сервера MikroTik есть параметр add-arp. Когда он включён, RouterOS автоматически добавляет статическую ARP-запись для каждого клиента, получившего IP-адрес по DHCP.

Включить:

# Включить для конкретного DHCP-сервера
/ip dhcp-server set [find name=dhcp1] add-arp=yes

# Проверить
/ip dhcp-server print detail

После включения в ARP-таблице будут появляться записи с флагом H (DHCP):

/ip arp print
# H  192.168.1.10    00:11:22:33:44:55  bridge
# H  192.168.1.15    78:24:AF:22:11:01  bridge

Почему это важно

Само по себе add-arp=yes не даёт безопасности — оно лишь создаёт записи. Настоящий смысл раскрывается в связке с режимом arp=reply-only на интерфейсе или bridge. Вместе они создают систему контроля: роутер знает только «разрешённые» пары IP-MAC и отвечает только на запросы из этого списка.

Также add-arp=yes полезно для стабильности ARP-таблицы: DHCP-записи не протухают по таймауту пока аренда активна, что снижает количество ARP-запросов в сети.

Режим reply-only в MikroTik: простая защита от посторонних

ARP reply-only — один из самых эффективных и простых механизмов контроля доступа в LAN-сегменте. В этом режиме интерфейс или bridge отвечает на ARP-запросы только для IP-адресов из статической ARP-таблицы. Для всех остальных — молчание.

Что это означает на практике: подключи к сети неизвестный ноутбук — он не получит ARP-ответа от роутера, не узнает MAC шлюза и не выйдет в интернет. Даже если вручную пропишешь IP, маску и шлюз.

Настройка reply-only на bridge

# Установить режим reply-only на bridge
/interface bridge set [find name=bridge] arp=reply-only

# Проверить
/interface bridge print detail

Настройка reply-only на интерфейсе

/interface ethernet set [find name=ether2] arp=reply-only

Полная схема: DHCP + add-arp + reply-only

# Шаг 1: Включаем add-arp на DHCP сервере
/ip dhcp-server set [find name=dhcp1] add-arp=yes

# Шаг 2: Переводим bridge в режим reply-only
/interface bridge set [find name=bridge] arp=reply-only

# Шаг 3: Для устройств со статическими IP добавляем записи вручную
/ip arp add address=192.168.1.100 mac-address=AA:BB:CC:DD:EE:FF interface=bridge

# Шаг 4: Проверяем ARP таблицу
/ip arp print

После этой настройки в сети работают только устройства, чьи пары IP-MAC известны роутеру — либо через DHCP, либо через статические записи. Всё остальное — отрезано на уровне ARP.

Важно: при включении reply-only на bridge проверьте что сам MikroTik (его IP на bridge) есть в ARP-таблице как published-запись — иначе устройства не смогут достучаться до шлюза:

# Добавить published запись для самого роутера
/ip arp add address=192.168.1.1 mac-address=D4:CA:6D:AA:BB:CC interface=bridge published=yes

Proxy ARP и Local Proxy ARP в MikroTik

Это два режима работы интерфейса, при которых MikroTik сам отвечает на ARP-запросы вместо целевых устройств.

Proxy ARP

MikroTik отвечает на ARP-запросы о хостах из других подсетей, которые он знает через таблицу маршрутизации. Полезно когда нужно «склеить» два L3-сегмента так, чтобы они выглядели как один L2 — типичный сценарий в некоторых провайдерских схемах и VPN-конфигурациях.

# Включить proxy-arp на интерфейсе
/interface ethernet set [find name=ether1] arp=proxy-arp

# Проверить
/interface ethernet print detail where name=ether1

Local Proxy ARP

Более специфичный режим: MikroTik отвечает на ARP-запросы внутри одного сегмента — то есть когда источник и цель ARP-запроса находятся на одном интерфейсе. Используется при Split Horizon в L2-сетях, когда порты физически изолированы друг от друга (Private VLAN, port isolation), но логически должны видеть шлюз.

# Включить local-proxy-arp
/interface ethernet set [find name=ether2] arp=local-proxy-arp

Сравнение режимов ARP

Режим Описание Типичное применение
enabled (default) Стандартное поведение ARP Обычные LAN-сети
disabled ARP полностью отключён, записи только статические Жёсткий контроль, p2p-линки
reply-only Отвечает только на известные IP из таблицы Защита LAN от неизвестных устройств
proxy-arp Отвечает за хосты из других подсетей VPN, провайдерские схемы
local-proxy-arp Отвечает за хосты в том же сегменте Port isolation, Private VLAN

ARP Flux в MikroTik: что это и как с этим бороться

ARP Flux (или ARP Flapping) — ситуация, когда один и тот же IP-адрес «отвечает» с разных MAC-адресов или с разных интерфейсов. Таблица ARP постоянно перезаписывается, устройства не могут стабильно достучаться до нужного хоста.

Причины ARP Flux в MikroTik

  • Несколько интерфейсов с адресами из одной подсети — MikroTik отвечает на ARP с разных интерфейсов в зависимости от того, какой получил запрос первым.
  • Неправильная настройка bridge — если интерфейсы добавлены в bridge, но у самих интерфейсов остались IP-адреса, возможны конфликты ARP между bridge и физическими интерфейсами.
  • VRRP без корректной настройки ARP — при переключении VRRP-мастера ARP-кэши на клиентах могут не обновиться вовремя.
  • Виртуальные машины с общим IP — live migration, клонирование без смены MAC.

Диагностика ARP Flux

# Смотрим ARP таблицу — один IP с разными MAC
/ip arp print

# Мониторим ARP-трафик в реальном времени
/tool sniffer quick port=0 ip-address=192.168.1.10

# Используем torch для наблюдения за трафиком
/tool torch interface=bridge

Решение ARP Flux

# Убираем IP с физических интерфейсов если они в bridge
/ip address remove [find interface=ether2]
/ip address remove [find interface=ether3]
# IP должен быть только на bridge интерфейсе

# Проверяем что адреса назначены только bridge
/ip address print

# При VRRP — настраиваем gratuitous ARP
/interface vrrp set [find] on-backup="" on-master=""

detected conflict by arp: что это и как найти виновника

В логах MikroTik появляется запись:

arp,error detected conflict by arp response for 192.168.1.10 on bridge

Это означает: MikroTik получил ARP-ответ с IP-адресом, который уже есть в его ARP-таблице, но с другим MAC-адресом. Другими словами — в сети два устройства с одним IP-адресом. Классический IP-конфликт.

Причины конфликта ARP

  • Два устройства вручную прописали одинаковый статический IP
  • DHCP-сервер выдал адрес, который уже занят статически на другом устройстве
  • Виртуальная машина клонирована без смены IP
  • Неправильные статические резервации в DHCP
  • Устаревшая статическая ARP-запись в таблице MikroTik конфликтует с реальным устройством

Как найти устройство с конфликтующим IP

# Шаг 1: Смотрим ARP таблицу — ищем подозрительный IP
/ip arp print where address=192.168.1.10

# Шаг 2: Включаем логирование ARP
/system logging add topics=arp action=memory

# Шаг 3: Смотрим логи
/log print where topics~"arp"

# Шаг 4: Захватываем ARP-пакеты для анализа
/tool sniffer quick port=0
# В выводе ищем ARP пакеты от 192.168.1.10

# Шаг 5: Используем torch
/tool torch interface=bridge src-address=192.168.1.10

Как только найдёте второй MAC-адрес — сопоставьте его с устройством. На Cisco-коммутаторах:

# На управляемом коммутаторе в сети
show mac address-table | include [найденный MAC]

Нашли устройство — меняем IP или удаляем конфликтующую запись.

Удаление конфликтующей ARP записи

# Удалить запись для конкретного IP
/ip arp remove [find address=192.168.1.10]

# Или обновить запись вручную (если знаем правильный MAC)
/ip arp set [find address=192.168.1.10] mac-address=00:11:22:33:44:55

Как очистить ARP таблицу в MikroTik

Иногда нужно сбросить ARP-таблицу полностью — после смены IP-схемы, при переносе устройств, после устранения конфликтов.

# Удалить только динамические записи (безопасно)
/ip arp remove [find dynamic=yes]

# Удалить все записи кроме published (осторожно!)
/ip arp remove [find dynamic=yes !published=yes]

# Удалить запись для конкретного IP
/ip arp remove [find address=192.168.1.10]

# Удалить все записи на конкретном интерфейсе
/ip arp remove [find interface=bridge dynamic=yes]

# Просмотреть что осталось
/ip arp print

Осторожно: не удаляйте статические и published-записи без необходимости — особенно при включённом reply-only. После удаления устройства потеряют связь с роутером до следующего DHCP-запроса или ручного восстановления записей.

ARP в Bridge MikroTik: особенности настройки

Когда интерфейсы объединены в bridge, ARP-настройки работают на двух уровнях: на самом bridge и на физических интерфейсах внутри него. Это иногда вызывает путаницу.

# Смотрим настройки bridge
/interface bridge print detail

# Смотрим порты bridge
/interface bridge port print

# ARP настройки применяем к bridge, не к физическим интерфейсам
/interface bridge set [find name=bridge] arp=reply-only

Правила для bridge и ARP

  • IP-адрес шлюза назначайте на bridge, не на физические интерфейсы внутри него
  • Режим ARP (reply-only, proxy-arp) настраивайте на bridge
  • Физические интерфейсы внутри bridge оставляйте с arp=enabled или arp=disabled
  • Проверяйте что у физических интерфейсов нет своих IP-адресов при использовании bridge
# Проверяем что IP только на bridge
/ip address print
# Строки с ether2, ether3 не должны иметь адресов из LAN-подсети

# Проверяем ARP на уровне bridge
/interface bridge print detail where name=bridge

Практические кейсы настройки ARP

Кейс 1: Безопасный офисный LAN — контроль подключений через ARP

Задача: Запретить неизвестным устройствам выходить в сеть, не заблокировав при этом корпоративные устройства.

# Шаг 1: DHCP с автоматическим добавлением ARP
/ip dhcp-server set [find name=dhcp1] add-arp=yes

# Шаг 2: Bridge в режиме reply-only
/interface bridge set [find name=bridge] arp=reply-only

# Шаг 3: Для серверов и устройств со статическим IP
# добавляем записи вручную
/ip arp add address=192.168.1.100 mac-address=AA:BB:CC:DD:EE:FF interface=bridge
/ip arp add address=192.168.1.101 mac-address=AA:BB:CC:DD:EE:00 interface=bridge

# Шаг 4: Проверяем — подключаем неизвестный ноутбук
# Пропишем статически 192.168.1.50 — интернета не будет
# ARP-ответа от роутера не последует

Кейс 2: Диагностика «пропадающего» хоста

Задача: Хост 192.168.1.50 периодически недоступен, хотя физически подключён и включён.

# Шаг 1: Смотрим ARP запись
/ip arp print where address=192.168.1.50
# Если incomplete — ARP-запрос уходит, ответа нет
# Если записи нет — ARP протух, новый ещё не получен

# Шаг 2: Пингуем с роутера (это обновит ARP)
/ping 192.168.1.50 count=5

# Шаг 3: Снова смотрим ARP
/ip arp print where address=192.168.1.50
# Теперь должна быть complete запись

# Шаг 4: Если проблема повторяется — увеличиваем timeout
/ip settings set arp-timeout=5m

# Шаг 5: Или делаем запись статической
/ip arp add address=192.168.1.50 mac-address=00:11:22:33:44:55 interface=bridge

Кейс 3: Поиск и устранение ARP-конфликта

Задача: В логах появилось «detected conflict by arp response for 192.168.1.25». Нужно найти виновника.

# Шаг 1: Включаем логирование ARP
/system logging add topics=arp action=memory

# Шаг 2: Ждём несколько минут, смотрим логи
/log print where topics~"arp"
# Находим два разных MAC для 192.168.1.25

# Шаг 3: Захватываем пакеты
/tool sniffer quick port=0
# Фильтруем ARP пакеты от 192.168.1.25

# Шаг 4: Нашли второй MAC — ищем устройство
/ip dhcp-server lease print where mac-address="ВТОРОЙ-MAC"
# Или смотрим bridge host table
/interface bridge host print where mac-address="ВТОРОЙ-MAC"

# Шаг 5: Устраняем конфликт — меняем IP на найденном устройстве
# или добавляем его в DHCP с правильной резервацией

# Шаг 6: Очищаем старую ARP запись
/ip arp remove [find address=192.168.1.25]

# Шаг 7: Отключаем логирование ARP (чтобы не засорять)
/system logging remove [find topics~"arp"]

Шпаргалка команд ARP для MikroTik

# ===== ПРОСМОТР =====

# Вся ARP таблица
/ip arp print

# Со статусами (подробно)
/ip arp print detail

# Только динамические
/ip arp print where dynamic=yes

# Только статические
/ip arp print where dynamic=no

# По IP
/ip arp print where address=192.168.1.10

# По MAC
/ip arp print where mac-address="00:11:22:33:44:55"

# По интерфейсу
/ip arp print where interface=bridge

# ===== УПРАВЛЕНИЕ ЗАПИСЯМИ =====

# Добавить статическую запись
/ip arp add address=192.168.1.100 mac-address=AA:BB:CC:DD:EE:FF interface=bridge

# Удалить конкретную запись
/ip arp remove [find address=192.168.1.100]

# Удалить все динамические
/ip arp remove [find dynamic=yes]

# Очистить весь кэш (осторожно!)
/ip arp remove [find]

# ===== НАСТРОЙКИ =====

# Посмотреть ARP timeout
/ip settings print

# Изменить timeout
/ip settings set arp-timeout=5m

# Включить add-arp в DHCP
/ip dhcp-server set [find name=dhcp1] add-arp=yes

# ===== РЕЖИМЫ ИНТЕРФЕЙСА =====

# reply-only на bridge
/interface bridge set [find name=bridge] arp=reply-only

# proxy-arp на интерфейсе
/interface ethernet set [find name=ether1] arp=proxy-arp

# Вернуть стандартный режим
/interface bridge set [find name=bridge] arp=enabled

# ===== ДИАГНОСТИКА =====

# Захват ARP пакетов
/tool sniffer quick port=0

# Логи ARP конфликтов
/log print where topics~"arp"

# Включить логирование ARP
/system logging add topics=arp action=memory

# Мониторинг трафика
/tool torch interface=bridge

Заключение

ARP — протокол простой по сути, но богатый на нюансы в реальных сетях. MikroTik даёт полный набор инструментов для работы с ним: от просмотра и очистки ARP-таблицы до тонкой настройки режимов интерфейсов и защиты сети через reply-only.

Три главных правила для стабильной работы ARP в MikroTik:

  • В безопасных LAN-сетях — включайте add-arp=yes на DHCP-сервере и arp=reply-only на bridge. Простая и эффективная защита от неизвестных устройств.
  • При конфликтах IP — сразу в логи и packet sniffer. Находите второй MAC, ищете устройство, устраняете дубликат. Не оставляйте конфликты висеть — они нестабилизируют ARP-кэши на всех устройствах в сегменте.
  • При «плавающих» хостах и ARP Flux — проверяйте что IP-адреса назначены только на bridge, а не на физические интерфейсы внутри него. Это источник большинства ARP-проблем в MikroTik-сетях с bridge.

Столкнулись с нестандартным поведением ARP или «detected conflict» который никак не даётся? Пишите в комментарии — разберём.

over_dude
Author: over_dude

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх