Назад | Перейти на главную страницу

Как настроить зашифрованный L2-туннель с помощью маршрутизаторов MikroTik?

Чего бы я хотел добиться

Я хочу безопасно распределить существующую внутреннюю подсеть между несколькими зданиями. Это означает, что у меня есть два места с виртуальными машинами, которые должны находиться в одной подсети. Идея состоит в том, что виртуальные машины (со статическим IP-адресом) можно переносить из одного места в другое.

(Физические) хост-машины подключены к коммутатору в каждом месте. Итак, если бы не было проблем с безопасностью или стоимостью, я бы просто подключил оба коммутатора сетевым кабелем:

[Машины] --- [Переключатель A] <---- ДЛИННЫЙ КАБЕЛЬ ---> [Переключатель B] --- [Машины]

Я бы хотел заменить этот длинный кабель зашифрованным туннелем с использованием двух шлюзов, которым не нужно заботиться об IP-адресах или маршрутизации, и просто принимать любые входящие пакеты, шифровать их и отправлять их на другой шлюз через зашифрованный туннель. Затем другой шлюз расшифровывает пакеты и отправляет их удаленному коммутатору. Физически это выглядело бы так:

[Машины] --- [Переключатель A] --- [ШЛЮЗ A] <- ИНТЕРНЕТ -> [ШЛЮЗ B] - [Переключатель B] --- [Машины]

Я бы хотел, чтобы шлюзы не нуждались в IP-адресах внутри подсети. Правила должны быть полностью основаны на портах:

У двух шлюзов будет статический маршрутизируемый IP-адрес для создания туннеля. Шифрование должно быть надежным (по крайней мере, AES128, SHA256, DH2048; общий секрет в порядке), что не поддерживает простые туннели типа PPP. Таким образом, может потребоваться дополнительный / отдельный уровень шифрования.

У меня в наличии только роутеры MikroTik. Поэтому я бы предпочел их использовать. Однако я в основном ищу «волшебные слова» (названия протоколов и тому подобное) и правильную комбинацию технологий, которая позволяет мне это делать. Итак, если вы знаете, как это сделать с маршрутизаторами Cisco или HP, возможно, это также поможет, если вы объясните, как вы бы просто сделали это с этими ...

Вопросы / попытки

Какие типы фильтров и протоколов межсетевого экрана я могу использовать для этого?

Моей первой идеей было использовать IPsec для охвата зашифрованного туннеля. Но тогда мне нужно будет определить политику IPsec, основанную на физических портах. Но есть только возможность определить эти данные с / на специальную комбинацию IP-адреса / IP-порта.

Таким образом, IPsec будет работать просто как уровень шифрования для другого типа туннеля (PPTP, SSTP, L2TP и OVPN в настоящее время поддерживаются MikroTik RouterOS). Поскольку PPP-туннели обычно не поддерживают надежное шифрование, я бы позволил IPsec выполнить эту работу и охватить незашифрованный-PPP-туннель через зашифрованный IPsec-туннель.

Хорошо, теперь у нас есть хоть какой-то туннельный интерфейс, который мы можем использовать как исходящий порт. Однако я здесь как бы потерялся. Я не нахожу такой возможности сказать: «фрейм с входящим в должен быть отправлен через интерфейс» и «фрейм, входящий в, должен быть отправлен через интерфейс».

Я не часто работаю на Layer2 ... так что на самом деле я ищу подходящий «термин» или «категорию». Я мог бы представить, как найти его в IP-Firewall (mangle-> prerouting) или что-то в этом роде, но я предполагаю, что это уже материал уровня 3 ...

Мне просто нужно установить мост? Если да, как я могу добавить туннельный интерфейс к мосту (желательно с помощью winbox-интерфейса)? Нужен ли мосту MAC-адрес?

На всякий случай это тупиковая попытка: я также нашел «EoIP», «IP-туннель» и «GRE-туннель» в настройке «Интерфейс». Но я понятия не имею, что они могут делать ... Так что на всякий случай дайте мне знать, какие из них стоит исследовать ...

Кроме того, если есть более простое и понятное решение, не возражайте просто рассказать мне о своем решении ... Вам не нужно продолжать мои вышеупомянутые попытки, если есть только более простой способ!

Вы можете выполнить то, о чем просите, используя комбинацию мостов, туннелей EoIP и IPsec.

Сначала вы создаете туннель EoIP с обеих сторон, чтобы оба маршрутизатора могли общаться друг с другом.
EoIP это проприетарный туннель MikroTik, который работает так же, как GRE proto 47.
Он может пересылать целые кадры Ethernet, а не только IP (например, интерфейс IPIP или TAP), что делает его идеальным для «расширения» широковещательных доменов L2 по каналам L3.

Затем вы настраиваете IPsec для шифрования связи по туннелю.
В последних версиях Mikrotik это можно сделать автоматически из настроек интерфейса EoIP, хотя я предпочитаю настраивать это вручную для лучшего контроля.
Вы применяете политики IPsec к IP-адресам конечных точек туннелей EoIP (таким образом, шифруя весь трафик туннеля EoIP), а не для сетей, проходящих через туннель.

И, наконец, вы создаете мост на обоих маршрутизаторах и присоединяете порт (ы) Ethernet и туннель EoIP с каждой стороны.

Таким образом, вы можете расширить широковещательный домен L2 на удаленную сторону, и мост позаботится о том, какие пакеты должны проходить через туннель, а какие оставаться локально.
Мосты похожи на программные коммутаторы, поэтому они хранят таблицу, в которой указаны MAC-адреса на каких портах, и автоматически пересылают пакеты, предназначенные для любого порта. Конечно, весь широковещательный трафик будет перенаправляться в туннель. Подробнее о мостах

На официальная документация MikroTik этот сценарий уже задокументирован (за исключением шифрования IPsec).

Предположим, мы хотим соединить две сети: «Офисная ЛВС» и «Удаленная ЛВС». С помощью EoIP можно настроить так, чтобы офисная и удаленная локальные сети находились в одном широковещательном домене Layer2.

Рассмотрим следующую настройку:

Поскольку вы знаете, что беспроводная станция не может быть соединена мостом, для преодоления этого ограничения (не связанного с WDS) мы создадим туннель EoIP по беспроводной связи и соединим его с интерфейсами, подключенными к локальным сетям.

Мы не будем рассматривать беспроводную конфигурацию в этом примере, давайте предположим, что беспроводное соединение уже установлено.

Сначала мы создаем туннель EoIP на нашем шлюзе ...

[admin@Our_GW] interface eoip> add name="eoip-remote" tunnel-id=0 \
\... remote-address=10.0.0.2
[admin@Our_GW] interface eoip> enable eoip-remote
[admin@Our_GW] interface eoip> print
Flags: X - disabled, R - running
  0    name=eoip-remote mtu=1500 arp=enabled remote-address=10.0.0.2 tunnel-id=0
[admin@Our_GW] interface eoip>

... и на удаленном маршрутизаторе

[admin@Remote] interface eoip> add name="eoip" tunnel-id=0 \
\... remote-address=10.0.0.1
[admin@Remote] interface eoip> enable eoip-main
[admin@Remote] interface eoip> print
Flags: X - disabled, R - running
  0   name=eoip mtu=1500 arp=enabled remote-address=10.0.0.1 tunnel-id=0

[admin@Remote] interface eoip>

Следующим шагом будет соединение локальных интерфейсов с туннелем EoIP на нашем GW ...

[admin@Our_GW] interface bridge> add 
[admin@Our_GW] interface bridge> print
Flags: X - disabled, R - running
 0  R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 
      protocol-mode=none priority=0x8000 auto-mac=yes 
      admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s 
      transmit-hold-count=6 ageing-time=5m 
[admin@Our_GW] interface bridge> port add bridge=bridge1 interface=eoip-remote
[admin@Our_GW] interface bridge> port add bridge=bridge1 interface=office-eth
[admin@Our_GW] interface bridge> port print
Flags: X - disabled, I - inactive, D - dynamic
 #    INTERFACE      BRIDGE  PRIORITY PATH-COST
 0    eoip-remote    bridge1 128      10
 1    office-eth     bridge1 128      10
[admin@Our_GW] interface bridge>

... и удаленный маршрутизатор:

[admin@Remote] interface bridge> add 
[admin@Remote] interface bridge> print
Flags: X - disabled, R - running
 0  R name="bridge1" mtu=1500 arp=enabled mac-address=00:00:00:00:00:00 
      protocol-mode=none priority=0x8000 auto-mac=yes 
      admin-mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s 
      transmit-hold-count=6 ageing-time=5m 
[admin@Remote] interface bridge> port add bridge=bridge1 interface=ether
[admin@Remote] interface bridge> port add bridge=bridge1 interface=eoip-main
[admin@Remote] interface bridge> port print
Flags: X - disabled, I - inactive, D - dynamic
 #    INTERFACE      BRIDGE  PRIORITY PATH-COST
 0    ether          bridge1 128      10
 1    eoip-main      bridge1 128      10     
[admin@Remote] interface bridge>

Теперь оба сайта находятся в одном широковещательном домене Layer2. Вы можете настроить IP-адреса из одной сети на обоих сайтах.

И вам также необходимо настроить IPSec. Больше информации здесь

Имейте в виду, что IPsec, хотя и самый безопасный способ общения на Mikrotik на данный момент, довольно сильно требует процессора, если у ваших маршрутизаторов нет аппаратного ускорения. Поэтому, если вы используете простую маршрутизаторную плату, не ожидайте пропускной способности больше 10-15 Мбит.

Если ваши маршрутизаторы имеют динамические IP-адреса в Интернете, вам нужно будет использовать IP> Облачная функция MikroTik, чтобы получить динамический DNS, а затем использовать эти DynDNS с небольшим скриптом для автоматического обновления IP-адресов в туннелях EoIP, а также одноранговых узлов и политик IPsec при изменении ваших общедоступных IP-адресов.

Наконец, я предполагаю, что ваши подключения к Интернету имеют в лучшем случае MTU 1500 байт. Используя туннель и EoIP, вам нужно будет снизить MTU интерфейса туннеля EoIP до 1400 байт (вам лучше провести некоторое тестирование, чтобы определить наилучшее значение для вашей настройки / трафика).
Для моей настройки / трафика я использую 1400 байт. К сожалению, из-за природы IPsec, зависящей от размера ваших пакетов, накладные расходы являются переменными, поэтому вы не всегда можете извлечь из этого максимальную пользу.