Андрей Смирнов
Время чтения: ~22 мин.
Просмотров: 7

Проброс портов в Микротике — ликбез для начинающих

Сегодня поговорим про базовою настройку MikroTik для доступа в интернет. Данная инструкция написана как говорится для чайников так как все будем делать с нуля. Все настройки проводим на одном из популярных маршрутизаторов линейки, модели RB951G-2HnD. Все что тут описано подойдет к любому устройству, работающему на операционной системе RouterOS (то есть почти на все устройства Микротик).

Если вы хотите углубить свои знания по работе с роутерами MikroTik, то наша команда рекомендует пройти курсы которые сделаны на основе MikroTik Certified Network Associate и расширены автором на основе опыта . Подробно читайте ниже.

Немного общей информации

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

Действительно, когда я первый раз начал его настраивать, первое что я сказал: «Ого и это все можно сделать на железки за 1500 рублей». Масштаб возможностей роутеров действительно поражает это и мультикаст, MPLS, огромное количество технологий VPN. Да он один может справится с работой небальной компании и филиалов, подключённых по pptp например.

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

Распаковка и сброс настроек

И так, к нам в руки попал один из роутеров, первым делом нам нужно установить на компьютер утилиту для настройки – mikrotik winbox. Через нее конфигурируются все роутеры данной фирмы, только коммутаторы используют для этих целей web-интерфейс (и то не все).

Подключаем наше устройства к сети «в любой порт кроме первого, так как на нем присутствует настройка по умолчанию, и он выделен под интернет» и запускает winbox. Теперь переходим на вкладку Neighbors (обнаружение) и подождем немного должно появится наше устройство. Нажимаем на mac адрес вводим логин по умолчанию «admin» и подключаемся.

mikrotik-settings-01.png

После входа выводится окно «RouterOS Default Configuration» со стандартными настройками от производителя. Их стоит оставить только в том случае если вы дальше ничего настраивать не будете. Так как для новичка разобраться в них будет сложно, поэтому сбрасываем MikroTik нажав на кнопку «Remove Configuration».

mikrotik-settings-02.png

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

Настройка локальной сети

Первым делом давайте создадим локальную сеть для нашего офиса или дома. Особенностью микротик является то что все порты у него равны, то есть нет определенно выделенного порта под интернет, а другие под локалку. Мы можем сами выбирать как нам угодно, для этого есть механизм «Bridge».  Простым языком Бридж это – объединение физических портов в пул логических (грубо говоря в один широковещательный домен). Замечу что Wi-Fi является тоже интерфейсов и если мы хотим, чтоб в нем была та же LAN сеть что и в портах, его также нужно добавить в Bridge.

В моем примере я сделаю WAN порт пятым, а все остальные объединим в бридж, и они будет в роли свитча.

mikrotik-settings-s-nulya-3.png

  1. Переходим в нужный раздел;
  2. Создаем сам бридж;
  3. Сохраняем.

Все настройки в данном месте у микротика можно оставить по умолчанию, на ваше усмотрение поменяйте название на более понятное, например, «bridge_lan». Переходим на следующую вкладку «port» и добавляем через кнопку плюс все порты кроме ether5.

mikrotik-settings-s-nulya-4.png

Первый этап конфигурирования интерфейсов на уровне портов закончен, теперь у нас в ether1,2,3,4 и wlan1 единый широковещательный домен, а ether5 для подключения к провайдеру.

Настройка DHCP сервера и шлюза по умолчанию для LAN

Теперь на нашем роутере нужно настроить DHCP сервер и дать ip адрес  интерфейсу, который будет шлюзом для внутренней сети. Для этого идем IP -> Addresses и добавляем его.

mikrotik-settings-s-nulya-5.png

В поле адрес вводим ту подсеть, которая вам нужна и выбираем интерфейс bridge1, после этого наш MikroTik будет доступен по этому адресу чрез объединённые порты и через wifi (который мы еще настроим).

Дальше чтобы все устройства в сети могли получать адреса автоматически мы переходим в раздел IP-> DHCP и собственно настраиваем его через кнопку «DHCP Setup». Выбираем интерфейс, на котором он будет работать «это наш bridge1», жмем Next и оставляем пространства адресов по умолчанию. В моем случае это будет подсеть в которой находится сам роутер. То есть раздавать микротик будет адреса с 192.168.9.2-192.168.9.255.

mikrotik-settings-s-nulya-6.png

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

mikrotik-settings-s-nulya-7.png

В следующем окне перед нами встает выбор, раздавать ли весь диапазон адресов или его часть. По правильному лучше исключить первые 10 так как в будущем может появиться еще один роутер или коммутаторы которым желательно задать ip статикой. Но сейчас нам не принципиально, и мы оставляем как есть.

mikrotik-settings-s-nulya-8.png

Наконец последним этапом указываем DNS. Если в вашей сети есть выделенный DNS сервер, то пишем его ip, если нет и вы настраиваете, например, для дома пишем ip самого роутера (в большинстве случаем так оно и будет).

mikrotik-settings-s-nulya-9.png

Жмем далее, следующие значение не меняем. Все настройка DHCP сервера и шлюза по умолчанию на микротике закончена, переходим к следующему разделу.

Настройка интернета в микротик

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

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

И так, подключаем провод в 5 торт (как писалось выше я буду использовать его), идем в раздел IP -> DHCP Client выбираем в Interface наш порт, проверяем чтобы галочки все стояли как на скриншоте и Add Default Route было выбрано yes.

mikrotik-settings-s-nulya-10.png

Проверить правильность настройки можно тут же или в разделе IP-> Addresses, если получил ip то мы молодцы.

mikrotik-settings-s-nulya-11.png

Вариант номер 2. Настройки от провайдера нужно ввести вручную, имеют они следующий вид:

  • IP адрес 192.168.1.104
  • Маска 255.255.255.0
  • Шлюз 192.168.1.1
  • DNS 192.168.1.1

Первое, указываем ip в том же разделе, как и при указании статического адреса. Только тут мы выбираем интерфейс ether5 – 192.168.1.104/24.

mikrotik-settings-s-nulya-12.png

Второе, нужно указать шлюз по умолчанию (то есть адрес куда mikrotik будет оправлять все запросы если сам ответа не знает, а это все что мы ищем в интернете). Идем в IP -> Routes и через + добавляем новый маршрут как показано на рисунке.

mikrotik-settings-s-nulya-13.png

Третье, указываем DNS сервер (это специальный узел, который сопоставляет ip с адресами, например, vk.ru = 89.111.176.202). Идем IP -> DNS и в поле Servers вводим его адрес.

mikrotik-settings-s-nulya-21.png

Конфигурирование провайдерского интернета закончено, давайте проверим все ли сделано правильно используя утилиту ping на ya.ru.

mikrotik-settings-s-nulya-14.png

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

Настройка NAT на Микротике

NAT это технология придуманная из-за нехватки ipv4, в дословном переводе означает «трансляция сетевых адресов». Простыми словами роутер будет подменять все запросы от локальной сети и отправлять их со своего ip. Дополнительный плюс — это закрывает внутреннюю сеть и защищает ее. Все ее настройки делаются в IP-> Firewall вкладка NAT. Добавляем правило:

  • Chain – srcnat
  • Interface – ether5
  • На вкладке Action выбираем – masquerade.

Жмем ОК и на компьютерах в сети должен появится интернет. То есть они получат все необходимые настройки от микротока по DHCP, отработает NAT, DNS и запрос уйдет на шлюз по умолчанию. Но как же Wi-Fi?, его по-прежнему нет, сейчас мы это исправим.

Настройка wifi точки доступа на MikroTik

По правде сказать, Wi-Fi это очень объёмная тема, которую можно расписать на пару статей. Здесь же я покажу как быстро настроить wifi на микротике для домашних нужд или не большого офиса. Если же вам нужно разобрать во всем детальнее (ccq, ширина канала и т.д) то мы позже напишем статью и на эту тему.

По умолчанию wlan интерфейс выключен, поэтому идем и включаем его в разделе Wireless.

Далее надо настроить Security Profile – это место где мы задаем параметры безопасности для точки доступа.

  1. Переходим в нужную вкладку;
  2. Открываем двумя кликами «default» профйал;
  3. Указываем – dynamic keys;
  4. Тип авторизации отмечаем – WAP PSK, WAP2 PSK, aes ccm;
  5. В графе WAP и WAP2 Pre-Shared Key – указываем пароль от Wi-FI (придумайте сложный).

Здесь закончили, сохраняем все и переходим в разделе Wireless на вкладку interfaces, двойным щелчкам открываем wlan1. Дальше указываем все так как у меня.

Здесь стоит обратить внимание на следующие параметры:

  • SSID –это имя точки доступа которое будут видеть WI-FI устройства;
  • Mode – ap bridge, ставьте именно это значение.

Такие значение как «Frequency» делайте как на скриншоте, это например частота канала. Ее по-хорошему нужно выбирать после анализа частотного спектра, но, если вы не знаете, что это ставьте любое значение, работать будет.  На этом настройка роутера микротик с нуля закончена, можно пользоваться.

Также рекомендую задать пароль администратора, ото без него любой введя логин admin сможет подключиться к вашему устройству. Делается это в System -> Users.

Шелкам правой кнопкой мышки на имя и выбираем поле «Password». В открывшемся окне собственно вводим и подтверждаем его. Всем пока надеюсь, что статья была полезной, оставляете свои вопросы в комментариях и вступайте в нашу группу Телеграмм (откроется новая страница в браузере – нажмите на кнопку открыть в Telegram).

Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в курсе «Настройка оборудования MikroTik». 162 видеоурока, большая лабораторная работа и 89 вопросов, на каждый из которых вы будете знать ответ. Подробности и доступ к началу курса бесплатно тут.

  • Tutorial

Находя в сети различные инструкции по работе с Mikrotik RouterOS, я обратил внимание, что большинство из них малоинформативны — в лучшем случае они представлены в виде скриншотов Winbox со скудными комментариями, в худшем — просто груда строк для командной строки, из которых что-либо понять вообще нет никакой возможности. Поэтому я решил написать небольшой набор инструкций, в которых буду объяснять, не только ЧТО нужно выполнить, но и ЗАЧЕМ и ПОЧЕМУ. Итак, начнём с самого простого и, в тоже время, нужного — проброс порта из внутренней сети «наружу». Любую сеть можно схематично представить вот в таком виде: Посмотрим немного подробнее, на примере роутера Mikrotik RB951-2n. У него 5 портов, плюс модуль WiFi. Подключаемся через web-интерфейс или Winbox’ом к роутеру(по умолчанию логин admin, без пароля), заходим в список интерфейсов, это второй пункт в меню, Interfaces. Тут мы видим все интерфейсы, доступные нашему роутеру(интерфейс — это, грубо говоря, канал связи роутера с другим компьютером/компьютерами) Первым идёт bridge-local — «локальный мост». В данном случае он служит для установки моста между локальной сетью и беспроводными подключениями по WiFi (В Микротике для соединения вместе нескольких интерфейсов можно или объединить их в свитч, или соединить мостом(бриджем). У каждого из этих двух вариантов есть свои сильные и слабые стороны. Но это тема для отдельной статьи). Далее, ether1-gateway. Ether1 — это первый RJ45 разъём на лицевой панели роутера. По умолчанию считается, что в него воткнут кабель с интернетом, приходящий от провайдера. Поэтому он называется Gateway — «Ворота» (В принципе, это не обязательно должен быть первый порт, при желании можно назначить gateway’ем любой другой порт, и даже несколько портов одновременно, при наличии подключений от нескольких провайдеров). Затем идут 4 порта локальной сети. Они объединены в свитч, начиная со второго RJ45 разъёма, он называется ether2-master-local, остальные 3 — неполиткорректно называются slave-local. Тут логика простая: в параметрах портов 3, 4 и 5 прописано, что главным у них является порт №2 — соответственно, все четыре порта автоматически объединяются в виртуальный свитч. А этот виртуальный свитч внутренней сети объединен с беспроводной сетью посредством бриджа из первой строки. Между внешним интернетом и внутренней сетью находится NAT — Network Address Translation, дословно «Трансляция сетевых адресов». Механизм, позволяющий компьютерам, находящимся в локальной сети, иметь внутренние адреса своей сети, и при этом нормально общаться со всеми другими компьютерами и серверами в интернете (при этом для внешнего сервера все компьютеры внутри сети представляются одним адресом — внешним адресом роутера). Вкратце, это работает таким образом: при обращении из внутренней сети куда-нибудь в интернет, роутер подменяет внутренний адрес компьютера своим адресом, принимает ответ от сервера в интернете, и переадресовывает на локальный адрес компьютера, сделавшего исходный запрос. Это называется Masquerade — «Маскарад»: данные от машины в локальной сети как-бы «надевают маску» и для внешнего сервера это выглядит так, будто они исходят от самого роутера. Точно так же, при подключении из внешней сети, нам нужно где-то задать правило, какой именно компьютер в локальной сети должен отвечать на попытки подключиться к какому-то порту на роутере. Поясню на примере: Мы хотим, чтобы при подключении к нашей сети в лице роутера на порты 110 и 51413 — подключение переадресовывалось на компьютер PC1, а при подключении к порту 3189 — на машину PC2. Для этого и нужен NAT. В Микротике управление NAT’ом находится в разделе IP->Firewall->NAT:

Тут мы видим, что одно правило уже есть. Оно автоматически создаётся конфигурацией по-умолчанию — это тот самый «Маскарад», он необходим для того, чтобы компьютеры во внутренней сети могли нормально обращаться к серверам в интернете. Нам же нужно ровно наоборот — добавить правило для подключения извне к одной из машин в локальной сети. Например, для эффективной работы торрент-клиента мы хотим сделать доступным порт 51413 на машине с именем nas. Нажимаем синий плюсик В появившемся окне нового правила нам нужно всего несколько опций Первое — это Chain (Цепочка). Тут может быть всего два варианта — srcnat и dstnat. Цепочка — это, грубо говоря, направление потока данных. Srcnat — из внутренней сети во внешнюю, dstnat — соответственно, из внешней во внутреннюю. Как легко догадаться, в нашем случае требуется выбрать dstnat. Далее идут Src. Address (исходный адрес) и Dst. Address (адрес назначения). Для подключения извне исходный адрес будет адресом одного из миллиардов компьютеров в интернете, а адрес назначения — всегда внешний адрес роутера. Эти пункты ставить смысла нет. Потом пункт Protocol (протокол). Здесь значение надо выбрать обязательно, иначе мы не сможем указать номер порта. Для торрентов выбираем тут tcp. Src. Port (исходящий порт) — это тот порт, из которого удалённая машина инициирует соединение с нашим роутером. Нам это абсолютно без разницы, тут ничего не ставим.Dst. Port (порт назначения) — а это как раз тот порт, на который мы хотим принимать соединение. В моём торрент-клиенте это 51413. Затем идёт забавный пункт Any. Port (любой порт) — так и есть, это объединение двух предыдущих пунктов, тут можно указать значение, которое будет работать и как исходный порт, так и как порт назначения. В целом, нам это не требуется. Теперь очень важный момент:In. interface (входящий интерфейс) — это, грубо говоря, тот интерфейс, на котором «слушается» указанный порт. Если не указан это параметр, то этот порт перестанет так же быть доступен из внутренней сети, даже несмотря на то, что цепочка у нас dstnat. Поэтому, выбираем тут интерфейс, через который мы подключены к интернету, в нашем случае — ether1-gateway.Out. interface (исходящий интерфейс) — интерфейс, к которому подключена та машина, на которую мы делаем переадресацию. Тут что-либо ставить не имеет смысла. Далее идут узкоспециализированные параметры, я сейчас не буду на них останавливаться. В итоге, получается вот такая картина: Вкладки Advanced (Продвинутый) и Extra (Дополнительный) содержат различные параметры тонкой настройки, нам они без надобности, идём сразу в Action (Действие) Тут из списка Action нужно выбрать конкретное действие, которое следует выполнить с подключением на указанный ранее порт. Выбрать есть из чего:accept — Просто принимает пакет;add-dst-to-address-list — Добавляет адрес назначения в указанный список адресов;add-src-to-address-list — Аналогично предыдущему, но для исходного адреса;dst-nat — Переадресовывает данные, пришедшие из внешней сети, во внутреннюю;jump — Позволяет применить для данных правила из другой цепочки. Например, для цепочки srcnat — применить правила цепочки dstnat;log — Просто добавляет информацию о пакете в лог роутера;masquerade — Тот самый «Маскарад»: подмена внутреннего адреса машины из локальной сети на адрес роутера;netmap — Отображение одного адреса на другой. Фактически, развитие dst-nat;passthrough — Пропуск текущего пункта правил и переход к следующему. Используется в основном для статистики;redirect — Перенаправляет данные на другой порт в пределах роутера;return — Возвращает управление обратно, если в эту цепочку выполнялся прыжок правилом jump;same — применяется в очень редких случаях, когда нужно применять одни и те-же правила для группы адресов;src-nat — Обратная dst-nat операция: перенаправление данных из внутренней сети во внешнюю. Для наших целей подходит dst-nat и netmap. Последнее является более новым и улучшенным вариантом первого, логично использовать его: В поле To Addresses нужно указать адрес машины, на которую мы хотим переадресовать порт, в поле To Ports — соответственно, сам порт. Чтобы не заморачиваться, вместо адреса пишу имя комьютера, и указываю порт: И нажимаю кнопку Apply, роутер сам находит адрес машины: Напоследок имеет смысл нажать Comment и указать комментарий для правила, чтобы в дальнейшем не приходилось вспоминать, что это за правило и зачем Всё, нажимаем в окошке ввода комментария и ОК в окне ввода правила: Правило создано, всё работает. Обратите внимание — дополнительно «открывать» порт не требуется! Инструкция актуальна для версий прошивки 5 и 6. До версии 7 вряд-ли что-либо изменится.

Писать ли ещё статьи в таком ключе по настройке Микротиков?

  • 94,3%Да, очень полезный материал
  • 5,7%Нет, абсолютно ненужная статья

Проголосовали 1308 пользователей. Воздержались 88 пользователей.

mikrotik-port-forwarding-000.pngПроброс портов — на первый взгляд тривиальная повседневная задача, которая не должна вызывать никаких затруднений. Действительно, в бытовых роутерах это так, но если речь идет об оборудовании Mikrotik, то сложности могут не заставить себя ждать. А все потому, что RouterOS дает в руки администратора богатые сетевые возможности, требуя в ответ понимания работы сетей хотя бы на базовом уровне. Конечно, можно настроить все по готовой инструкции, но гораздо лучше понимать каждое свое действие, и именно для тех, кто хочет разобраться предназначена эта статья.

Проброс портов

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

Давайте рассмотрим небольшую схему, которая поможет понять принцип действия проброса портов.

mikrotik-port-forwarding-001-thumb-600xauto-9816.pngДопустим, некий удаленный ПК хочет обратиться к нашему веб-серверу, который находится за маршрутизатором в локальной сети. Но обратиться он может только по внешнему адресу маршрутизатора (в нашем примере 192.168.3.113), на который мы пробросили порт 80 веб-сервера. Поэтому он формирует пакет, в котором адресом назначения выступает маршрутизатор и отправляет его получателю, в качестве адреса источника он указывает собственный адрес.

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

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

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

На первый взгляд все понятно, поэтому перейдем к практике. В RouterOS в качестве сетевого фильтра используется iptables, поэтому далее мы будем оперировать его терминами. В таблице NAT используются две цепочки: PREROUTING — в которую попадают все пришедшие на маршрутизатор пакеты и POSTROUTING — через нее проходят все прошедшие через устройство пакеты. В PREROUTING нам доступно действие dst-nat (DNAT), которое позволяет изменить адрес назначения пакета, в POSTROUTING будут доступны src-nat (SNAT) и masquerade, которые позволяют изменить адрес источника пакета.

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

Так для пакета от клиента к веб-серверу и обратно порядок прохождения цепочек будет следующим:

PREROUTING -> FORWARD -> POSTROUTING

Обратите внимание, что пакет не попадает в цепочки INPUT и OUTPUT, которые используются для собственных пакетов маршрутизатора.

Как правильно выполнить настройку? Перейдем в IP — Firewall — NAT и добавим следующее правило: Chain — dstnat (читай PREROUTING), Dst. Address — 192.168.1.113 — внешний IP-адрес нашего роутера, Protocol — tcp — используемый протокол, если сервис может использовать несколько протоколов, скажем TCP и UDP — потребуется создать отдельное правило для каждого протокола, Dst. Port — 80 — порт, на котором маршрутизатор будет принимать внешние соединения.

mikrotik-port-forwarding-002.png

На закладке Action укажите: Action — dst-nat — выполняем замену адреса получателя, To Addresses — 192.168.186.195 — внутренний адрес веб-сервера, To Ports — 80 — порт, на котором веб-сервер принимает соединения. Если внешний и внутренний порт совпадают, то последний можно не указывать.

mikrotik-port-forwarding-003.png

Либо выполните в терминале:

/ip firewall nat add action=dst-nat chain=dstnat dst-address=192.168.3.113 dst-port=80 protocol=tcp to-addresses=192.168.186.195 to-ports=80

Но это еще не все, после PREROUTING пакет попадет в цепочку FORWARD, в которой, если вы настраивали роутер по нашей инструкции, запрещены любые внешние пакеты, кроме инициированных из локальной сети соединений.

Создадим новое правило. IP — Firewall — Filter Rules, где добавим: Chain — forward — цепочка FORWARD, Protocol — tcp, Dst. Port — 80 — протокол и порт, In. Interface — ether5 — внешний интерфейс вашего роутера. Так как по умолчанию в новых правилах стоит действие accept, на закладку Action можно не переходить.

mikrotik-port-forwarding-005.pngРасполагаться данное правило должно выше правила, запрещающего транзитный трафик из внешней сети во внутреннюю.

mikrotik-port-forwarding-004-thumb-600xauto-9821.pngОбратите внимание, что если вы пробрасываете порт с изменением номера, скажем внутренний 3389 (RDP) на внешний 3390, то в правиле брандмауэра вы всегда должны указывать внутренний порт, т.е. 3389, так как пакет уже прошел цепочку PREROUTING и данные о получателе в нем уже изменены на адрес и порт внутреннего сервера.

Из терминала это можно сделать командами:

/ip firewall filteradd action=accept chain=forward  dst-port=80 in-interface=ether5 protocol=tcp

Осталось только проверить работу наших правил, попробуем получить доступ к веб-серверу со внешнего узла:

mikrotik-port-forwarding-006-thumb-600xauto-9825.pngКак видим, все прекрасно работает.

Hairpin NAT

Все это хорошо, но ровно до тех пор, пока мы не попытаемся получить доступ по внешнему адресу из внутренней сети. Вообще, таких ситуаций следует избегать, предпочтительно использовать для доступа доменные имена и двойной горизонт DNS, когда для внешних пользователей одно и тоже имя разрешается во внешний адрес, а для внутренних — во внутренний. Но это возможно не всегда. Попробовав же обратиться изнутри по внешнему адресу, мы получим ошибку соединения:

mikrotik-port-forwarding-007-thumb-600xauto-9828.pngПочему так происходит? Давайте рассмотрим еще одну схему:

mikrotik-port-forwarding-008-thumb-450xauto-9831.png

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

Что же делать? Очевидно, что нужно каким-то образом заставить веб-сервер отвечать не напрямую клиенту, а пересылать пакет обратно маршрутизатору. Здесь нам на помощь придет действие src-nat (SNAT), которое позволяет изменить адрес отправителя, находящееся в цепочке POSTROUTING. В терминах Mikrotik данная настройка носит наименование Hairpin NAT.

Чтобы понять, как это работает мы подготовили следующую схему:

mikrotik-port-forwarding-009-thumb-450xauto-9834.png

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

Для настройки на Mikotik перейдем в IP — Firewall — NAT и добавим: Chain — src-nat (POSTROUTING), Src. Address — 192.168.186.0/24 — диапазон вашей локальной сети, Dst. Address — 192.168.186.195 — внутренний адрес веб-сервера, Protocol — tcp, Dst. Port — 80 — протокол и порт.

mikrotik-port-forwarding-010-thumb-600x262-9837.png

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

Затем переходим на закладку Action и указываем: Action — src-nat (SNAT), To Addresses — 192.168.186.1 — указываем внутренний адрес нашего маршрутизатора. Если вы используете на внешнем интерфейсе другой порт, то обязательно укажите его в поле To Ports, если порты совпадают, то делать это необязательно.

mikrotik-port-forwarding-011-thumb-600x233-9840.pngЧерез терминал данное правило можно создать следующим образом:

/ip firewall natadd action=src-nat chain=srcnat dst-address=192.168.186.195 dst-port=80 protocol=tcp src-address=192.168.186.0/24 to-addresses=192.168.186.1

Во многих иных статьях для данного правила используется действие masquerade, давайте разберемся в чем разница. В первом приближении оба действия делают одно и тоже — изменяют адрес источника пакета, но src-nat работает только со статическими адресами, зато позволяет указать в качестве источника любой адрес, masquerade работает с динамическими адресами, но в качестве адреса источника может использовать только адрес того интерфейса, с которого уходит пакет. За счет того, что masquerade при каждом запросе определяет адрес интерфейса — это действие требует больше вычислительных ресурсов, нежели src-nat.

В нашем случае все адреса статические, поэтому использование src-nat здесь будет более уместно.

Правило создано, проверим его работу:

mikrotik-port-forwarding-012-thumb-600xauto-9843.pngЕсли вы нигде не допустили ошибок — все будет работать, как и предполагалось.

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

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

  • https://mikrotiklab.ru/nastrojka/routera-mikrotik-s-nulya.html
  • https://habr.com/post/182166/
  • https://interface31.ru/tech_it/2019/07/probros-portov-i-hairpin-nat-v-routerah-mikrotik.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации