Mikrotik NAT Hairpin — доступ из своей локальной сети
Настроив проброс порта с внешнего интерфейса микротика в локальную сеть (например, веб-сервер пробросили), все здорово, если обращаться к опубликованному ресурсу снаружи сети. Но если попробовать открыть этот же ресурс из той же локальной сети, то сайт не откротся. Как так? Вы же даже не где-то, вы с веб-сервером в одной локальной сети! Почему не работает?
Схема:
— 1.2.3.4 [MIKROTIK] 192.168.88.1 — LAN (вы — пусть 192.168.88.115, веб-сервер: 192.168.88.100).
Правило DST-nat для доступа к веб-серверу снаружи:
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=1.2.3.4 dst-port=443 \
protocol=tcp to-addresses=192.168.88.100 to-ports=443
Все ок, схема работает снаружи сети.
Но если, находясь в одной локальной сети с веб-сервером (192.168.88.0/24), вы попробуете открыть сайт, то ничего не выйдет. Счетчики пакетов даже будут немного увеличиваться. Но страницу сайта вы не увидите. Почему?
Схема прохождения пакетов:
а) клиент из интернет (условно, адрес удаленного клиента 5.5.5.5):
- клиент с IP 5.5.5.5 обращается на микротик (1.2.3.4) на порт 443.
- Микротик подменяет адрес назначения с 1.2.3.4 на 192.168.88.100 и отправляет пакет дальше.
- Веб-сервер получает пакет с адреса 5.5.5.5 и отправляет ответ также на адрес 5.5.5.5.
- Микротик благополучно отправляет ответ сервера клиенту.
- Клиент видит сайт.
б) клиент из этой же локальной сети (условно, адрес клиента 192.168.88.115):
- клиент с IP 192.168.88.115 обращается на микротик (1.2.3.4) на порт 443.
- Микротик подменяет адрес назначения с 1.2.3.4 на 192.168.88.100 и отправляет пакет дальше.
- Веб-сервер получает пакет с адреса 192.168.88.115 и отправляет ответ также на адрес 192.168.88.115!
- Пакет идет напрямую вам (на 192.168.88.115)! Но ваш компьютер не ждет ничего от 192.168.88.100! Пакет отбрасывается!
- Клиент не видит сайт.
Решение:
/ip firewall nat
add action=dst-nat chain=dstnat dst-address=1.2.3.4 dst-port=443 \
protocol=tcp to-addresses=192.168.88.100 to-ports=443
add action=masquerade chain=srcnat dst-address=192.168.88.100 \
protocol=tcp dst-port=443 src-address=192.168.88.0/24
При этом (если клиент из этой же локальной сети, тот же 192.168.88.115):
- клиент с IP 192.168.88.115 обращается на микротик (1.2.3.4) на порт 443.
- (DST-NAT) Микротик подменяет адрес назначения с 1.2.3.4 на 192.168.88.100
- (SRC-NAT) Микротик подменяет адрес источника (src) c 192.168.88.115 на свой: 192.168.88.1 и отправляет пакет веб-серверу.
- Веб-сервер получает запрос с адреса 192.168.88.1 и отвечает ему же.
- Микротик получает ответ от веб-сервера, делает обратные преобразования адреса, и отправляет ответ клиенту (192.168.88.115) от имени ответа с 1.2.3.4.
- Клиент видит сайт.
При этом правило srcnat работает только для тех клиентов, которые находятся в той же локальной сети.
Схема работы NAT:
Профит. Мы «починили» проброс портов. Теперь и из локалки и из внешнего мира все работает так, как надо.
Источник
Mikrotik Hairpin NAT. Локальный трафик через внешний IP + проброс порта
dimacbz
Moderator
Здравствуйте.
Представим ситуацию:
У вас в помещении стоит роутер Микротик со статическим белым (выделенным) IP и реализовано в данном помещении например Видеонаблюдение или что-либо ещё.
В примере настройки такие: порт 9786 от сервера Видеонаблюдения с локальным IP 192.168.0.114. И вы имеете статический белый (выделенный) IP 78.107.58.100(например).
Соответственно у вас IP и порт — другие.
Все манипуляции выполняются в разделе: IP -> Firewall -> NAT
Сначала сделаем проброс порта. Где «ether1» — это интерфейс с кабелем в «интернет».
Те же настройки проброса порта, только через Терминал:
Вы к примеру, чтоб смотреть на своём смартфоне удаленно, — вбили настройки и ваш статический белый (выделенный) IP. С сотовой сети или с другого места с интернетом всё показывает хорошо.
Но, как только вы находитесь в том же помещении и подключены к этой же локальной сети (WIFI) — ничего не работает.
В этом нам поможет настройка Hairpin NAT для микротика.
Приступаем к настройке. Выполняйте такие же настройки, заменяя на свои IP и порты.
Те же настройки, только через Терминал:
Источник
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Проброс портов и Hairpin NAT в роутерах Mikrotik
Проброс портов и Hairpin NAT в роутерах Mikrotik
Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор — официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Проброс портов
Проброс, он же форвардинг, портов — что это такое? Это технология, которая позволяет обращаться к узлам, находящимся за маршрутизатором путем перенаправления трафика для определенных портов с внешнего адреса маршрутизатора на внутренний адрес узла в локальной сети. Это становится возможным благодаря технологии NAT.
Давайте рассмотрим небольшую схему, которая поможет понять принцип действия проброса портов.
Маршрутизатор, получив такой пакет выполняет замену адреса назначения с собственного, на адрес веб-сервера, также, при необходимости, он может изменить и порт назначения. После чего пакет отправляется в локальную сеть и достигает веб-сервера. Данные о преобразовании заносятся в специальную таблицу трансляции NAT.
Нужно ли менять адрес отправителя? Нет, если маршрутизатор выступает основным шлюзом сети, а в подавляющем большинстве случаев это так. Веб-север обработает запрос, а так как он ничего не знает о сети получателя, то обратный пакет будет направлен шлюзу по умолчанию, т.е. назад нашему маршрутизатору.
Маршрутизатор на основании данных таблицы трансляции выполнит обратное преобразование, заменив на этот раз адрес источника с внутреннего адреса веб-сервера, на свой внешний адрес и отправит пакет запросившему его узлу.
На первый взгляд все понятно, поэтому перейдем к практике. В RouterOS в качестве сетевого фильтра используется iptables, поэтому далее мы будем оперировать его терминами. В таблице NAT используются две цепочки: PREROUTING — в которую попадают все пришедшие на маршрутизатор пакеты и POSTROUTING — через нее проходят все прошедшие через устройство пакеты. В PREROUTING нам доступно действие dst-nat (DNAT), которое позволяет изменить адрес назначения пакета, в POSTROUTING будут доступны src-nat (SNAT) и masquerade, которые позволяют изменить адрес источника пакета.
Мы не даром заостряем на этом особое внимание, так как непонимание процесса прохождения пакета по цепочкам сетевого фильтра способно привести к значительным затруднениям, когда вроде-бы все правила составлены верно, но ничего не работает.
Так для пакета от клиента к веб-серверу и обратно порядок прохождения цепочек будет следующим:
Обратите внимание, что пакет не попадает в цепочки 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 можно не переходить.
Из терминала это можно сделать командами:
Осталось только проверить работу наших правил, попробуем получить доступ к веб-серверу со внешнего узла:
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 — указываем внутренний адрес нашего маршрутизатора.
Во многих иных статьях для данного правила используется действие masquerade, давайте разберемся в чем разница. В первом приближении оба действия делают одно и тоже — изменяют адрес источника пакета, но src-nat работает только со статическими адресами, зато позволяет указать в качестве источника любой адрес, masquerade работает с динамическими адресами, но в качестве адреса источника может использовать только адрес того интерфейса, с которого уходит пакет. За счет того, что masquerade при каждом запросе определяет адрес интерфейса — это действие требует больше вычислительных ресурсов, нежели src-nat.
В нашем случае все адреса статические, поэтому использование src-nat здесь будет более уместно.
Правило создано, проверим его работу:
Подводя итог, можем сказать, что в пробросе портов нет ничего сложного, но только в том случае, если вы представляете в каком порядке и как обрабатываются пакеты, в противном случае даже такая элементарная задача способна превратиться в длительные мучения на ровном месте. Поэтому мы надеемся, что данный материал пригодится вам не только в практическом плане, но и позволит повысить собственный уровень знаний.
Освоить MikroTik вы можете с помощью онлайн-курса «Настройка оборудования MikroTik». В курсе изучаются все темы из официальной программы MTCNA. Автор — официальный тренер MikroTik. Материал подходит и тем, кто уже давно работает с оборудованием MikroTik, и тем, кто еще не держал его в руках. В состав входят 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.
Дополнительные материалы:
Mikrotik
The Dude
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Источник