MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров Хостинг
Содержание
  1. Маршруты с разным приоритетом
  2. Настройка двух интернет-подключений
  3. Доступ за НАТ
  4. А также source NAT?
  5. Одновременная работа 2-ух провайдеров в MikroTik, настройка режима балансировки
  6. Маркировка соединений от провайдера
  7. Выход с маршрутизатора
  8. Настройка двух провайдеров MikroTik, режим резервирования(автопереключение)
  9. Добавить статический маршрут для Google DNS
  10. Запретить ICMP запросы через провайдера-2
  11. Добавить правило Netwatch для переключения
  12. Выпускаем всех остальных и балансируем нагрузку
  13. Ручная настройка балансировки 2 провайдеров в MikroTik
  14. Mangle маркировка соединений для балансировки 2 провайдеров
  15. Mangle маркировка маршрута для балансировки двух провайдеров
  16. Общий вид раздела Mangle
  17. Общий вид таблицы маршрутизации при балансировке 2 провайдеров
  18. Контроль ICMP запросов через нужный интерфейс
  19. Настройка Netwatch для переключения провайдеров
  20. Настройка балансировки двух провайдеров Per Connection Classifier (PCC) раздела Mangle
  21. Два провайдера в разных подсетях
  22. Настройка двух провайдеров на MikroTik, балансировка и автопереключение
  23. Одновременный проброс с двух провайдеров в MikroTik настройка Mangle
  24. Два провайдера на микротике
  25. Подготовка настроек для работы с двумя провайдерами в MikroTik
  26. Освободить порт для 2-ого провайдера
  27. Настроить 2-ого провайдера
  28. DHCP client
  29. Статический IP
  30. PPPoE client
  31. Добавление 2-ого провайдера в список WAN
  32. Отключить добавление DNS серверов для провайдера-1
  33. DHCP client
  34. PPPoE client
  35. Определить общедоступные DNS сервера
  36. Отключить автоматическое добавление маршрутов
  37. DHCP client
  38. PPPoE client
  39. Добавление маршрутов для двух провайдеров
  40. Статический IP или DHCP клиент
  41. PPPoE client
  42. Mangle маркировка ответов для двух провайдеров
  43. Настройка IP адресации
  44. Проверка
  45. Провайдер меняет шлюз в DHCP клиенте, не работает переключение или балансировка
  46. Настройка двух интернет-подключений
  47. Два провайдера на микротике
  48. Читайте также
  49. Использование сценария, запускаемого в Netwatch
  50. 1. Задаем описания
  51. 2. Настраиваем узел для проверки канала
  52. 3. Настройка задания в Netwatch
  53. Выпустить с правильного адреса
  54. Балансировка и резервирование в MikroTik используя настройки NTH раздела Mangle
  55. Статическая маршрутизация для маркированных маршрутов
  56. Доступ к маршрутизатору
  57. Два провайдера в разных подсетях

Маршруты с разным приоритетом

Раскрываем в меню IP

Открываем IP в меню

Переходим к настройке Routes

Добавляем 2 маршрута. Первый через одного Интернет провайдера со следующими настройками:

Настройка маршрута для первого провайдера

* мы указываем шлюз от нашего провайдера (в данном примере 1.1.1.1), задаем настройку проверки шлюза (Check Gateway) с помощью утилиты ping, задаем приоритет (Distance 10).

Для второго провайдера мы задаем, практически, аналогичные настройки:

Настройка маршрута для второго провайдера

* обратите внимание, что в отличие от первого маршрута, в данном указана большая дистанция и другой шлюз (для второго провайдера).

После удаляем старые маршруты. Должны остаться только те, что мы добавили.

Настройка двух интернет-подключений

Для начала сбросим Mikrotik на заводские настройки, подключившись к нему через программу Winbox: выберите раздел System — Reset Configuration, в открывшемся меню ставим галочки на No default configuration и Do not backup и нажимаем Reset configuration. После сброса оборудования можно приступать к настройке.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Сначала настроим первый WAN порт – в нашем примере на нем будет динамическое подключение.

В меню IP – DHCP Client добавляем новое подключение, назначив интерфейс ether1.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Можно поступить проще, введя на микротике в New Terminal данную команду:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настроим второй порт на статику.

Откроем меню IP – Addresses и добавим новый адрес с указанием нужного порта.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Откроем меню IP – Route и добавляем новый адрес шлюза.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Также не забываем указать адрес DNS сервера ( меню IP – DNS):

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Или же введите в New Terminal следующий конфиг (соответственно, указав вашу индивидуальную адресацию):

Также стоит упомянуть PPpoE соединение. Для того, чтобы поднять его на вашем оборудовании, используйте следующие строки в New Terminal:

Где в PASSWORD и LOGIN вы прописываете ваши данные и указываете в interface нужный порт, в который будет подключен кабель.

Далее создадим бридж LAN, в который добавим оставшиеся порты и Wi-Fi подключение.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Добавление бриджа с помощью конфига:

После этого добавляем желаемую адресацию для созданного бриджа и настраиваем DHCP Server локальной сети. Можете использовать наш конфиг, заменив в нем адресацию на нужную вам:

Данные настройки применяются в следующих разделах:

IP – Addresses

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – Pool

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server – Networks

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

По умолчанию Wi-Fi интерфейс отключен, не забудьте включить, задать название Wi-Fi сети и выставить на нее пароль.

Это можно сделать с помощью следующего конфига:

/interface wireless set wlan1 mode=ap-bridge ssid=work default-forwarding=no disabled=no security-profile=profile1

Настроим NAT, чтобы устройства, подключенные к локальной сети, могли выходить в интернет.

Для этого в IP – Firewall – NAT добавим правило. Во вкладке General в графе Chain выбираем srcnat, в Out. Interface назначаем первый порт.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Во вкладке Action выбираем masquerade:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Создаем еще одно схожее правило, где отличаться будет Out. Interface – там соответственно выбираем второй порт.

Или же используем следующий конфиг:

Доступ за НАТ

172.20.18.2 — это exchange сервер, мы должны обеспечить доступность 25,80,443 портов через каждого провайдера.

НАТ делаем, как обычно, без всяких излишеств.

[admin@MikroTik.Me] /ip firewall nat
add chain=dstnat in-interface=ether1 dst-address=88.88.88.2 protocol=tcp dst-port=25,80,443 action=dst-nat to-addresses=172.20.18.2
add chain=dstnat in-interface=ether1 dst-address=99.99.99.2 protocol=tcp dst-port=25,80,443 action=dst-nat to-addresses=172.20.18.2
add chain=dstnat in-interface=ether2 dst-address=44.44.44.2 protocol=tcp dst-port=25,80,443 action=dst-nat to-addresses=172.20.18.2

А теперь давайте вспомним то, что мы делали самым первым правилом в mangle мы промаркировали все соединения, которые приходят через всех провайдеров! Данная маркировка нам опять поможет.

Нам необходимо отфильтровать весь трафик, который идёт из локальной сети и отправить в том направлении к маркировке которого соединение имеет отношение.

Попробуем логически по шагам описать то, как это будет работать.Опишем для одного провайдера, для остальных по тоже схеме.

1.Когда пакет придёт на IP адрес 88.88.88.2 мы промаркировали соединение, которому принадлежит пакет.
2.Далее в NAT мы изменили адрес назначения, и маршрутизатор отправит его до сервера.
3.Естественно сервер в ответ отправит пакет, как минимум syn,ack, так как данный пакет принадлежит уже существующему соединению, мы по имени соединению отправим данный пакет в именованную таблицу маршрутизации.

НАТ уже сделали, дело осталось за малым- найти трафик, который приходит от сервера.

[admin@MikroTik.Me] /ip firewall mangle
add chain=prerouting connection-mark=Next-Hop/88.88.88.1 in-interface=!ether1 action=mark-routing new-routing-mark=Next-Hop/88.88.88.1 passthrough=no
add chain=prerouting connection-mark=Next-Hop/99.99.99.1 in-interface=!ether1 action=mark-routing new-routing-mark=Next-Hop/99.99.99.1 passthrough=no
add chain=prerouting connection-mark=Next-Hop/44.44.44.1 in-interface=!ether2 action=mark-routing new-routing-mark=Next-Hop/44.44.44.1 passthrough=no

Наверное нет смысла описывать, всё предельно понятно, на входе мы промаркировали трафик от провайдеров, и когда пакет снова попал на вход маршрутизатора, но уже пакеты идут от серверов мы отправляем такие пакеты в именованную таблицу маршрутизации.

Наверное многие спросят, а почему указывается не интерфейс ether1, а не взять и указать явно локальный интерфейс, например ether4.

Мы с вами делаем универсальную конфигурацию, если явно указать какой-либо другой интерфейс, значит в случае если у нас будет ещё один NAT, который пойдёт в другой порт, нам необходимо будет добавлять ещё одно аналогичное правило, но уже с другим интерфейсом.А ведь мы можем даже завернуть трафик с помощью NAT вообще на внешние сервера например 1.1.1.1, и что тогда? Единственный интерфейс откуда в цепочке prerouting мы не должны ожидать данный трафик, это трафик с самого провайдера и причём именно с того, с которого он пришёл.

Всё работает, теперь вы можете подключаться в своему серверу по любому IP адресу.Создайте DNS A запись RR и укажите все три внешних IP адреса и всегда ссылайтесь на данную запись.

mail.mycompany.ru A 88.88.88.2
mail.mycompany.ru A 99.99.99.2
mail.mycompany.ru A 44.44.44.2

А также source NAT?

Промелькнула такая мысль в голове? Ведь когда пакет от сервера будет уходить через маршрутизатор, нам надо будет подменить его src адрес, на адрес на который он шёл в самом начале.Но мы ничего не сделали для этого.

Нам делать ничего не нужно, если вспомнить что в правило NAT попадает только самый первый пакет, тот на основании которого было создано соединение new, именно поэтому обычно вы видите небольшие значения в счётчиках правила NAT.

Обратное преобразования NAT произойдёт автоматически, давайте взглянем на запись в conntrack.

[admin@MikroTik.Me] /ip firewall connection print detail where dstnat
Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat
 0  SAC  d  protocol=tcp src-address=5.19.245.3:57839 dst-address=88.88.88.2:80 reply-src-address=172.20.18.2:80 reply-dst-address=5.19.245.3:57839 tcp-state=established timeout=23h56m33s orig-packets=191 orig-bytes=19 352 orig-fasttrack-packets=0 orig-fasttrack-bytes=0 repl-packets=200 repl-bytes=32 631 repl-fasttrack-packets=0 repl-fasttrack-bytes=0 orig-rate=0bps repl-rate=0bps

Давайте уберём из вывода лишнее, чтобы оно нам не мешало.

 0  SAC  protocol=tcp src-address=5.19.245.3:57839 dst-address=88.88.88.2:80 reply-src-address=172.20.18.2:80 reply-dst-address=5.19.245.3:57839

И так когда пакет попал на маршрутизатор и соединение было “только-только” создано, соединение имело такой вид

 0  SAC src-address=5.19.245.3:57839 dst-address=88.88.88.2:80

После того как произошла процедура dst NAT, маршрутизатор добавил флаги и самое главное на какой адрес изменяется IP адрес во всех пакетах в данном соединении.

 0  SAC d src-address=5.19.245.3:57839 dst-address=88.88.88.2:80 reply-src-address=172.20.18.2:80

Когда пакет уходил с маршрутизатора в цепочки postrouting работает процедура src NAT, но у нас нет правил src NAT, оставили значение исходное.

 0  SAC d src-address=5.19.245.3:57839 dst-address=88.88.88.2:80 reply-src-address=172.20.18.2:80 reply-dst-address=5.19.245.3:57839

Обратите внимание, что все данные этапы были сделаны на момент прохождения только первого пакета.

Теперь, если пакет приходит на маршрутизатор и у него в заголовках src-address=5.19.245.3:57839 dst-address=88.88.88.2:80 dst-address изменится на 172.20.18.2:80.

Если пакет приходит на маршрутизатор с адресами в заголовках src-address=172.20.18.2:80 dst-address=5.19.245.3:57839 src адрес изменится на 88.88.88.2:80.

Тем самым src NAT на данном этапе работает автоматически на основании правил dst-NAT.

Одновременная работа 2-ух провайдеров в MikroTik, настройка режима балансировки

Существует два метода распределения нагрузки между 2-мя провайдерами в MikroTik:

Ручная балансировка. Все узлы делятся в ручном режиме на 2-ве условные группы и каждая из групп направляется к выделенному ей провайдеру;

Автоматическая балансировка. Узлы роутера MikroTik будут поделены на группы с помощью внутренних инструментов RouterOS.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

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

Когда работают оба провайдеры, нагрузка распределяется согласно ручному распределению в Address list.

Маркировка соединений от провайдера

Вы наверное помните, а если и нет, то стоит напомнить, что любой пакет, который приходит на маршрутизатор и попадает в цепочку prerouting и не важно куда он дальше попадёт forward или Input.

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

Сначала настроим, а далее разберём что сделали.

[admin@MikroTik.Me] /ip firewall mangle
add chain=prerouting in-interface=ether1 dst-address=88.88.88.0/29 connection-state=new action=mark-connection new-connection-mark=Next-Hop/88.88.88.1 passthrough=no
add chain=prerouting in-interface=ether1 dst-address=99.99.99.0/24 connection-state=new action=mark-connection new-connection-mark=Next-Hop/99.99.99.1 passthrough=no
add chain=prerouting in-interface=ether2 dst-address=44.44.44.0/24 connection-state=new action=mark-connection new-connection-mark=Next-Hop/44.44.44.1 passthrough=no

Разберём только первое правило, все остальные по аналогии.

Если пакет приходит с интерфейса ether1 и адрес назначения лежит в сети 88.88.88.0/29, и такой пакет создал соединение, то маркируем соединение маркой Next-Hop/88.88.88.1.

88.88.88.0/29 — почему сеть, а не IP? Если вы будете делать правила для каждого IP адреса, количество правил будет расти, а смысл будет тот же самый.

connection-state=new — нет смысла пытаться маркировать соединения, которые уже установлены.Как вы помните new — это пакет, который создал соединение, т.е он только один, а в случае со всеми пакетами routeros будет каждый раз пытаться маркировать соединение.Которое уже и так может иметь маркировку.

Next-Hop/99.99.99.1 — почему именно так? Как вы помните, наша главная задача отправить трафик через тот же самый шлюз, через который трафик пришёл, а мы таким названием себе явно напоминаем, какой шлюз будет использоваться для выхода в сторону провайдера.Мы бы могли использовать что-нибудь вроде ISP1, но так как у нас первый провайдер даёт два префикса в одном и том же интерфейсе, мы должны трафик, который приходит на разные префиксы каким нибудь образом разделить.

Читайте также:  Оптимизируйте управление сетью с помощью решений Capsman Datapath

И так это наша заготовка, далее мы начнём работать непосредственно с логикой.

С этого момента весть трафик, который придёт со стороны провайдера, будет промаркирован, а далее бы будем оперировать данной маркировкой.

Выход с маршрутизатора

Хоть и по сути мы сделали уже много, но у нас ещё несколько кейсов впереди.Теперь мы должны сделать таким образом, чтобы пакеты, которые генерирует сам маршрутизатор (не в ответ), уходили через нужного провайдера и шлюза.

Когда вы “пингуете” с маршрутизатора, строите PPP* или IP туннели с самого маршрутизатора или dns запросы отправляете с самого маршрутизатора.Разница с прошлым кейсом в том, что мы отправляли пакет по уже установленному соединению, а здесь пакет улетает с маршрутизатора и соединение не имеет маркировки.

Здесь будет значительно проще.

[admin@MikroTik.Me] /ip firewall mangle
add chain=output src-address=88.88.88.0/29 action=mark-routing new-routing-mark=Next-Hop/88.88.88.1 passthrough=no
add chain=output src-address=99.99.99.0/24 action=mark-routing new-routing-mark=Next-Hop/99.99.99.1 passthrough=no
add chain=output src-address=44.44.44.0/24 action=mark-routing new-routing-mark=Next-Hop/44.44.44.1 passthrough=no

Весь трафик, уходящий с маршрутизатора, и имеющий IP адрес попадающий под префикс, будет отправлен в именованную таблицу маршрутизации.

Всё, теперь вы можете строить туннели и у вас всё будет работать, но только в том случае если явно указан IP адрес, например в Ipsec или gre, ip туннели и прочее, там где явно можно указать Source адрес.А что делать с сервисами, где нельзя указать явно IP адрес источника? Ответ на этот вопрос кроется в таблице маршрутизации.Параметр pref-src отвечает за то, какой IP адрес будет выбран если он явно не задан.

Если вам необходимо установить соединение из локальной сети с адресом который назначен на интерфейсе провайдера, допустим при использовании Hairpin-NAT, в правилах вы должны исключить BOGON сети из адресов назначения.

В нашем примере если только для одного IP адреса.

[admin@MikroTik.Me] /ip firewall mangle
add chain=output src-address=88.88.88.0/29 dst-address-list=!BOGON action=mark-routing new-routing-mark=Next-Hop/88.88.88.1 passthrough=no

Ещё раз для понимания, у нас есть два варианта развитая сюжета, если IP адрес источника явно указан и тогда нам нечего не грозит и всё замечательно работает.Второй вариант, когда IP адрес явно не задан, например вы подминаете l2tp-client у нас нет возможности указать source адрес, но ведь адрес назначения есть в любом случае.Тогда маршрутизатор поступает следующим образом, он находит маршрут в таблице маршрутизации main, смотрит какой указан pref-src и использует данный ip адрес, как адрес источника.

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

[admin@MikroTik.Me] /ip route add dst-address=0.0.0.0/0 gateway=Br-Loopback distance=254

Давайте его немного изменим так, чтобы мы определили IP адрес, с которого будет формироваться трафик.

[admin@MikroTik.Me] /ip route
set pref-src=88.88.88.2 [ find gateway=Br-Loopback dst-address=0.0.0.0/0 ]

Выбор IP адреса зависит только от вас, выбирайте тот адрес, который считаете менее загруженным.

На этом этапе всё, теперь вы можете строить различные туннели и устанавливать соединения не только указывая явно source адрес.

Настройка двух провайдеров MikroTik, режим резервирования(автопереключение)

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

Резервирование(автопереключение) это самый распространённый метод работы двух и более интернет провайдеров на роутере MikroTik.

Описание переключение на резервную линию условно такое: роутер MikroTik будет отправлять ICMP(ping) запросы на 8.8.8.8(Google DNS) и в случае отсутствия ответа или большой задержки, интернет будет переключаться с основной(провайдер-1) линии на резервную(провайдер-2).

Добавить статический маршрут для Google DNS

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Запретить ICMP запросы через провайдера-2

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Этим правилом будет гарантирована диагностика статуса интернет канала только через провайдера-1. При попытке отправить аналогичный запрос через провайдера-2, Firewall роутера MikroTik будет это блокировать.

Добавить правило Netwatch для переключения

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

  • Host – узел, на который будут отправляться ICMP(ping) запросы;
  • Interval – время, в течении которого будет производиться диагностика для смены статуса;
  • Timeout – задержка пакета, которая будет восприниматься как отсутствие связи;
  • Status – текущий статус узла;
  • Закладка Up – скрипт, который будет выполнен, если провайдер-1 восстановит связь, после её обрыва;
  • Закладка Down – скрипт, который будет выполнен, если связь с провайдером-1 будет прервана.

Представленными скриптами с помощью утилиты Netwatch будет происходить переключение между провайдерами. Все соединения, которые были установлены через провайлера-1 будут удалены. Это позволит гарантированно переключиться на провайдера-2.

Выпускаем всех остальных и балансируем нагрузку

Осталось дело за малым, выпустить всех остальных в интернет и постараться распределить нагрузку.Оговорю сразу мы не можем распределить нагрузку по пакетно, нам мешает то, что провайдеры не пропустят трафик с другими IP адресами через свою сеть.Поэтому будем балансировать соединениями.Да, мы не получим суммарную пропускную способность на одно соединение всех провайдеров, но это лучшее, что мы можем сделать в данном случае.

Мы будем использовать ECMP для того, чтобы распределить нагрузку по провайдерам.

Наверное вы уже догадались, что весь оставшийся трафик от ваших локальных хостов будет попадать в таблицу main.

Давайте сделаем маршрут ECMP с тем учётом, что шлюз 88.88.88.1 это 10Mbps, а 44.44.44.1 5Mbps.

[admin@MikroTik.Me] /ip route
add dst-address=0.0.0.0/0 gateway=88.88.88.1,88.88.88.1,44.44.44.1 pref-src=88.88.88.2

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

Хотя это немного и не правильно, дело в том, что у процесса ECMP есть отдельная таблица кеша, и чтобы каждый раз не выбирать маршрут, маршрутизатор для связки src-address:port dst-address:port создаёт хеш и выберет для данного хеша уже шлюз по схеме Round Robin, тем самым для одного соединения будет выбираться один и тот же шлюз.

Но не все так однозначно, каждый раз, когда вы изменили маршрут, например добавили шлюз или шлюз умер то кеш ECMP чистится, а также каждые 10 минут всё также чистится кеш, отсюда появляется проблема, что каждые 10 минут может выбраться другой шлюз.И снова для каждого уникального хеша будет выбираться маршрут.

Проблема в том, что ограничение в 10 минут, это ограничение жёсткое и нам его не убрать и не изменить.

Будем решать штатными средствами RouterOS.

Давайте подумаем вместе, что нам известно о пакете, который попал под ECMP маршрут? Конечно, данный пакет находится в таблице main.

Идея данного способа заключается в следующем.Дать маршрутизатору выбрать маршрут с помощью ECMP, промаркировать такие соединения и все последующие пакеты в этом соединение пускать мимо ECMP, тем самым мы убираем проблему 10 минут.

[admin@MikroTik.Me] /ip firewall mangle
add chain=postrouting routing-table=main out-interface=ether1 connection-state=new  action=mark-connection new-connection-mark=ECMP/ether1 passthrough=no
add chain=postrouting routing-table=main out-interface=ether2 connection-state=new  action=mark-connection new-connection-mark=ECMP/ether2 passthrough=no

chain=postrouting — Работаем в цепочке по факту того, что уже выбрал ECMP, можно использовать и цепочку forward, но тогда не попадёт трафик который был сгенерирован самим маршрутизатором.

routing-table=main — Маршрут ECMP находиться в main таблице.

out-interface=ether1 — ECMP выбрал шлюз, который лежит через первый интерфейс.

connection-state=new — Мы маркируем соединение, нет смысла работать со всеми пакетами.

action=mark-connection new-connection-mark=ECMP/ether1 — маркируем соединение.

Ещё раз, мы дали возможность ECMP выбрать направление и мы уже по факту промаркировали соединения, основываясь на выборе интерфейса.

А теперь все последующие пакеты в соединениях с такой маркировкой должны быть отправлены в тот же интерфейс, но не в таблицу main, так как там работает ECMP, нам это уже не к чему.

Не забудьте, что трафик смотрится со всех сторон, а нам необходимо только трафик из локальной сети, а так как интерфейсов может быть много, лучше всего отфильтровывать по принципу весь трафик КРОМЕ того который пришёл с интерфейса провайдера.

[admin@MikroTik.Me] /ip firewall mangle
add chain=prerouting connection-mark=ECMP/ether1 action=mark-routing new-routing-mark=Next-Hop/88.88.88.1 passthrough=no in-interface=!ether1
add chain=prerouting connection-mark=ECMP/ether2 action=mark-routing new-routing-mark=Next-Hop/44.44.44.1 passthrough=no in-interface=!ether2

Осталось настроить NAT

[admin@MikroTik.Me] /ip firewall nat
add chain=srcnat out-interface=ether1 routing-table=main action=src-nat to-addresses=88.88.88.2
add chain=srcnat out-interface=ether2 routing-table=main action=src-nat to-addresses=44.44.44.2

За сим всё, спасибо за внимание.

Удалённая настройка маршрутизатора, к дальней дороге.

Ручная настройка балансировки 2 провайдеров в MikroTik

Как видно из названия, условную подсеть роутера MikroTik будет поделено на две группы: To-ISP-1 и To-ISP-2.

  • pppoe-out1 – это провайдер-1;
  • ether2 – это провайдер-2.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

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

Mangle маркировка соединений для балансировки 2 провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Mangle маркировка маршрута для балансировки двух провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Аналогичные действия по маркировке соединений и маршрута нужно выполнить для Address List = To-ISP-2.

Общий вид раздела Mangle

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Для каждой группы узлов To-ISP-1 и To-ISP-2 будет создано по два маршрута, чтобы обеспечить плавное переключение согласно первоначальным условиям по балансировке 2 провайдеров.

Общий вид таблицы маршрутизации при балансировке 2 провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Контроль ICMP запросов через нужный интерфейс

Эти правила обеспечат контроль статуса интернет соединения для каждого из провайдера. Диагностика статуса интернета будет осуществляться только через те интерфейсы, которые обозначены в таблице маршрутизации с комментариями Netwatch-1 и Netwatch-2.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Настройка Netwatch для переключения провайдеров

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

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Настройка балансировки двух провайдеров Per Connection Classifier (PCC) раздела Mangle

Per Connection Classifier (PCC) позволят разделить трафик на равные потоки с возможностью держать пакеты с определенным набором параметров в одном потоке (определяется в наборе параметров из src-address, src-port, dst-address, dst-port)

Два провайдера в разных подсетях

Нередки случаи, когда возникает необходимость настроить два независимых друг от друга интернет-подключения, при которых не будет смешиваться трафик. Подробнее о том, как это сделать, далее.

Для начала сбросим Mikrotik на заводские настройки, подключившись к нему через программу Winbox: System — Reset Configuration, в открывшемся меню ставим галочки на No default configuration и Do not backup и нажимаем Reset configuration.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настраиваем наши интернет-подключения: в первом порту будет динамика, во втором – статика.

Настраиваем первый порт: в меню IP – DHCP Client добавляем новое подключение, назначив интерфейс ether1, а в строке Add Default Route выбираем no.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Можно поступить проще, введя на микротике в New Terminal данную команду:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настроим второй порт на статику: в меню IP – Addresses добавляем новый адрес с указанием нужного порта.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Также не забываем указать адрес DNS сервера (IP – DNS):

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Или же введите в New Terminal следующий конфиг (указав вашу адресацию):

Теперь создадим два бриджа – подключенные к BRIDGE1 устройства будут использовать интернет-канал первого провайдера (динамика), а подключенные к BRIDGE2 – второго провайдера соответственно.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Конфиг для New Terminal:

Добавим в эти бриджи желаемые порты (мы в примере хотим, чтобы пользователи, подключающиеся через Wi-Fi, «ходили» в интернет через первого провайдера, остальные порты микротика будут относиться ко 2 провайдеру):

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Конфиг для New Terminal:

Не забываем включить Wi-Fi интерфейс, по умолчанию он выключен.

/interface wireless set wlan1 mode=ap-bridge ssid=work default-forwarding=no disabled=no security-profile=profile1

Следующий шаг — добавление желаемой адресации для созданных бриджей и настройка DHCP Server локальной сети. Используйте наш конфиг, заменив в нем при необходимости адресации на нужные вам:

Читайте также:  Раскрыт эксплойт Roundcube: узнайте, как защитить свой сайт от кибератак

Данные настройки применяются в следующих разделах:

IP – Pool

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – Addresses

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server – Networks

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настраиваем NAT, чтобы устройства, подключенные к локальной сети, могли выходить в интернет. В IP – Firewall – NAT добавим правило. Во вкладке General в графе Chain выбираем srcnat, в Out. Interface назначаем первый порт.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Во вкладке Action выбираем masquerade:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Создаем еще одно схожее правило, где отличаться будет Out. Interface – там соответственно выбираем второй порт.

Или же используем следующий конфиг:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Настройка с конфигом (не забываем выставить адресацию в соответствии с созданным ранее пулом):

Следующий шаг – маркировка трафика. IP – Firewall – Mangle, добавляем маркировку трафика для первого провайдера: во вкладке General в графе Chain указываем prerouting:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Вкладка Advanced, в графе Src. Address List выбираем ранее созданный LIST1:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Вкладка Action, в графе Action выбираем mark routing, а в графе New Routing Mark прописываем маршрут первого провайдера — isp1.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Создаем еще одно правило для маркировки трафика уже соответственно для второго провайдера, где выбираем адресацию LIST2 и в маршруте прописываем isp2.

Конфиг для быстроты:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Добавим в IP – Routes этот маршрут. Указываем в поле Gateway адрес, который узнали ранее, в графе Distance выставляем приоритет 1, в графе Routing Mark выбираем isp1.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Также добавим еще два маршрута с этими же шлюзами, у первого провайдера выставим приоритет 10, у второго – 20. Эти правила нужны на случай, если какой-либо трафик будет без маркеров, например, трафик самого микротика:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Работа двух независимых друг от друга интернет-подключений настроена.

Настройка двух провайдеров на MikroTik, балансировка и автопереключение

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Инструкция по настройке 2-ух провайдеров на роутере MikroTik. В описании буду рассмотрены два распространённых типа работы двух провайдеров: резервирование и балансировка.

Резервирование(автопереключение) – при обрыве провайдера-1, весь интернет трафик переключается на провайдера-2;

Балансировка – тип настройки, когда две линии интернета работают одновременно. Распределение между провайдером-1 и провайдером-2 может быть в ручном или автоматическом режиме.

Одновременный проброс с двух провайдеров в MikroTik настройка Mangle

Входящая задача: сделать проброс портов таким образом, чтобы сервер отвечал с того провайдера, с которого пришёл запрос. На практике это может быть Web сервер(443\https), у которого объявлены две DNS записи с двумя внешними IP роутера MikroTik.

  • pppoe-out1 – это провайдер-1;
  • ether2 – это провайдер-2;
  • bridge – локальный bridge интерфейс.

Два провайдера на микротике

Многие организации подключают два интернет-канала – от двух разных провайдеров. Зачастую это используется для того, чтобы в случае проблем с одним из провайдеров связь не прерывалась. В этой инструкции подробно поговорим о том, как правильно настроить два интернет-подключения на одном Mikrotik.

Краткий план данной статьи:

Подготовка настроек для работы с двумя провайдерами в MikroTik

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

В исходной настройке роутера MikroTik произведена базовая настройка и как минимум один интернет провайдер уже работает.

Начать нужно с того, что требуется физическое подключение 2-ого провайдера. Для этого нужно подготовить свободный порт и исключить его из Bridge(LAN).

Освободить порт для 2-ого провайдера

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

На данном примере, был удалён ether2 со списка портов, принадлежащих к Bridge-LAN.

Настроить 2-ого провайдера

DHCP client

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Add Default Route = no – статическая маршрутизация для 2-ого провайдера будет доставлена вручную.

Статический IP

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

PPPoE client

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Add Default Route = no – статическая маршрутизация для 2-ого провайдера будет доставлена вручную.

Добавление 2-ого провайдера в список WAN

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Отключить добавление DNS серверов для провайдера-1

Эти действия приведут к тому, что роутер MikroTik не будет использовать DNS сервера текущих интернет провайдеров. К примеру ситуация переключения на резервную линию может спровоцировать отсутствие DNS ответа, т.к. клиент или сам роутер осуществляет DNS запрос через основного провайдера. А он в то время уже перестал работать. Поэтому будут установлены общедоступные DNS сервера, который будут работать с двух провайдеров.

DHCP client

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

PPPoE client

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Определить общедоступные DNS сервера

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Отсутствие записей DNS серверов в разделе Dynamic Servers указывает на то, что роутер MikroTik не использует автоматические DNS сервера, которые назначаются в автоматическом режиме.

Отключить автоматическое добавление маршрутов

Т.к. все маршруты будут добавлены в ручном режиме, следует отключить все динамические маршруты для основного провайдера. Такие маршруты помечены буквой D(Dynamic) в таблице маршрутизации:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

DHCP client

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

PPPoE client

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Добавление маршрутов для двух провайдеров

Для переключение между провайдерами, будет использоваться скрипт, который будет находить маршрут с комментарием ISP-1 или ISP-2 и выключать или включать его в зависимости от статуса работы интернета. Ниже будет описан метод, как это можно сделать для типов подключения: статический IP, dhcp клиент, PPPoE подключение. Этим методом нужно воспользоваться для назначения комментария двух провайдеров.

Кроме обозначенных комментариев нужно определить distance = 2.

Статический IP или DHCP клиент

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

В случае с DHCP client значение Gateway можно взять с раздела Status самого DCHP клиента

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

PPPoE client

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Mangle маркировка ответов для двух провайдеров

Правила маркировки маршрутов нужно определять только для белых(постоянных) IP адресов! Этот набор правил будет гарантировать то, что если пришёл input запрос на порт второго(или первого) провайдера, через этот же порт будет отправлен ответ. При отсутствии этих правил, доступ к роутеру по внешним IP может сопровождаться непредсказуемой работой.

Маркировка будет состоять из двух каскадных правил: маркировки соединения и маркировки маршрута

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Настройка IP адресации

Настроим IP адреса, согласно выданным настройкам от провайдера.

[admin@MikroTik.Me] /ip address
add interface=ether1 address=88.88.88.2/29 comment=ISP1
add interface=ether1 address=99.99.99.2/24 comment=ISP1
add interface=ether2 address=44.44.44.2/24 comment=ISP2
add interface=ether3 address=172.20.17.1/24 comment=LocalNetworkComputers
add interface=ether4 address=172.20.18.1/24 comment=LocalNetworkServers

Я думаю бессмысленно как-то дополнять данные настройки.

Проверка

Для проверки отказоустойчивости лучше всего отключить кабель основного провайдера (вытащить провод из WAN-разъема) — через небольшой промежуток времени Mikrotik должен начать раздавать Интернет второго провайдера. Проверить, что внешний канал изменился можно с помощью различных сайтов, например, 2ip.ru.

Провайдер меняет шлюз в DHCP клиенте, не работает переключение или балансировка

DHCP клиент это один из самых распространённых типов настроек WAN интерфейса. Все настройки проходят в автоматическом режиме и не требуют ни каких дополнительных усилий. Однако в варианте с балансировкой двух провайдеров, используемая настройка требует явного определения шлюза(Gateway) в таблице маршрутизации. А если IP адрес серый(динамический), то правила с балансировкой перестанут работать при его изменении.

Для того, чтобы в правиле статической маршрутизации указывался текущий шлюз(Gateway) провайдера, в свойствах DHCP клиента следует укатать скрипт

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Скрипт может быть дополнен добавлениями(и удалениями) маршрутов для Routing-mark и Netwatch.

Настройка двух интернет-подключений

Для начала сбросим Mikrotik на заводские настройки, подключившись к нему через программу Winbox: выберите раздел System — Reset Configuration, в открывшемся меню ставим галочки на No default configuration и Do not backup и нажимаем Reset configuration. После сброса оборудования можно приступать к настройке.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Сначала настроим первый WAN порт – в нашем примере на нем будет динамическое подключение.

В меню IP – DHCP Client добавляем новое подключение, назначив интерфейс ether1.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Можно поступить проще, введя на микротике в New Terminal данную команду:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настроим второй порт на статику.

Откроем меню IP – Addresses и добавим новый адрес с указанием нужного порта.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Откроем меню IP – Route и добавляем новый адрес шлюза.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Также не забываем указать адрес DNS сервера ( меню IP – DNS):

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Или же введите в New Terminal следующий конфиг (соответственно, указав вашу индивидуальную адресацию):

Также стоит упомянуть PPpoE соединение. Для того, чтобы поднять его на вашем оборудовании, используйте следующие строки в New Terminal:

Где в PASSWORD и LOGIN вы прописываете ваши данные и указываете в interface нужный порт, в который будет подключен кабель.

Далее создадим бридж LAN, в который добавим оставшиеся порты и Wi-Fi подключение.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Добавление бриджа с помощью конфига:

После этого добавляем желаемую адресацию для созданного бриджа и настраиваем DHCP Server локальной сети. Можете использовать наш конфиг, заменив в нем адресацию на нужную вам:

Данные настройки применяются в следующих разделах:

IP – Addresses

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – Pool

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server – Networks

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

По умолчанию Wi-Fi интерфейс отключен, не забудьте включить, задать название Wi-Fi сети и выставить на нее пароль.

Это можно сделать с помощью следующего конфига:

/interface wireless set wlan1 mode=ap-bridge ssid=work default-forwarding=no disabled=no security-profile=profile1

Настроим NAT, чтобы устройства, подключенные к локальной сети, могли выходить в интернет.

Для этого в IP – Firewall – NAT добавим правило. Во вкладке General в графе Chain выбираем srcnat, в Out. Interface назначаем первый порт.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Во вкладке Action выбираем masquerade:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Создаем еще одно схожее правило, где отличаться будет Out. Interface – там соответственно выбираем второй порт.

Или же используем следующий конфиг:

Два провайдера на микротике

Многие организации подключают два интернет-канала – от двух разных провайдеров. Зачастую это используется для того, чтобы в случае проблем с одним из провайдеров связь не прерывалась. В этой инструкции подробно поговорим о том, как правильно настроить два интернет-подключения на одном Mikrotik.

Краткий план данной статьи:

Читайте также

Данная информация также может быть полезной:

Базовая настройка MikroTik

Перенаправление запросов (проброс портов) на Mikrotik

Настройка OpenVPN сервера на Mikrotik

Дмитрий Моск — частный мастер

Была ли полезна вам эта инструкция?

Использование сценария, запускаемого в Netwatch

Данный метод поможет настроить резервирование канала, если один из провайдеров выдает динамические адреса в разных подсетях, например, подключение через 4G-модем.

1. Задаем описания

Сначала необходимо задать описание для маршрутов. Это понадобиться для сценария, который будет работать с последними через данные описания.

Раскрываем в меню IP

Открываем IP в меню

Переходим к настройке Routes

Задаем комментарий для маршрута первого провайдера

* провайдер 1.

Задаем комментарий для маршрута второго провайдера

* провайдер 2.

2. Настраиваем узел для проверки канала

Мы настроим узел, который будет пинговать провайдер 1. Если пинг пропадает, то необходимо переключать активный Интернет-канал на провайдера 2. Также мы должны заблокировать возможность пинговать проверочный узел с провайдера 2.

И так, переходим к настройке маршрутов:

Открываем IP в меню

Переходим к настройке Routes

Добавляем новый маршрут к проверочному узлу, например 77.88.8.2 (DNS Яндекса):

Создаем маршрут для пинга проверочного узла

* в данной настройке мы задали маршрут к проверочному узлу через шлюз 1.1.1.1 (в нашем примере это шлюз от провайдера 1).

Переходим в IPFirewall:

Переходим к настройке брандмауэра

Создаем новое правило для запрета пинга проверочного узла через провайдера номер 2:

Создаем правило для запрета пинга проверочного узла

Блокирующее действие в настройке правила Mikrotik

3. Настройка задания в Netwatch

Переходим в Tools — Netwatch:

Переходим к настройке Netwatch

Создаем новое правило. На вкладке Host прописываем следующее:

Настройка Host в Netwatch

* в данном примере мы будем проверять узел 77.88.8.2 раз в минуту.

На вкладке Up пропишем:

Настройка Up в Netwatch

Настройка Down в Netwatch

Выпустить с правильного адреса

Часто бывают ситуации, что вам необходимо жёстко определить, чтобы какой-то внутренний хост выходил только с определённого IP адреса.

Например, VoIP телефония, ваш провайдер телефонии требует, чтобы вы регистрировались только с определённого IP адреса, или банк клиент на компьютере главного бухгалтера должен подключаться с определённого адреса.

Сначала настроим адрес листы в которые будем добавлять внутренние адреса хостов, которые необходимо отправить через нужного провайдера и с определённого IP адреса.

[admin@MikroTik.Me] /ip firewall address-list
add list=via/88.88.88.2 address=0.0.0.1
add list=via/99.99.99.2 address=0.0.0.1
add list=via/44.44.44.2 address=0.0.0.1

Адрес 0.0.0.1, для того чтобы создать лист, но не привязывать к реальному адресу.

Читайте также:  Облачный (CLOUD) хостинг - виртуальный сервер в облаке

Название листа явно говорит о том, на какой IP адрес необходимо изменить адрес источника.

Для реализации данного кейса нам необходимо учитывать особенность работы RouterOS.

Дело в том, что для трафика который проходит через маршрутизатор мы можем изменить таблицу маршрутизации только в цепочке prerouting, и естественно исходящий интерфейс нам ещё не известен, он будет известен только в цепочке forward.

И мы не можем просто взять и завернуть весь трафик от внутреннего хоста в определённого провайдера, так как у нас есть ещё и локальная сеть.

Допустим, если мы добавим хост 172.20.17.100 и скажем, что весь трафик направить в первого провайдера, то что будет с трафиком, который идёт на хост 172.20.18.2? Естественно он будет направлен в первый провайдер.

Для решения данной задачи нам помогут BOGON сети, это список сетей, которые никогда не должны использоваться для публикации между public AS в протоколе BGP, другими словами это все те сети, которые используются исключительно в локальных целях.

Создадим адрес лист с BOGON сетями.

[admin@MikroTik.Me] /ip firewall address-list
add list=BOGONS address=0.0.0.0/8
add list=BOGONS address=10.0.0.0/8
add list=BOGONS address=100.64.0.0/10
add list=BOGONS address=127.0.0.0/8
add list=BOGONS address=169.254.0.0/16
add list=BOGONS address=172.16.0.0/12
add list=BOGONS address=192.0.0.0/24
add list=BOGONS address=192.0.2.0/24
add list=BOGONS address=192.168.0.0/16
add list=BOGONS address=198.18.0.0/15
add list=BOGONS address=198.51.100.0/24
add list=BOGONS address=203.0.113.0/24
add list=BOGONS address=224.0.0.0/3

А далее создадим правила для того, чтобы выпустить хосты с определённого IP адреса.

[admin@MikroTik.Me] /ip firewall mangle
add chain=prerouting src-address-list=via/88.88.88.2 dst-address-list=!BOGONS action=mark-routing new-routing-mark=Next-Hop/88.88.88.1 passthrough=no
add chain=prerouting src-address-list=via/99.99.99.2 dst-address-list=!BOGONS action=mark-routing new-routing-mark=Next-Hop/99.99.99.1 passthrough=no
add chain=prerouting src-address-list=via/44.44.44.2 dst-address-list=!BOGONS action=mark-routing new-routing-mark=Next-Hop/44.44.44.1 passthrough=no

Если пакет в адресе источника находится адрес, который перечислен в адрес листе и при этом адрес назначения не попадает под BOGON листы (т.е трафик в интернет), отправить в именованную таблицу.

И последний нюанс-это настроить NAT.

[admin@MikroTik.Me] /ip firewall nat
add chain=srcnat routing-mark=Next-Hop/88.88.88.1 src-address-list=via/88.88.88.2 action=src-nat to-addresses=88.88.88.2
add chain=srcnat routing-mark=Next-Hop/99.99.99.1 src-address-list=via/99.99.99.2 action=src-nat to-addresses=99.99.99.2
add chain=srcnat routing-mark=Next-Hop/44.44.44.1 src-address-list=via/44.44.44.2 action=src-nat to-addresses=44.44.44.2

Обратите внимание, что не весь трафик, а только тот, который находится в определённом маркированном маршруте, это необходимо для того, чтобы трафик между локальными сетями не попадал под NAT правило.

Балансировка и резервирование в MikroTik используя настройки NTH раздела Mangle

Можно также применить схему, в которой каждое соединение будет промаркировано по принципу:

четный-пакет = провайдер-1

нечетный-пакет = провайдер-2

Балансировка между двумя провайдерами будет производиться в соотношении 50:50, это определяется параметрами nth=2,1 и nth=2,2.

Статическая маршрутизация для маркированных маршрутов

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

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

И все текущие правила статической маршрутизации будут иметь вид:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Доступ к маршрутизатору

Первая задача, которую нам необходимо решить, это организовать возможность управления маршрутизатором через разных провайдеров.Мы должны иметь возможность подключаться по любому IP адресу по ssh, winbox, а также если вы будете использовать RouterOS в случае VPN сервера.В общем организовать правильный выход пакетов, которые будет отправлены с маршрутизатора в ответ на входящие соединения.

Для начала нам надо организовать правильные таблицы маршрутизации.В одной таблице маршрутизации не могут быть одновременно два одинаковых активных маршрута, если маршруты одинаковы, то приоритет выбирается из значения distance.Для того чтобы можно было использовать несколько одинаковых маршрутов в RouterOS есть возможность создавать альтернативные (именованные) таблицы маршрутизации.

Создадим данные таблицы.

[admin@MikroTik.Me] /ip route
add dst-address=0.0.0.0/0 gateway=88.88.88.1 routing-mark=Next-Hop/88.88.88.1
add dst-address=0.0.0.0/0 gateway=99.99.99.1 routing-mark=Next-Hop/99.99.99.1
add dst-address=0.0.0.0/0 gateway=44.44.44.1 routing-mark=Next-Hop/44.44.44.1

dst-address=0.0.0.0/0 — обычный маршрут по умолчанию, не более чем.

gateway=88.88.88.1 — шлюз, обратите внимание на то, что нам первый провайдер даёт два префикса с разными шлюзами, и поэтому мы создаём три маршрута, для нас по факту не два провайдера, а три.

routing-mark=Next-Hop/88.88.88.1 — это и есть именованная таблица маршрутизации.Она может иметь любое имя, какое вам удобнее, лично моё мнение, такое именование удобно записывать в названии таблицы шлюз, через который будет отправлен пакет в случае если он будет использовать данный маршрут.Имена маркировок соединений и маршрутов просто совпали и могут быть совершенно разные.

Вы обратили внимание, что я писал про таблицы и маркировки? Дело в том, что маркировка маршрута это не таблица, хотя в большинстве случаев это так.Попробуйте ответить на вопрос, для чего и какая разница в правилах между двумя фильтрами в firewall.

[admin@MikroTik.Me] /ip firewall mangle add routing- tab tab
routing-mark  routing-table

Дело в том, что routing-mark это маркировка, когда вы своими руками с помощью mangle назначили на пакет маркировку, а routing-table это то, через какую таблицу маршрутизации вышел пакет.

Если маршрутизатор не найдёт подходящего маршрута в именованной таблице маршрутизации, маршрутизатор продолжит поиск подходящего маршрута в таблице по умолчанию main и такой пакет можно будет отфильтровать например так routing-mark=custommark routing-table=main.Нам же такое поведение не нужно, если по какой-то причине маршрут не будет найден, пакет должен умереть на маршрутизаторе, а отправлять через другого провайдера нет никакого смысла.

Нам необходимо переопределить данное поведение.

[admin@MikroTik.Me] /ip route rule
add routing-mark=Next-Hop/88.88.88.1 action=lookup-only-in-table table=Next-Hop/88.88.88.1
add routing-mark=Next-Hop/99.99.99.1 action=lookup-only-in-table table=Next-Hop/99.99.99.1
add routing-mark=Next-Hop/44.44.44.1 action=lookup-only-in-table table=Next-Hop/44.44.44.1

Т.е марка и таблица по факту это одно и тоже, пакет, который имеет определённую routing-mark и пытается найти маршрут в таблице с таким же именем.

Осталась самая малость, это отправить в нужную марку необходимый трафик.

[admin@MikroTik.Me] /ip firewall mangle
add chain=output connection-mark=Next-Hop/88.88.88.1 action=mark-routing new-routing-mark=Next-Hop/88.88.88.1 passthrough=no
add chain=output connection-mark=Next-Hop/99.99.99.1 action=mark-routing new-routing-mark=Next-Hop/99.99.99.1 passthrough=no
add chain=output connection-mark=Next-Hop/44.44.44.1 action=mark-routing new-routing-mark=Next-Hop/44.44.44.1 passthrough=no

Цепочка output, так как мы работаем только с трафиком, который генерирует в ответ на запрос соединения.Выбрали пакеты принадлежащие только определённым соединениям и отправили в именованную таблицу.

Вроде бы всё хорошо и всё должно работать, но это не так, в RouterOS есть один маленький нюанс, который необходимо помнить и учитывать.Дело в том, что маршрутизатор, прежде чем отправить пакет в цепочку output, смотрит в таблицу маршрутизации и ищет для адреса назначения подходящий маршрут в таблице main, есть всего три типа сервисов, которые умеют работать вне данного поведения, это ping, traceroute и ospf — это необходимо для работы в VRF.

На данный момент у нас нет маршрута по умолчанию в таблице маршрутизации main, встаёт вопрос, какой шлюз указать в качестве маршрута по умолчанию, если мы укажем первого провайдера, то в случае падения интерфейса мы останемся у разбитого корыта, мы можем сразу указать три шлюза и с помощью distance указать приоритеты, но тогда мы должны помнить про данную настройку и случае замены провайдера или какого-либо изменения править конфигурацию и в этом моменте, а там то всего нужно пройти выбор маршрута и далее уже переопределить направление, т.е по факту это логический кейс.

Все интерфейсы имеют способность падать, есть один интерфейс, который всегда находится в состоянии UP, но в RouterOS использовать его в конфигурации не представляется возможным — это Loopback.

В RouterOS данный интерфейс можно заменить пустым bridge.

[admin@MikroTik.Me] /interface bridge add name=Br-Loopback

Я часто рассказываю на курсах, почему именно такое название, а не просто Loopback, возможно в ближайшем будущем в RouterOS будет добавлено поддержка Loopback интерфейса и если разработчики заложат такое же название, то при обновлении версии RouterOS могут возникнуть проблемы.

А теперь создадим маршрут в таблице main, который необходим для преодоления выбора маршрута и попадания пакета в цепочку output.

[admin@MikroTik.Me] /ip route add dst-address=0.0.0.0/0 gateway=Br-Loopback distance=254

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

Напоминаю, что дистанция 255 это административная дистанция, которая явно указывает на то, что данный маршрут мёртв и не участвует в маршрутизации.

Всё, на данном этапе вы должны иметь возможность подключаться к маршрутизатору по любому IP адресу через любого провайдера одновременно, можете “пинговать” и делать всякие другие непотребства с внешними IP адресами.

Два провайдера в разных подсетях

Нередки случаи, когда возникает необходимость настроить два независимых друг от друга интернет-подключения, при которых не будет смешиваться трафик. Подробнее о том, как это сделать, далее.

Для начала сбросим Mikrotik на заводские настройки, подключившись к нему через программу Winbox: System — Reset Configuration, в открывшемся меню ставим галочки на No default configuration и Do not backup и нажимаем Reset configuration.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настраиваем наши интернет-подключения: в первом порту будет динамика, во втором – статика.

Настраиваем первый порт: в меню IP – DHCP Client добавляем новое подключение, назначив интерфейс ether1, а в строке Add Default Route выбираем no.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Можно поступить проще, введя на микротике в New Terminal данную команду:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настроим второй порт на статику: в меню IP – Addresses добавляем новый адрес с указанием нужного порта.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Также не забываем указать адрес DNS сервера (IP – DNS):

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Или же введите в New Terminal следующий конфиг (указав вашу адресацию):

Теперь создадим два бриджа – подключенные к BRIDGE1 устройства будут использовать интернет-канал первого провайдера (динамика), а подключенные к BRIDGE2 – второго провайдера соответственно.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Конфиг для New Terminal:

Добавим в эти бриджи желаемые порты (мы в примере хотим, чтобы пользователи, подключающиеся через Wi-Fi, «ходили» в интернет через первого провайдера, остальные порты микротика будут относиться ко 2 провайдеру):

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Конфиг для New Terminal:

Не забываем включить Wi-Fi интерфейс, по умолчанию он выключен.

/interface wireless set wlan1 mode=ap-bridge ssid=work default-forwarding=no disabled=no security-profile=profile1

Следующий шаг — добавление желаемой адресации для созданных бриджей и настройка DHCP Server локальной сети. Используйте наш конфиг, заменив в нем при необходимости адресации на нужные вам:

Данные настройки применяются в следующих разделах:

IP – Pool

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – Addresses

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

IP – DHCP Server – Networks

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Далее настраиваем NAT, чтобы устройства, подключенные к локальной сети, могли выходить в интернет. В IP – Firewall – NAT добавим правило. Во вкладке General в графе Chain выбираем srcnat, в Out. Interface назначаем первый порт.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Во вкладке Action выбираем masquerade:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Создаем еще одно схожее правило, где отличаться будет Out. Interface – там соответственно выбираем второй порт.

Или же используем следующий конфиг:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Настройка с конфигом (не забываем выставить адресацию в соответствии с созданным ранее пулом):

Следующий шаг – маркировка трафика. IP – Firewall – Mangle, добавляем маркировку трафика для первого провайдера: во вкладке General в графе Chain указываем prerouting:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Вкладка Advanced, в графе Src. Address List выбираем ранее созданный LIST1:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Вкладка Action, в графе Action выбираем mark routing, а в графе New Routing Mark прописываем маршрут первого провайдера — isp1.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Создаем еще одно правило для маркировки трафика уже соответственно для второго провайдера, где выбираем адресацию LIST2 и в маршруте прописываем isp2.

Конфиг для быстроты:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Добавим в IP – Routes этот маршрут. Указываем в поле Gateway адрес, который узнали ранее, в графе Distance выставляем приоритет 1, в графе Routing Mark выбираем isp1.

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Также добавим еще два маршрута с этими же шлюзами, у первого провайдера выставим приоритет 10, у второго – 20. Эти правила нужны на случай, если какой-либо трафик будет без маркеров, например, трафик самого микротика:

MikroTik. Правильный dst nat при использовании 2-х и более провайдеров

Работа двух независимых друг от друга интернет-подключений настроена.

Оцените статью
Хостинги