Как настроить зашифрованный L2-туннель с помощью MikroTik Routers?
Чего бы я хотел достичь
Я хочу безопасно распределить существующую внутреннюю подсеть по нескольким зданиям. Это означает, что у меня есть два расположения с виртуальными машинами, которые должны находиться в одной подсети. Идея заключается в том, что виртуальные машины (имеющие статический IP-адрес) могут быть перенесены из одного места в другое.
(Физические) хост-машины подключены к коммутатору в каждом месте. Итак, если бы не было проблем с безопасностью или стоимостью, я бы просто подключил оба коммутатора с помощью сетевого кабеля:
[Машины]---[Переключатель A] <---- ДЛИННЫЙ КАБЕЛЬ ---> [Переключатель B]---[Машины]
Я хотел бы заменить этот длинный кабель на зашифрованный туннель, используя два шлюза, которым не нужно заботиться об IP-адресах или маршрутизации, и просто принимать любые входящие пакеты, шифровать их и отправлять на другой шлюз через зашифрованный туннель. Затем другой шлюз расшифровывает пакеты и отправляет их на удаленный коммутатор. Это будет выглядеть физически так:
[Машины]---[Переключатель A]---[Шлюз A] <- ИНТЕРНЕТ -> [Шлюз B] - [Переключатель B]---[Машины]
Я хотел бы избежать того, что шлюзы нуждаются в IP-адресах внутри подсети. Правила должны быть полностью основаны на портах:
- Входящие данные на порт 1: маршрут через туннельный интерфейс
- Входящие данные на туннельном интерфейсе: маршрут через порт 1
Два шлюза будут иметь статический маршрутизируемый IP-адрес для установления туннеля. Шифрование должно быть надежным (по крайней мере, AES128, SHA256, DH2048; общий секрет в порядке), которые не поддерживаются простыми туннелями типа PPP. Поэтому может потребоваться дополнительный / отдельный уровень шифрования.
У меня есть только MikroTik Routers. Поэтому я бы предпочел использовать их. Тем не менее, я в основном ищу "волшебные слова" (имена протоколов и тому подобное) и правильную комбинацию технологий, которые позволяют мне это делать. Итак, если вы знаете, как сделать это с маршрутизаторами 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 Tunnel" и "GRE Tunnel" в настройке "Interface". Но я понятия не имею, что они могут сделать... Так что на всякий случай, дайте мне знать, кого из них стоит расследовать...
Кроме того, если есть более простое и понятное решение, не стесняйтесь просто сказать мне свое решение... Вам не нужно продолжать мои вышеуказанные попытки, если есть просто более простой способ!
1 ответ
Вы можете выполнить то, что вы просите, используя комбинацию мостов, 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 можно настроить так, чтобы офис и удаленные локальные сети находились в одном широковещательном домене уровня 2.
Рассмотрим следующую настройку:
Как вы знаете, беспроводная станция не может быть соединена мостом, чтобы преодолеть это ограничение (не включая 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 > Cloud MikroTik для получения динамического DNS, а затем использовать эти DynDNS с небольшими сценариями для автоматического обновления IP-адресов в туннелях EoIP, а также в одноранговых узлах и политиках IPsec, когда ваш публичные IP-адреса меняются.
Наконец, я предполагаю, что ваши соединения с Интернетом имеют в лучшем случае MTU 1500 байт. Используя туннель и EoIP, вам нужно понизить MTU интерфейса туннеля EoIP в области 1400 байт (вам лучше провести некоторое тестирование, чтобы определить наилучшее значение для вашей установки / трафика).
Для моей настройки / трафика я использую 1400 байтов. К сожалению, из-за природы IPsec, в зависимости от размера ваших пакетов, накладные расходы являются переменными, поэтому вы не всегда можете извлечь из этого максимум.