Русский
Русский
English
Статистика
Реклама

Из песочницы Яндекс облако и MikroTik MultiWAN

Приветствую читатели, в этой статье хотел бы поделиться опытом настройки внутренней сети яндекс облака и маршрутизацией в интернет через RouterOS MikroTik.


Есть VPC которая администрируется внутренними сервисами и раздает внешние ip внутренним ВМ через шлюз подсети за NATом, что не очень удобно для централизованного администрирования.


Схема внутренней сети и получения внешнего ip в яндекс облаке выглядит следующим образом:



Привязать для всей подсети один внешний постоянный ip можно через NAT-instance или любую ВМ настроив forward, но пробрасывать порты в сеть придётся через изменения конфигурации в самой ВМ и так для каждой подсети. Нужна была реализация управления сетями/подсетями и доступом в одном месте (на момент написания статьи группа безопасности VPC находилась в стадии Preview).


Если коротко, то хотел реализовать такую схему:



Перейду сразу к описанию процесса настройки.


Для примера берем настройки в облаке такие:


Internal1-a  10.1.0.0/24Internal2-a  10.1.1.0/24Internal1-b  10.1.2.0/24Internal2-b  10.1.3.0/24Internal1-c  10.1.4.0/24Internal2-c  10.1.5.0/24

Это минимум который нам нужен, т. к. в облаке привязанный внешний ip роутится через шлюз
По умолчанию в облаке для любой подсети


Gateway  X.X.X.1Internal DNS  X.X.X.2

Создаем ВМ с образом RouterOS.


В облаке выбираем Cloud Marketplace -> Сетевая инфраструктура -> Cloud Hosted Router и сразу добавляем внешние ip адреса к каждому сетевому интерфейсу


RouterOSEther1  10.1.0.254Ether2  10.1.1.254

Создаем ВМ и подключаемся к ether1 через консоль или клиентом winbox. Создаем пользователя с полными правами, отключаем пользователя admin и добавляем rsa public key.


Далее настраиваем все через CLI. Все действия можно сделать и в winbox, меню соответствует команде, заходим в меню ip выбираем route и т.д.


Если посмотрим в таблицу маршрутизации, то увидим маршруты


/ip route print Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit  #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE 0 ADS  0.0.0.0/0                          10.1.0.1                  1 1 ADC  10.1.1.0/24        10.1.1.254      ether2                    0 2 ADC  10.1.0.0/24        10.1.0.254      ether1                    0

По умолчанию маршрут в интернет идет с порта ether1 через шлюз 10.1.0.1 который за NAT выкидывает во внешнюю сеть. Если сейчас опросить все внешние ip адреса, то ответит только первый.


Поскольку у нас 2 внешних адреса находятся за шлюзом внутренних сетей, к которым подключены 2 порта, то нужно прописать дополнительные маршруты указав разные значения distance и добавить маршруты к дополнительным подсетям.


Добавляем маршруты


/ip routeadd dst-address=0.0.0.0/0 gateway=10.1.1.1 distance=2 add dst-address=10.1.2.0/24 gateway=10.1.0.1 distance=1  add dst-address=10.1.3.0/24 gateway=10.1.1.1 distance=1  add dst-address=10.1.5.0/24 gateway=10.1.1.1 distance=1  add dst-address=10.1.4.0/24 gateway=10.1.0.1 distance=1 

По умолчанию зоны доступности подсетей b и c должны быть доступны через шлюз подсети зоны доступности a.


Настраиваем firewall.


Входящие соединения внутренних сетей


/ip firewall filteradd chain=input action=accept src-address=10.1.5.0/24 add chain=input action=accept src-address=10.1.1.0/24 add chain=input action=accept src-address=10.1.3.0/24 add chain=input action=accept src-address=10.1.2.0/24 add chain=input action=accept src-address=10.1.0.0/24 add chain=input action=accept src-address=10.1.4.0/24 

Разрешаем ping


/ip firewall filteradd chain=input action=accept protocol=icmp 

Разрешаем проброс вперед


/ip firewall filteradd chain=forward action=accept src-address=10.1.5.0/24 \dst-address=0.0.0.0/0 add chain=forward action=accept src-address=10.1.1.0/24 \dst-address=0.0.0.0/0 add chain=forward action=accept src-address=10.1.3.0/24 \dst-address=0.0.0.0/0 add chain=forward action=accept src-address=10.1.2.0/24 \dst-address=0.0.0.0/0 add chain=forward action=accept src-address=10.1.0.0/24 \dst-address=0.0.0.0/0 add chain=forward action=accept src-address=10.1.4.0/24 \dst-address=0.0.0.0/0 

Остальные входящие соединения сбрасываем


/ip firewall filter add chain=input action=drop log=no

Меняем очередность правил


/ip firewall filter move numbers="[old rule no]" \destination="[new rule no]"

Любуемся результатом


/ip firewall filter print

Реализация выхода в интернет в данном случае через шлюз внутренней сети и у нас нет портов с прямым внешним ip адресом, поэтому реализуем разделение через MultiWAN. Очень хорошо этот метод описан в презентации РЕАЛИЗАЦИЯ MULTIWAN (ссылка на презентацию в конце статьи)


В конфигурации ВМ отсутствуют WAN порты, которые нужно добавить в конфигурацию firewall mangle, поэтому создадим 2 записи в interface list


/interface listadd name="WAN1"add name="WAN2"

Настраиваем firewall mangle


/ip firewall mangleadd chain=input action=mark-connection \new-connection-mark=con-WAN1 passthrough=yes in-interface-list=WAN1add chain=input action=mark-connection \new-connection-mark=con-WAN2 passthrough=yes in-interface-list=WAN2add chain=output action=mark-routing \new-routing-mark=WAN1 passthrough=yes connection-mark=con-WAN1 add chain=output action=mark-routing \new-routing-mark=WAN2 passthrough=yes connection-mark=con-WAN2 

Добавляем маршруты


/ip routeadd dst-address=0.0.0.0/0 gateway=10.1.0.1 distance=1 routing-mark=WAN1 add dst-address=0.0.0.0/0 gateway=10.1.1.1 distance=1 routing-mark=WAN2 

Добавляем правила маршрутизации, все что не попадает под правило идет через порт ether1, добавлять можно как подсети, так и отдельные хосты


/ip route ruleadd src-address=10.1.3.0/24 action=lookup-only-in-table table=WAN2 add src-address=10.1.5.0/24 action=lookup-only-in-table table=WAN2

На данном этапе все 2 внешних ip отзываются, но внутренние сети не работают правильно или вообще не работают.


Настроим маршрутизацию для каждого из двух контуров в консоли яндекс облака:
Virtual Private Cloud -> Облачные сети -> в каждой Подсети выключаем NAT в интернет -> Таблицы маршрутизации -> Создать, если создано изменить -> добавляем маршрут Префикс назначения: 0.0.0.0/0, Next hop: 10.1.0.1/10.1.1.1 для каждого контура свой шлюз -> сохраняем.


Осталось последнее действие, нужно замаскировать все подсети под внутренний адрес роутера


/ip firewall natadd chain=srcnat action=masquerade src-address=10.1.0.0/24 dst-address=0.0.0.0/0 add chain=srcnat action=masquerade src-address=10.1.1.0/24 dst-address=0.0.0.0/0 add chain=srcnat action=masquerade src-address=10.1.2.0/24 dst-address=0.0.0.0/0 add chain=srcnat action=masquerade src-address=10.1.3.0/24 dst-address=0.0.0.0/0 add chain=srcnat action=masquerade src-address=10.1.4.0/24 dst-address=0.0.0.0/0 add chain=srcnat action=masquerade src-address=10.1.5.0/24 dst-address=0.0.0.0/0

Теперь каждая ВМ в своей подсети выходит в интернет строго со своим внешним ip прописанным в таблице маршрутизации.


В итоге реализовали следующую схему:



Можно запускать клиентов/партнеров/внешние сервисы к внутренним ВМ через два внешних ip адреса:


/ip firewall natadd chain=dstnat action=netmap to-addresses=10.1.5.20 \to-ports=10050 protocol=tcp src-address=7.7.7.1 in-interface-list=WAN2 port=10055 add chain=dstnat action=netmap to-addresses=10.1.0.5 \to-ports=3306 protocol=tcp src-address=7.7.7.2 in-interface-list=WAN1 port=11050

где 7.7.7.1/7.7.7.2 внешние ip клиентов.


Далее настраиваем по своему усмотрению, создаем ipsec, режим сети в фаерволе, настраиваем входящие соединения.


Минимум по настройки разделения подсетей и направление трафика через конкретный внешний адрес выполнен.


Лицензию для MikroTik RouterOS необходимо приобрести, иначе скорость портов будет 100 Мбит/с и ограничения по функционалу
https://wiki.mikrotik.com/wiki/Manual:License


Спасибо за внимание!


Используемые источники:


РЕАЛИЗАЦИЯ MULTIWAN

Источник: habr.com
К списку статей
Опубликовано: 26.09.2020 18:09:56
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Сетевые технологии

Сетевое оборудование

Yandex.cloud

Mikrotik multiwan

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru