Настройка NAT на маршрутизаторах Mikrotik
Для настройки NAT маршрутизатора Микротик сначала скачиваем утилиту winbox и подключаемся к роутеру, где скачать, и инструкция по подключению описано здесь. Настроить Мikrotik NAT на маршрутизаторе можно несколькими способами, рассмотрим их по порядку.
Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.
Простая настройка NAT
После подключения к роутеру открываем вкладку NAT меню ip-firewall, нажимаем кнопку добавить новое правило(красный крестик)
В открывшемся окне, вкладка General заполняем минимально необходимые поля
Chain-канал приемник, нам нужно принимать из локальной сети, поэтому выбираем srcnat
Out.Interface – Внешний интерфейс маршрутизатора, тот которым он смотрит в интернет
Далее открываем вкладку Action
В поле Action выбираем masquerade(Маскарад). Теперь будет происходить подмена локальных ip, адресом предоставленный провайдером. Минимальная настройка НАТ на Mikrotik закончена. Рассмотрим более сложную настройку NAT на Микротик.
Настройка NAT для нескольких внешних ip
Если провайдер выделяет несколько внешних ip, или у нас подключены несколько операторов, и мы хотим сделать выход из разных подсетей или локальных ip в интернет под разными адресами, то есть несколько способов.
- Если внешние ip настроены на разных интерфейсах маршрутизатора. Здесь все просто, прописываем Src.Address нужный ip или сеть, а исходящим интерфейсом выбираем нужный интерфейс .
Указываем в source ip нужные подсети, или одиночные ip адреса. В указанном примере, все пакеты от компьютеров с ip 192.168.0.2-192.168.0.127 будут идти через интерфейс ether1-gareway, а пакеты с 192.168.0.128-192.168.0.255 будут идти с интерфейса ether2-gateway, соответственно в интернете они будут видны под ip address этих интерфейсов.
- Если от провайдера приходит один провод по которому нам дают несколько внешних ip, нам не хочется задействовать для каждого соединения свой порт, то все внешние ip можно настроить на одном порту
К примеру у нас на одном порту настроены ip address 1.1.1.1, 2.2.2.2 и целая сеть 3.3.3.3/24 как показано на рисунке
Нам нужно настроить выход для разных локальных компьютеров с внешних ip 1.1.1.1, 2.2.2.2 3.3.3.3 и 3.3.3.4.
Рассмотрим настройки на примере интерфейса с ip 3.3.3.4, все остальные будут идентичны
На вкладке General указываем только Src.Address, сеть или local с которого будут идти пакеты. Далее на вкладке Action делаем следующие настройки
В поле Action выбираем dst-nat или netmap. Отличие dst nat от netmap заключается в том, что netmap новый и улучшенный вариант dst nat. Поэтому я использую его.
В поле To Address прописываем адрес под котором нужно что бы наша сеть выходила в интернет.
Также в поле действия можно выбрать следующие операции.
Accept – принять будет принят и пройдет через маршрутизатор без изменений
add-dst-to-address-list — добавить address назначения в список адресов, заданный параметром address-list
add-src-to-address-list — добавить address источника в список адресов, указанный параметром address-list
dst-nat — заменяет address назначения и / или порт IP-пакета на значения, заданные параметрами-адресами и портами, этот параметр бвыше был рассмотрен
jump — переход к определяемой пользователем цепочке, заданной значением параметра target-jump
log — добавить сообщение в системный журнал, содержащий следующие данные: in-interface, out-interface, src-mac, protocol, src-ip: port-> dst-ip: порт и длина пакета. После согласования пакета он переходит к следующему правилу в списке, аналогично переходу
masquerade — Маскарад рассмотренный в начале статьи. Подмена внутреннего адреса машины из локальной сети на адрес роутера;
netmap — создает статическое отображение 1: 1 одного набора IP-адресов другому. Часто используется для распространения общедоступных IP-адресов на хосты в частных сетях
passthrough — если пакет соответствует правилу, увеличьте счетчик и перейдите к следующему правилу (полезно для статистики).
redirect — заменяет порт назначения IP-пакета на один, заданный параметром-портом-портом и адресом назначения на один из локальных адресов маршрутизатора
return — передает управление обратно в цепочку, откуда произошел прыжок
same — дает конкретному клиенту один и тот же IP-адрес источника / получателя из заданного диапазона для каждого соединения. Это чаще всего используется для служб, ожидающих одного и того же адреса клиента для нескольких подключений от одного и того же клиента
src-nat — заменяет исходный адрес IP-пакета на значения, заданные параметрами to-addresses и to-ports
Если нужно настроить проброс портов из интернета на ресурсы локальной сети, то как это сделать подробно описано здесь
Обучающий курс по настройке MikroTik
Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
MikroTik — Настройка NAT
Чтобы компьютеры получили выход в интернет, необходимо настроить NAT.
Добавляем правило NAT для первого провайдера:
- Откройте меню IP — Firewall;
- Перейдите на вкладку NAT;
- Нажмите кнопку Add (синий крестик);
- В появившемся окне на вкладке General в списке Chain должно быть выбрано srcnat;
- В списке Out. Interface выберите интерфейс первого провайдера ether1;
- Перейдите на вкладку Action;
Добавляем правило NAT для второго провайдера:
- На вкладке NAT нажмите кнопку Add (синий крестик);
- В появившемся окне на вкладке General в списке Chain должно быть выбрано srcnat;
- В списке Out. Interface выберите интерфейс второго провайдера ether2;
- Перейдите на вкладку Action;
Теперь на подключенных к роутеру компьютерах должен появиться интернет. Проверьте это.
Источник
MikroTik. Правильный dst nat при использовании 2-х и более провайдеров
Приступая к выполнению задачи я рассчитывал на легкую прогулку в тени дубового парка, созерцая природу и предаваясь размышлениям… Однако позже стало понятно, что это будет тернистый и сложный поход сквозь горные реки с подводными камнями, обледеневшими скалами и глубокими пещерами.
Через медитации, борьбу со стихиями и собственной тупостью преодоление себя я, все таки, достиг желанной нирваны.
В этой статье я не только предоставлю готовый набор правил, но и постараюсь максимально доступно объяснить почему и как именно они работают.
Часть 1.
Для начала пробежимся по всем настройкам, дабы самые нетерпеливые могли скопипастить не читая.
Не помню начиная с какой версии RouterOS появилась эта фишка. Она позволяет группировать интерфейсы, что весьма удобно (например, в правилах /ip firewall). У меня создана группа из 3-х WAN-интерфейсов.
AcidVenom подсказал, что в 6.36
IP-адреса (адреса, по понятным причинам, «левые»):
Для организации Failover’а я настроил рекурсивную маршрутизацию, подробнее расскажу в 2-ой части.
Firewall (для данной публикации я сознательно привожу правила, разрешающие все.
Не делайте так!):
Часть 2.
Рассмотрим все подробнее.
/ip route
В первых трех строчках мы указываем default gateway каждого из 3-х наших провайдеров.
Маршруты имеют одинаковый вес (distance), но работают в разных таблицах маршрутизации.
Другими словами, эти маршруты работают для пакетов промаркированных соответствующим тегом (routing-mark). Теги пакетам мы будем навешивать в /ip firewall mangle (о чем я подобно расскажу ниже).
Следующие 3 строки — указание маршрутов по умолчанию в основной таблице маршрутизации.
Здесь стоит обратить внимание на:
- Параметр distance. Для каждого маршрута разный и, соответственно, «вес» маршрутов тоже разный.
ISP1 — основной, за ним ISP2 и ISP3 замыкает, т.е. при отказе провайдера ISP1 работать будем через ISP2, если и ISP2 почил в бозе, то за дело возьмется ISP3.
Несколько непонятным может быть значение параметра gateway. Как это гугловые DNS и какой-то левый IP-адрес вдруг стали маршрутами по-умолчанию? Магия заключается в параметре scope из последних трех строк, а так же в самом механизме Nexthop lookup.
На самом деле трафик отправится активному провайдеру, а дальше тот отправит его в Интернет через свои аплинки.
Под спойлером мой подробный перевод/адаптация вики MikroTik на эту тему.
Английский статьи http://wiki.mikrotik.com/wiki/Manual:IP/Route, на мой взгляд, слегка упорот. Это не Cisco CCNA Exploration, который читается на одном дыхании, но я постараюсь перевести ее отрывок максимально понятно. Если где-то увидите такую же упоротость, поправьте меня, пожалуйста.
Во-первых, определимся с некоторыми терминами.
Nexthop — следующий прыжок, если дословно. Следующий шлюз/роутер/маршрутизатор на пути следования пакета из точки А(от моего роутера, например) в точку Б (допустим до гуглового DNS 8.8.8.8), т.е. следующий транзитный участок, на котором будет обрабатываться пакет. В переводе будет использоваться словосочетание “следующий хоп” (простите за англицизм).
Immediate nexthop — следующий шлюз/роутер/маршрутизатор на пути следования пакета из точки А в точку Б, доступный непосредственно. Для моего домашнего MikroTik, с маршрутом по-умолчанию:
89.189.163.1 — это и есть immediate nexthop, т.к. доступен он через ether1-gateway. В переводе будет использоваться словосочетание “непосредственно доступный следующий хоп”.
Connected route — связанный маршрут. Маршрут, шлюз которого доступен непосредственно.
Gateway — сетевой шлюз/роутер/маршрутизатор.
Я буду пользоваться всеми тремя вариантами перевода.
scope — Используется в механизме поиска следующего хопа, т.е. решения какой же хоп станет следующим. Нужный маршрут может быть выбран только среди маршрутов, значения scope которых меньше либо равно значению target-scope. Значения по-умолчанию зависят от протокола:
- связанные маршруты: 10 (если интерфейс запущен(running))
- OSPF, RIP, MME маршруты: 20
- статические маршруты: 30
- BGP маршруты: 40
- связанные маршруты: 200 (если интерфейс не запущен)
target-scope — Используется в механизме поиска следующего хопа, т.е. решения какой же хоп станет следующим. Это максимальное значение параметра scope для маршрута, посредством которого может быть найден следующий хоп. Для iBGP значение установленно в 30 по-умолчанию.
Табличка значений обоих параметров.
Поиск следующего хопа.
Поиск следующего хопа является частью процесса выбора маршрута.
Маршрутам, находящимся в FIB, нужен интерфейс, соответствующий каждому из адресов шлюзов. Адрес следующего хопа-шлюза должен быть непосредственно доступен через этот интерфейс. Интерфейс, который следует использовать для посылки исходящего пакета каждому из шлюзов, находится с помощью поиска следующего хопа.
Некоторые маршруты (например, iBGP), в качестве адреса шлюза, могут иметь адрес принадлежащий маршрутизатору, находящемуся через несколько прыжков-шлюзов от нашего MikroTik. Для установки таких маршрутов в FIB необходимо найти адрес шлюза, доступного непосредственно (an immediate nexthop), т.е. напрямую от нас, который и будет использоваться для достижения адреса шлюза в этом маршруте. Непосредственный адрес следующего хопа также может быть найден при помощи механизма поиска следующего хопа.
Поиск следующего хопа выполняется только в основной таблице маршрутизации main, даже для маршрутов, имеющих отличное значение параметра routing-mark. Это необходимо для ограничения установки маршрутов, которые могут быть использованы для поиска непосредственно доступных хопов (immediate nexthops). В маршрутах для протоколов RIP или OSPF предполагается, что следующий маршрутизатор доступен непосредственно и должен быть найдены используя только связанные маршруты(connected routes).
Маршруты с именем интерфейса в качестве шлюза не используются в поиске следующего хопа. Если есть маршрут с именем интерфейса, а также маршрут с активным IP-адресом, то маршрут с интерфейсом игнорируется.
Маршруты, имеющие значение параметра scope больше максимально допустимого не используются в поиске следующего хопа. В каждом маршруте указывается максимально допустимое значение параметра scope, для его следующего хопа, в параметре target-scope. Значение по-умолчанию для этого параметра позволяет выполнить поиск следующего хопа только через связанные маршруты (connected routes), за исключением iBGP-маршрутов, которые имеют большее значение по-умолчанию и могут выполнить поиск следующего хопа также через IGP и статические маршруты.
Интерфейс и адрес следующего непосредственно доступного маршрутизатора выбираются основываясь на результатах поиска следующего хопа:
- Если наиболее точный активный маршрут, который был обнаружен в ходе поиска адреса следующего хопа, является связанным маршрутом, то интерфейс этого связанного маршрута используется как интерфейс следующего хопа и шлюз помечается как reachable. После того как маршрутизатор становится непосредственно доступным через этот интерфейс (именно это и следует понимать как “связанный маршрут” или “connected route”) его адрес используется как адрес непосредственно доступного маршрутизатора (immediate nexthop address).
Если наиболее точный активный маршрут, который был обнаружен в ходе поиска адреса следующего хопа, имеет адрес шлюза, который уже был обнаружен, непосредственно доступный хоп и интерфейс копируются с этого маршрута, а шлюз помечается как recursive.
Если наиболее точный активный маршрут, который был обнаружен в ходе поиска адреса следующего хопа является ECMP маршрутом, то используется первый доступный маршрутизатор этого маршрута.
А теперь, как говорят в КВН, зачем же я показал этот номер. Обратите внимание, мы устанавливаем scope=10 для статических маршрутов в последних трех строках, тем самым «заставляем» MikroTik принимать во внимание эти маршруты при поиске следующего хопа.
Он и принимает, и таким образом маршруты по-умолчанию через:
- 8.8.8.8
- 8.8.4.4
- 1.1.36.3
становятся recursive, т.е. непосредственно доступными хопами будут шлюзы провайдеров и трафик мы пошлем через них, но check-gateway=ping будет проверять доступность адресов ЗА провайдерскими сетями.
Надеюсь мой перевод и объяснение будут вам полезны.
Пока самые охочие до знаний читают под спойлером, расскажу немого короче и проще.
Когда мы указываем scope=10 в последних трех строках, мы даем понять MikroTik’у, что:
- 8.8.8.8
- 8.8.4.4
- 1.1.36.3
ему доступны не напрямую, а рекурсивно через данные статические маршруты. По одному IP на брата-провайдера.
/ip firewall mangle
Для пояснения правил этого раздела пригласим несколько помощников.
- MANGLE — данная таблица предназначена для операций по классификации и маркировке пакетов и соединений, а также модификации заголовков пакетов (поля TTL и TOS) (викиучебник).
Таблица mangle содержит следующие цепочки:
- PREROUTING — позволяет модифицировать пакет до принятия решения о маршрутизации.
- INPUT — позволяет модифицировать пакет, предназначенный самому хосту.
- FORWARD — цепочка, позволяющая модифицировать транзитные пакеты.
- OUTPUT — позволяет модифицировать пакеты, исходящие от самого хоста.
- POSTROUTING — дает возможность модифицировать все исходящие пакеты, как сгенерированные самим хостом, так и транзитные.
Я разбил правила на группы, для облегчения их понимания. В первой группе 6 правил, которые отвечают за трафик в/из самого роутера, и во второй группе 6, для транзитного трафика.
Начем с первых двух.
В первом мы сообщаем роутеру, что все входящие chain=input соединения на интерфейс ISP1 нужно маркировать action=mark-connection new-connection-mark=ISP1-conn, а так же указаваем passthrough=yes, чтобы пакет, после прохождения этого правила, не покинул таблицу и продолжил следование по правилам.
Во втором говорим MikroTik’у, чтобы он отловил исходящие соединения chain=output помеченные как ISP1-conn и присвоил им метку роутинга(для помещения в соответствующую таблицу маршрутизации, вы ведь помните первые три маршрута?), а также сообщаем passthrough=no , как бы говоря — нечего делать здесь пакету после этого правила, т.е. пакет покинет таблицу.
Все описанное выше справедливо и для ISP2 и для ISP3. Таким образом мы добились того, что роутер ответит именно с того интерфейса, на который к нему прийдет запрос.
Переходим к завершающим шести правилам.
Уже понятно, они также разбиты на подгруппы по 2, для каждого из наших ISP.
Первое из них поручает роутеру следить за цепочкой FORWARD и если происходит соединение через интерфейс ISP1, то оно маркируется action=mark-connection новым тегом new-connection-mark=ISP1-conn-f (обратите внимание! отличным от тега трафика самого маршрутизатора, в данном случае мы маркируем транзитный трафик). passthrough=no, т.к. мы не хотим, чтобы пакет, после попадания в это правило, обрабатывался в таблице как-то еще.
Второе навешивает нужную метку роутинга new-routing-mark=ISP1-route в цепочке PREROUTING, т.е. ДО принятия решения о маршрутизации, и отслеживает трафик пришедший к нам из локальной сети in-interface=bridge.
Здесь нас выручает механизм CONNECTION TRACKING, позволяющий поймать промаркированные правилом выше соединения из локальной сети(от WEB-сервера) и навесить им необходимый тег роутинга.
Это позволяет транзитному трафику(здесь к/от web-сервера) идти именно тем путем, которым он и пришел, т.е. пришел через ISP1 — уходи через него же.
Заключение
Очень рад, если мои объяснения понятны, а данный труд станет полезен.
Ушел медитировать, всем удачи!
Источник