Микротик переадресация портов - IT Новости из мира ПК
Semenalidery.com

IT Новости из мира ПК
74 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Микротик переадресация портов

Проброс портов на маршрутизаторе Микротик, проброс диапазона портов.

Для чего это нужно?

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

  • Удаленному рабочему столу по rdp
  • К локальному ftp или web серверу
  • Для доступа к ip камере
  • для доступа к видеорегистратору
  • Доступ к другим ресурсам, находящимся внутри сети.

Настройка проброса одного порта

Для начала подключитесь к Mikrotik через winbox. Затем перейдите на вкладку IP-Firewall-NAT

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

Chain-канал приемник, есть два параметра srcnat-из локальной сети в интернет и dstnat из интернета в локальную сеть. Нам нужно dstanat

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

Dst. Address— адрес назначения (всегда ip маршрутизатора).

Protocol Обязательное поле, указываем протокол работы, http, udp и т.д.

Src.Port Порт источника с которого идет запрос, для нас это не важно

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

Any.Port объединяет два предыдущего параметра, если здесь будет что то указано, то это скажет маршрутизатору что src и dst порт равен указанному.

In.Interface интерфейс на котором настроен внешний ip адрес Микротика

Out. Interface – интерфейс подключения компьютера, на который идет проброс, заполнять необязательно

Более тонкие настройки, которые редко используются

In.Interface List, Out. Interface List принимает значение all т.е. использовать любой интерфейс, в принципе то же самое, что если не заполнять поля In и Out Interface

Packet Mark, Connection Mark, Routing Mark Пробрасывать маркированные пакеты, маркировка происходит на вкладке firewall/mangle.

Connection Type Пакет относится к определенному типу соединения, включенному на закладке Firewall/Service Ports, sip, ftp и т.д.

Обратите внимание, что перед полем можно поставить восклицательный знак, это означает отрицание

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

После заполнения всех необходимых полей переходим на вкладку Action.

Action – действие которое нужно выполнить, в нашем случае это или dst-nat или netmap, отличие рассмотрим ниже, я ставлю netmap как более новый и улучшенный.

To Address – ip локального компьютера на который идет проброс

To Ports – Порт на котором работает сервис, например для rdp 3389, для ftp 21. Если dst port на вкладке general совпадает с данным параметром, то можно это поле не заполнять

После всех настроек нажимаем кнопку «ОК» И во вкладке NAT появится новое правило, если все сделано правильно, то все должно работать.

Проброс диапазона портов

Если на маршрутизаторе Микротик надо сделать проброс не один, а несколько портов на локальный компьютер, то в качестве Dst.Ports указываем эти значения через запятую.

В этом случае будут приниматься пакеты из диапазона 3389-3391

Можно использовать оператор отрицания

Здесь будут приниматься пакеты в диапазоне с 1 по 3388 и с 3392 по 65536

Если же данного инструмента нам недостаточно, например надо пробросить udp для asterisk в диапазоне с 10000 по 20000, что не совсем удобно сделать вышеуказанными способами, то на помощь нам придет маркировка пакетов, переходим на вкладку firewall-Mangle.

нажимаем на плюс добавить правило. И заполняем необходимые поля

Chain – цепочка, может принимать следующие параметры

PREROUTING — Маркирует пакет до принятия решения о маршрутизации.

INPUT — Маркирует пакет, предназначенный самому хосту.

FORWARD — Маркирует транзитные пакеты.

OUTPUT — Маркирует пакеты, исходящие от самого хоста.

POSTROUTING — Маркирует все исходящие пакеты, как сгенерированные самим хостом, так и транзитные.

Нам нужно промаркировать пакет до того как он будет обработан правилами роутера, выбираем prerouting

Все остальные поля идентичны полям из правила NAT, только в Dst.Port уже можно указать диапазон.

Затем переходим на вкладку Action

Action ставим маркировку пакетов, mark packet

New Packet Mark – название маркировки, вводим удобное имя.

После чего нажимаем кнопку «ОК»

Теперь переходим во вкладку NAT и добавляем новое правило

Выбираем только канал приемник Chain dstnat и пункт Packet Mark, который создали выше. Затем переходим на вкладку Action

Указываем действие netmap или dst-nat

To Adresses ip локального компьютера

Если хотим перенаправлять диапазон порт в порт, то поле To Ports не заполняем, если нужно перенаправлять с диапазона на один порт, то в To Ports указываем нужное значение.

Проброс всех портов и всех протоколов на локальный ip

Иногда нужно пробросить все порты и все протоколы на локальный ip, в этом случае нужно использовать netmap. По-простому, netmap это маршрутизация сеть в сеть. Работает так же как DMZ на домашних роутерах типа dlink или tplink.

Для настройки также заходим в NAT, Нажимаем добавить правило и заполняем поля как показано на рисунке

Выбираем только канал dstnat, после чего переходим на вкладку Action

Здесь Action ставим netmap и указываем адрес назначения

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

Обучающий курс по настройке MikroTik

Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Проброс портов в Mikrotik – инструкция по настройке

Многие начинающие микротиководы задают вопрос, как настроить в mikrotik проброс портов или по-другому перенаправление портов. В данной статье детально, на примерах опишу как настраивать это правильно и что делать, куда смотреть если проброс не работает. Для понимая этого материала вам нужны базовые знания работы NAT, строение ip пакета (то, что в нем есть адрес источника и отправителя) и TCP и UDP протоколы. Также потренироваться все это настраивать можно на эмуляторе eve-ng. Думаю, вы это все знаете, так что давайте начнем.

Читать еще:  Изменить свой ip адрес бесплатно

Перенаправление портов Mikrotik

Все настройки по прокидыванию портов делаются в разделе IP -> Firewall -> Nat. Ниже опишу все параметры и на примере пробросим RDP 3389 на сервер или компьютер.

Стрелочками показано в какой раздел заходить, нажимаем + и создадим новое правило NAT. Итак:

  • Chain – здесь выбираем что будем заменять в ip пакете (то есть адрес отправителя или получателя). Для нашего примера с RDP выбираем dstnat.
  • Src. Address – можем указать тут конкретный ip с которого нужно осуществлять проброс порта (то есть если здесь указать 2.45.34.77, то при работающем правиле проброс будет работать только при подключении с этого адреса). Нам этого не надо поэтому оставляем пустым.
  • Dst. Address – здесь указываем белый ip нашего роутера к которому будет подключаться по RDP а он в свою очередь будет натить на сервер. (Здесь имеет смыслю указывать ip если у вас несколько белых адресов на интерфейсе.) В нашем случае оставляем пустым.
  • Protocol – выбираем какой протокол будем пробрасывать (RDP работает по TCP протоколу и порту 3389). Очевидно, выбираем
  • Src. Port – Порт с которого будет подключения. Оставляем пустым, для нашего примера он не нужен.
  • Dst. Port – вот здесь указываем 3389 как писалось выше.
  • Any. Port – бываю случае порты src и dst одинаковые его можно вписать сюда, или когда нужно пробросить все TCP. (оставляем пустым)
  • In. Interface – входящий интерфейс микротика, указываем тот на котором висит белый ip. У меня этот.
  • Out. Interface – исходящий интерфейс, тут можно указать тот который смотрит в вашу локальную сеть а можно и ничего не указывать, тогда mikrotik сам выберет его по адресу подсети.
  • In. Interface list – тут указывается интерфейс лист. То есть, если у вас 2 и более каналов в интернет, их можно все объединить в interface list и указать тут. Тогда не надо будет для каждого провайдера делать правило проброса RDP.
  • Out. Interface List – тоже самое что и 10 пункт только исходящий.

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

Теперь переходим на вкладку Action на которой мы скажем роутеру что делать с полученным пакетом и куда его отправлять.

Здесь настраиваем так:

  • Action – действие которое mikrotik должен произвести, выбираем dst-nat, так как нам надо запрос приходящий на белый ip с портом 3389 перенаправить на адрес из серой сети.
  • Галочка Log будет писать все nat трансляции в лог файл – этого делать не стоит.
  • Log Prefix – будет добавлять в лог в начало строки произвольные символы которые тут напишете.
  • To Addresses – люда вписываем ip сервера (серый) на который нужно настроить перенаправление портов на mikrotik.
  • To Ports – ну и TCP порт на который пересылать.

Вот так просто настраивается проброс портов на mikrotik, дальше приведу еще несколько примеров для различных сервисов.

Проброс 80 порта на mikrotik

Бывают ситуации, когда у вас в сети есть веб-сервер с каким-либо сайтом работающем на 80 порту, его можно пробросить точно также как было показано для порта RDP 3389 но лучше сделать по другому.

Как видно из скрина выше и ниже, мы делаем dstnat tcp подключений, приходящих на порт 8080 с интерфейса ether1, на ip 192.168.13.100 порт 80.

Таким образом можно пробросить 80 порт много раз, только подключаться из вне придется указывая явно порт, например http://2.34.67.8:8080.

Открыть порт на микротик

Чтобы открыть порт на mikrotik вам нужно перейти в раздел firewall и там явно создать разрешающие правило для этого порта. Отмечу что если у вас раздел IP-> Firewall->Filter Rules пуст как на картинке ниже, то это значит что все порты у вас открыты по умолчанию, так как нет запрещающих правил. И лучше бы вам его настроить ото будут ломать пока не взломают.

Как настроить Firewall поговорим в одной из следующих статей, а пока идем дальше. Чтобы закрыть или открыть сервисные порты в микротике, такие как доступ по ssh, windox, http или же поменять их на нестандартные, нужно перейти в раздел IP-> Services

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

89 вопросов по настройке MikroTik

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

Проброс портов на MikroTik

Итак, допустим нам требуется переадресовать запросы к UDP порту 1194 на внутренний OpenVPN сервер. Управление переадресацией (пробросом портов) в MikroTik находится в разделе IP->Firewall->NAT. О том, что такое NAT, маскарад (masquerade) и проброс портов я уже рассказывал чуть ранее в блоге, сегодня будет практика.

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

Для создания нового правила нажимаем кнопку «Add New» и настраиваем требуемые поля:

Chain (Цепочка). Определяет направление передачи данных — srcnat (из внутренней сети во внешнюю) или dstnat (из внешней сети во внутреннюю). В нашем случае выбираем dstnat.

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

Protocol (протокол). Обязательное для заполнения поле, иначе мы не сможем указать номер порта. В моём примере тут будет udp.

Src. Port (исходящий порт), с которого удалённая машина инициирует соединение с нашим роутером. Нам это абсолютно без разницы, потому пропускаем.

Dst. Port (порт назначения) — а это как раз тот порт, на который мы хотим принимать соединение, опять же из примера это будет 1194.

Any. Port (любой порт) — тут можно указать значение, которое будет работать и как исходный порт и как порт назначения. Никогда не пользовался.

Читать еще:  Как отменить переадресацию на телефоне

In. interface (входящий интерфейс) — интерфейс, который «слушает» указанный порт. В нашем случае мы принимаем соединения из интернет на wan интерфейсе.

Out. interface (исходящий интерфейс) — интерфейс, к которому подключен наш OpenVPN сервер и куда мы делаем переадресацию. Что-либо прописывать тут тоже не имеет смысла.

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

Action (действие), которое следует выполнить после подключения на указанный порт:

  • accept — просто принять пакет;
  • add-dst-to-address-list — добавить адрес назначения в указанный список адресов;
  • add-src-to-address-list — аналогично предыдущему, но для исходного адреса;
  • dst-nat — перенаправить данные, пришедшие из внешней сети, во внутреннюю;
  • jump — перейти к правилам из другой цепочки;
  • log — записать информацию о пакете в лог роутера;
  • masquerade — подмена внутренних адресов локальной сети на адрес роутера «маскарад»;
  • netmap — несколько улучшенный вариант dst-nat;
  • passthrough — пропустить текущий пункт правил и перейти к следующему (используется в основном для статистики);
  • redirect — перенаправляет данные на другой порт в пределах роутера;
  • return — возвращает управление, если в цепочку выполнялся прыжок правилом jump;
  • same — применяется в очень редких случаях, когда нужно применять одни и те-же правила для группы адресов;
  • src-nat — перенаправление данных из внутренней сети во внешнюю, обратная операция dst-nat.

Для проброса портов снаружи подходят действия dst-nat и netmap, в принципе можно использовать любое.

В поля To Addresses и To Ports прописываем адрес и порт OpenVPN-сервера, куда будут переадресовываться запросы.

Кнопкой «Apply», применяем настройки. Правило создано и всё должно работать.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Для начинающих:Проброс портов

Содержание

Что это?

Проброс портов это технология, позволяющая получать доступ к устройствам в локальной сети из-вне. Это происходит за счет правила, которое работает по условию: если пришел запрос на порт Х (входящий порт), то надо перенаправить трафик на порт Y (исходящий порт) устройства с IP-адресом Z. При этом входящий порт (X) и исходящий порт (Y) могут, как быть одинаковыми, так и различаться.

Для чего нужно?

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

Настройка

Для примера мы пробросим 80 порт, он обычно нужен если вы решили разместить у себя в локальной сети веб-сервер с вашим веб-проектом.

В нашем примере: внешний порт маршрутизатора (ether5-WAN1) с адресом 10.1.100.1, внутренний адрес компьютера на котором веб-сервер 192.168.15.15.

Через графический интерфейс

Для того, чтобы пробросить порты надо в меню выбрать IP => Firewall и далее вкладку «NAT». Нажать значок + для добавления нового правила. Далее необходимо выполнить следующие настройки:

  • Вкладка General:
  1. Chain: dstnat
  2. Protocol: указать протокол 6 (tcp)
  3. Dst. Port: указать порт входящего соединения.
  4. In. Interface: выбрать интерфейс входящего соединения

Важно указывать входящий интерфейс, так как в противном случае маршрутизатор может перенаправить трафик с другого интерфейса по создаваемому нами правилу и это может привести к проблемам. Если в приведенном нами примере не указать входящий интерфейс, то в случае попытки из локальной сети открыть сайт по http:// маршрутизатор перенаправит поток на внутренний сервер с адресом 192.168.15.15.
Так же обратите внимание что для других задач, нужно будет указывать другой протокол (к примеру udp) — поэтому вы должны выяснить какие порты и с какими протоколами требуют проброса для вашей задачи (приложения).

  • Вкладка Action:
  1. Action: dst-nat
  2. To Addresses: указать адрес на который надо выполнить проброс
  3. To Ports: указать порт на который надо выполнить проброс

Через консоль

Если в качестве входящего порта надо использовать порт, отличный от оригинального. Например, из-вне надо получить доступ по порту 8080, а веб-сервер при этом работает по 80-му порту, то надо соответствующим образом изменить параметр «Destination Port». Dst. Port: в графическом интерфейсе или dst-port в консоли.

Проверка

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

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Проброс портов и Hairpin NAT в роутерах Mikrotik

Проброс портов и Hairpin NAT в роутерах Mikrotik

  • Автор: Уваров А.С.
  • 08.07.2019

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

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

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

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

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

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

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

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

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

Читать еще:  Как поменять локальный ip адрес

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

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

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

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

На закладке Action укажите: Action — dst-nat — выполняем замену адреса получателя, 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 можно не переходить.

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

Обратите внимание, что если вы пробрасываете порт с изменением номера, скажем внутренний 3389 (RDP) на внешний 3390, то в правиле брандмауэра вы всегда должны указывать внутренний порт, т.е. 3389, так как пакет уже прошел цепочку PREROUTING и данные о получателе в нем уже изменены на адрес и порт внутреннего сервера.

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

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

Как видим, все прекрасно работает.

Hairpin NAT

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

Почему так происходит? Давайте рассмотрим еще одну схему:

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

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

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

Теперь наш маршрутизатор не только изменяет адрес назначения, но и адрес источника, указывая в его качестве собственный внутренний 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 — протокол и порт.

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

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

Через терминал данное правило можно создать следующим образом:

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

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

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

Если вы нигде не допустили ошибок — все будет работать, как и предполагалось.

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

Ссылка на основную публикацию
Adblock
detector