MikroTik — несколько адресов и несколько разных MAC на одном интерфейсе
Нечасто, но с завидной периодичностью на профильных форумах возникал один и тот же вопрос: «как на одном интерфейсе роутера MikroTik получить два IP-адреса с разными MAC?». Обычно этот вопрос остается без ответа, либо вопрошающему отвечают «никак». И действительно, задача нетривиальная. В стандартной конфигурации соблюдается правило «1 интерфейс = 1 MAC». В этой статье я расскажу как обойти это ограничение используя расширенный функционал MikroTik.
Сначала вспомним матчасть RouterBoard. Помимо маршрутизации, устройства MikroTik могут выполнять и коммутацию. Для этого некоторые из них имеют отдельный свитч-чип, а также возможность объединять интерфейсы с помощью программного коммутатора — bridge. Bridge (в русской терминологии «мост») производит коммутацию пакетов за счёт ресурсов процессора устройства. С помощью моста также объединяют между собой разнородные ethernet-образные инетрфейсы — ethernet, wlan, vlan, eoip, vpls.
Мост в иерархии интерфейсов микротик является более высокой, объединяющей сущностью. При объединении интерфейсов с помощью моста, на него устанавливается MAC-адрес, который будет транслироваться во все подчиненные (slave) интерфейсы. MAC-адреса подчиненных интерфейсов перестают использоваться и заменяются в исходящих фреймах MAC-адресом моста.
Соответственно, IP-адрес и все службы связанные с протоколом IP должны быть привязаны НЕ к зависимым интерфейсам, а к вышестоящему мосту.
За счёт того, что мост реализован ресурсами CPU, он имеет очень широкий функционал по управлению трафиком. Фильтрация входящих и транзитных пакетов, а также возможность трансляции MAC-адресов сразу привлекли моё внимание. Итак, инструментом решения задачи будет bridge, точнее bridge NAT.
Приступим. У нашего подопытного маршрутизатора есть внутренний мост «bridge-local», которому присвоен адрес 192.0.2.1/24 и который является шлюзом для компьютеров локальной сети. Для «bridge-local» администратором назначен MAC D4:CA:6D:C7:11:11 Физический интерфейс Ether2 является одним из подчиненных (slave) портов моста «bridge-local» и непосредственно соединяется с локальной сетью.
Задача: добавить на маршрутизатор адрес из той же IP-подсети, но с другим MAC-адресом. Для примера выбрано сочетание IP 192.0.2.111/24 и MAC: D4:CA:6D:C7:22:22
Поскольку в лоб правило «1 интерфейс = 1 MAC» преодолеть нельзя, мы пойдем в обход. Для начала создадим вспомогательный интерфейс «bridge111» куда навесим дополнительный IP-адрес и MAC:
RouterOS command
/interface bridge add admin-mac=D4:CA:6D:C7:22:22 auto-mac=no name=bridge111 protocol-mode=none
Теперь разбираемся, что, откуда и куда нужно будет подменять используя мост. Для этого заглянем в описание протокола ARP: ru.wikipedia.org/wiki/ARP#.D0.9F.D1.80.D0.B8.D0.BD.D1.86.D0.B8.D0.BF_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.8B
Очевидно, что нам нужно перехватывать ARP-запросы узлов запрашивающих MAC устройства имеющего IP 192.0.2.111. Для этого в NAT существует отдельный action «arp-reply»:
RouterOS command
/interface bridge nat add action=arp-reply arp-dst-address=192.0.2.111/32 chain=dstnat dst-mac-address=FF:FF:FF:FF:FF:FF/FF:FF:FF:FF:FF:FF in-bridge=bridge-local mac-protocol=arp to-arp-reply-mac-address=D4:CA:6D:C7:22:22
Попытка выполнить с компьютера команду «ping 192.0.2.111» явного результата не дала, однако при просмотре на компьютере локальной arp-таблицы стало видно сопоставление нового IP-адреса с новым MAC. Получается протокол ARP мы победили.
Переходим к следующему шагу — нам нужно добиться связности по IP. Для этого захватываем пакеты идущие на дополнительную пару MAC+IP:
RouterOS command
/interface bridge nat add action=redirect chain=dstnat dst-address=192.0.2.111/32 in-bridge=bridge-local mac-protocol=ip
После этой команды появляется некое подобие связности. Локальная ARP-таблица компьютера содержит две записи — по одной для каждой пары MAC+IP. MAC-адреса в ней различаются, так как мы и хотели. Пинг до адреса 192.0.2.111 и ответы исправно прилетают.
Но давайте посмотрим на принятые пакеты через wireshark:
Мы видим, что echo-ответы идут с MAC-адреса D4:CA:6D:C7:11:11, связанного с первым IP-адресом 192.0.2.1. И хотя связность есть, решение является незаконченным. Нам необходимо также подменять MAC-адреса в исходящих от роутера пакетах, имеющих src-ip 192.0.2.111. Сделаем это:
RouterOS command
/interface bridge nat add action=src-nat chain=srcnat mac-protocol=ip src-address=192.0.2.111/32 src-mac-address=D4:CA:6D:C7:11:11/FF:FF:FF:FF:FF:FF to-src-mac-address=D4:CA:6D:C7:22:22
Вот, теперь пакеты в сети выглядят правильно — имеют правильное сочетание src-IP и src-MAC:
В окошке winbox настроенные правила преобразования выглядят так:
Аналогичным способом на интерфейс можно добавить сколько угодно дополнительных IP, каждый со своим MAC прописывая соответствующие правила трансляции адресов. Маскарад вам в помощь.

Update: добавил результаты теста с включенным и с выключенным Bridge L2-NAT.
Для теста использовался RB951Ui-2HnD с процессором AR9344. Загрузка процессора изменяется незначительно, в пределах погрешности измерительных инструментов. В среднем рост составил 2% на 100M интерфейсе.
L2-NAT выключен:
L2-NAT включён:
MikroTik — несколько адресов и несколько разных MAC на одном интерфейсе

Нечасто, но с завидной периодичностью на профильных форумах возникал один и тот же вопрос: «как на одном интерфейсе роутера MikroTik получить два IP-адреса с разными MAC?». Обычно этот вопрос остается без ответа, либо вопрошающему отвечают «никак». И действительно, задача нетривиальная. В стандартной конфигурации соблюдается правило «1 интерфейс = 1 MAC». В этой статье я расскажу как обойти это ограничение используя расширенный функционал MikroTik.
Сначала вспомним матчасть RouterBoard. Помимо маршрутизации, устройства MikroTik могут выполнять и коммутацию. Для этого некоторые из них имеют отдельный свитч-чип, а также возможность объединять интерфейсы с помощью программного коммутатора — bridge. Bridge (в русской терминологии «мост») производит коммутацию пакетов за счёт ресурсов процессора устройства. С помощью моста также объединяют между собой разнородные ethernet-образные инетрфейсы — ethernet, wlan, vlan, eoip, vpls.
Мост в иерархии интерфейсов микротик является более высокой, объединяющей сущностью. При объединении интерфейсов с помощью моста, на него устанавливается MAC-адрес, который будет транслироваться во все подчиненные (slave) интерфейсы. MAC-адреса подчиненных интерфейсов перестают использоваться и заменяются в исходящих фреймах MAC-адресом моста.
Соответственно, IP-адрес и все службы связанные с протоколом IP должны быть привязаны НЕ к зависимым интерфейсам, а к вышестоящему мосту.
За счёт того, что мост реализован ресурсами CPU, он имеет очень широкий функционал по управлению трафиком. Фильтрация входящих и транзитных пакетов, а также возможность трансляции MAC-адресов сразу привлекли моё внимание. Итак, инструментом решения задачи будет bridge, точнее bridge NAT.
Приступим. У нашего подопытного маршрутизатора есть внутренний мост «bridge-local», которому присвоен адрес 192.0.2.1/24 и который является шлюзом для компьютеров локальной сети. Для «bridge-local» администратором назначен MAC D4:CA:6D:C7:11:11 Физический интерфейс Ether2 является одним из подчиненных (slave) портов моста «bridge-local» и непосредственно соединяется с локальной сетью.
Задача: добавить на маршрутизатор адрес из той же IP-подсети, но с другим MAC-адресом. Для примера выбрано сочетание IP 192.0.2.111/24 и MAC: D4:CA:6D:C7:22:22
Поскольку в лоб правило «1 интерфейс = 1 MAC» преодолеть нельзя, мы пойдем в обход. Для начала создадим вспомогательный интерфейс «bridge111» куда навесим дополнительный IP-адрес и MAC:
RouterOS command
/interface bridge add admin-mac=D4:CA:6D:C7:22:22 auto-mac=no name=bridge111 protocol-mode=none
Теперь разбираемся, что, откуда и куда нужно будет подменять используя мост. Для этого заглянем в описание протокола ARP: ru.wikipedia.org/wiki/ARP. Очевидно, что нам нужно перехватывать ARP-запросы узлов запрашивающих MAC устройства имеющего IP 192.0.2.111. Для этого в NAT существует отдельный action «arp-reply»:
RouterOS command
/interface bridge nat add action=arp-reply arp-dst-address=192.0.2.111/32 chain=dstnat dst-mac-address=FF:FF:FF:FF:FF:FF/FF:FF:FF:FF:FF:FF
in-bridge=bridge-local mac-protocol=arp to-arp-reply-mac-address=D4:CA:6D:C7:22:22
Попытка выполнить с компьютера команду «ping 192.0.2.111» явного результата не дала, однако при просмотре на компьютере локальной arp-таблицы стало видно сопоставление нового IP-адреса с новым MAC. Получается протокол ARP мы победили.
Переходим к следующему шагу — нам нужно добиться связности по IP. Для этого захватываем пакеты идущие на дополнительную пару MAC+IP:
RouterOS command
/interface bridge add action=redirect chain=dstnat dst-address=192.0.2.111/32 in-bridge=bridge-local mac-protocol=ip
После этой команды появляется некое подобие связности. Локальная ARP-таблица компьютера содержит две записи — по одной для каждой пары MAC+IP. MAC-адреса в ней различаются, так как мы и хотели. Пинг до адреса 192.0.2.111 и ответы исправно прилетают.
Но давайте посмотрим на принятые пакеты через wireshark:
Мы видим, что echo-ответы идут с MAC-адреса D4:CA:6D:C7:11:11, связанного с первым IP-адресом 192.0.2.1. И хотя связность есть, решение является незаконченным. Нам необходимо также подменять MAC-адреса в исходящих от роутера пакетах, имеющих src-ip 192.0.2.111. Сделаем это:
RouterOS command
/interface bridge nat add action=src-nat chain=srcnat mac-protocol=ip src-address=192.0.2.111/32 src-mac-address=D4:CA:6D:C7:11:11/FF:FF:FF:FF:FF:FF
Вот, теперь пакеты в сети выглядят правильно — имеют правильное сочетание src-IP и src-MAC:
В окошке winbox настроенные правила преобразования выглядят так:
Аналогичным способом на интерфейс можно добавить сколько угодно дополнительных IP, каждый со своим MAC прописывая соответствующие правила трансляции адресов. Маскарад вам в помощь.

Update: добавил результаты теста с включенным и с выключенным Bridge L2-NAT. Для теста использовался RB951Ui-2HnD с процессором AR9344. Загрузка процессора изменяется незначительно, в пределах погрешности измерительных инструментов. В среднем рост составил 2% на 100M интерфейсе.
L2-NAT выключен:
L2-NAT включен:
Часть 1. Анализ запроса ARP
Часть 2. Анализ таблицы MAC-адресов коммутатора Часть 3. Анализ процесса ARP в удалённых подключениях Исходные данные Это задание оптимизировано для просмотра PDU. Устройства уже настроены. Вам необходимо будет в режиме моделирования собрать сведения о PDU, а также ответить на ряд вопросов о собираемых данных. Часть 1: Анализ запроса ARP Шаг 1: Создание запросов ARP путём отправки эхо-запросов на адрес 172.16.31.3 с 172.16.31.2. a. Щёлкните 172.16.31.2 и откройте окно Command Prompt (Командная строка). b. Выполните команду arp -d , чтобы очистить таблицу ARP. c. Перейдите в режим моделирования и выполните команду ping 172.16.31.3 . Будут созданы два пакета PDU. Команда ping не может отправить ICMP-пакет, не зная MAC-адрес назначения. Поэтому компьютер отправляет широковещательный кадр ARP, чтобы найти MAC-адрес назначения. d. Нажмите кнопку Capture/Forward (Захватить/Переслать) один раз. ARP-пакет PDU перемещается на коммутатор Switch1 , а ICMP-пакет PDU исчезает, ожидая ARP-ответ. Откройте PDU и запишите MAC-адрес назначения. Этот адрес есть в таблице выше? FFFF.FFFF. FFFF. 4@5A0 =5B 2 B01;8F5. e. Нажмите кнопку Capture/Forward (Захватить/Переслать), чтобы переместить PDU на следующее устройство. Сколько копий PDU создал коммутатор Switch1 ? 3 f. Какой IP-адрес имеет устройство, которое приняло PDU? 172.16.31.3 g. Откройте PDU и изучите 2-й уровень. Что произошло с MAC-адресами источника и назначения? ><5=O;8AL <5AB0<8 h. Нажимайте кнопку Capture/Forward до тех пор, пока PDU не вернётся на узел 172.16.31.2 . Сколько копий PDU создал коммутатор для ответа на ARP-запрос? 1 Шаг 2: Анализ таблицы ARP. a. Обратите внимание, что пакет ICMP снова появился. Откройте PDU и взгляните на MAC-адрес. MAC-адреса источника и назначения соответствуют их IP-адресам? !>>B25BA2CNB b. Вернитесь обратно в режим реального времени, и команда ping завершится. c. Щёлкните 172.16.31.2 и выполните команду arp -a . Какому IP-адресу соответствует запись MAC- адреса? 172.16.31.3 d. В общем случае, когда оконечное устройство отправляет ARP-запрос? >340 =5 7=05B
| © Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены. | Стр. 2 из 4 |
| В данном документе содержится общедоступная информация корпорации Cisco. |
Packet Tracer: анализ таблицы АRP
Часть 2: Анализ таблицы MAC-адресов коммутатора
Шаг 1: Генерация дополнительного трафиком для заполнения таблицы MAC-адресов коммутатора. a. На узле 172.16.31.2 выполните команду ping 172.16.31.4 . b. Щёлкните 10.10.10.2 и откройте окно Command Prompt (Командная строка). c. Введите команду ping 10.10.10.3 . Сколько ответов было отправлено и получено? 4 >B?@02;5=>. 4 ?>;CG5=>. Шаг 2: Анализ таблицы MAC-адресов на коммутаторах. a. Щёлкните Switch1 и откройте вкладку CLI . Выполните команду show mac-address-table . Совпадают ли записи с указанными в таблице выше? !>20?040NB b. Щёлкните Switch0 и откройте вкладку CLI . Выполните команду show mac-address-table . Совпадают ли записи с указанными в таблице выше? _______ !>2?040NB c. Почему два MAC-адреса связаны с одним портом? 0 MB>< ?>@BC WI-FI=B>G:0
Часть 3: Анализ процесса ARP в удалённых подключениях
Шаг 1: Генерирование трафика ARP. a. Щёлкните 172.16.31.2 и откройте окно Command Prompt (Командная строка). b. Выполните команду ping 10.10.10.1 . c. Введите arp –a . Какой IP-адрес имеет новая запись в таблице ARP? 172.16.31.1 d. Выполните команду arp -d , чтобы очистить таблицу ARP и перейти в режим моделирования . e. Повторите команду ping для адреса 10.10.10.1. Сколько пакетов PDU появилось? 2 f. Нажмите кнопку Capture/Forward . Щёлкните PDU, которые теперь находится на коммутаторе Switch1 . Какой IP-адрес назначения ARP-запроса? 172.16.31.1 g. IP-адрес назначения не 10.10.10.1. Почему? ____________________________________________________________________________________ # Switch1 =5B 2 ARP=B0L;8F5 10.10.10.1 ____________________________________________________________________________________ ____________________________________________________________________________________ ____________________________________________________________________________________ Шаг 2: Анализ таблицы ARP на маршрутизаторе Router1. a. Переключитесь в режим реального времени . Щёлкните Router1 и откройте вкладку CLI . b. Введите в привилегированный режим и выполните команду show mac-address-table . Сколько MAC-адресов в таблице? Почему? 8 >4=>3>. > Router1 =5 4>H;8 ?0:5BK, B. @568< Simulation 1K; ?@5@20= ____________________________________________________________________________________
| © Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены. | Стр. 3 из 4 |
| В данном документе содержится общедоступная информация корпорации Cisco. |
Packet Tracer: анализ таблицы АRP c. Выполните команду show arp . Есть ли запись для 172.16.31.2 ? ABL d. Что происходит с первым успешным эхо-запросом, когда маршрутизатор отвечает на ARP-запрос? >A;5 ?>;CG5=8O :064>3> ME>->B25B0 A;C610 ME>-B5AB8@>20=8O ?@54>AB02;O5B 40==K5 > 2@5
Предлагаемый способ подсчёта баллов
| Расположение | Возможные | Полученные | |
| Раздел заданий | вопросов | баллы | баллы |
| Часть 1. Анализ запроса | Шаг 1 | 10 | |
| ARP | |||
| Шаг 2 | 15 | ||
| Часть 1. Всего | 25 | ||
| Часть 2. Анализ таблицы | Шаг 1 | 5 | |
| MAC-адресов | |||
| Шаг 2 | 20 | ||
| коммутатора | |||
| Часть 2. Всего | 25 | ||
| Часть 3. Анализ | Шаг 1 | 25 | |
| процесса ARP | |||
| в удалённых | Шаг 2 | 25 | |
| подключениях | |||
| Часть 3. Всего | 50 | ||
| Общее количество баллов | 100 | ||
| © Корпорация Cisco и/или её дочерние компании, 2014. Все права защищены. | Стр. 4 из 4 |
| В данном документе содержится общедоступная информация корпорации Cisco. |
Артём Санников
Данная книга является руководством для начинающих специалистов в области анализа и обработки данных. В книге рассматривается язык SQL и его процедурное расширение PL/SQL от компании Oracle.

Главная › Cisco › Cisco Packet Tracer › Количество MAC-адресов на порт устройства. Cisco packet tracer.
Количество MAC-адресов на порт устройства. Cisco packet tracer.
Иногда необходимо разрешить работу нескольких MAC-адресов на порт. Это в основном требуется для того, чтобы организовать работу двух устройств, которые будут подключены на один порт.
Пример: допустим у нас есть телефон Cisco и компьютер, нам нужно чтобы телефон и компьютер работали в режиме моста. В этом случае телефон будет физически подключен к порту коммутатора, а компьютер будет подключен в телефон. В этом случае в таблице MAC-адресов будет запись, которая будет содержать информацию о том, что на порту работает два устройства, то есть будет записан MAC-адрес телефона и компьютера.
Switch>en // Привилегированный режим EXEC
Switch#conf t // Режим глобальной конфигурации
Switch(config)#int fa 0/1 // Выбор интерфейса
Switch(config-if)#switchport mode access // Сообщаем системе, что это абонентский порт
Switch(config-if)#switchport port-security // Активируем функцию switchport port-security на интерфейсе fa 0/1
Switch(config-if)#switchport port-security maximum 2 // Устанавливаем количество активных MAC-адресов на порт устройства

Записи по теме
- Запрет на передачу данных для MAC-адресов. Cisco packet tracer.
- Запись MAC-адреса в рабочую конфигурацию. Cisco packet tracer.
- Время старения MAC-адреса. Cisco packet tracer.
- Активация функции port-security. Cisco packet tracer.
- Исключение IP-адреса из пула DHCP. Cisco packet tracer.
- Адрес домена для пула DHCP. Cisco packet tracer.
- Срок аренды IP-адреса для пула DHCP. Cisco packet tracer.
- DNS-адрес сервера для пула DHCP. Cisco packet tracer.
