Что выполняет функция masquerade

Что такое NAT, маскарад (masquerade) и проброс портов?

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

Желаете узнать что за магия творится в тех коробочках с огоньками, подключенных провайдером и как работает Интернет у вас дома или в офисе? Или просто, наконец, решили научиться самостоятельно настраивать роутер, но совершенно не ясно что скрывается за словами NAT, маскарад (Masquerade) или проброс портов? Тогда давайте разбираться.

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

Все устройства находящиеся в локальной сети (компьютеры, ноутбуки, планшеты, смартфоны) имеют собственные внутренние IP адреса. Чтобы все они одновременно и независимо друг от друга могли выходить в Интернет используя одно подключение придуман специальный механизм NAT (Network Address Translation), дословно «трансляция сетевых адресов».

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

С какого бы компьютера или устройства изнутри вы не выходили в глобальную сеть, сервера в Интернете будут видеть только внешний адрес вашего роутера, но не ваш внутренний адрес в локальной сети. Процесс подмены роутером внутренних адресов устройств на свой собственный называется «маскарадом» (masquerade). Роутер запоминает от какого устройства и куда шёл запрос и возвращает полученный ответ отправителю.

Когда возникает необходимость в подключении из внешней сети к какому-то внутреннему сетевому ресурсу (например вы находитесь за границей и хотите подключиться к системе видеонаблюдения у себя дома или в офисе), то вы подключаетесь к своему роутеру, на котором заранее создано специальное правило, переправляющее ваш запрос на требуемый ресурс внутри сети. Вот так мы и подобрались к теме проброса портов, осталось только выяснить что такое порт?

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

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

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

Источник

Маскарадинг для начинающих

В статье об SNMP было упомянуто понятие маскарадинга. После данной статьи
в мой ящик приходили письма и вопросы о том, что
предcтавляет собой маскарадинг. Здесь я попытаюсь объяснить данное понятие на простых примерах.

Хотя я еще не объяснил, что такое маскарадинг, я начну с того, что вам
надо, чтобы использовать маскарадинг. Итак, вам нужно:

Теперь, когда мы определились с необходимым оборудованием, можно
приступить к объяснению понятия маскарадинга.

=>Я 1.2.3.4 я хочу установить соединение с 1.2.3.3
->Я 1.2.3.3 вы ко мне обращались?
=>Я 1.2.3.4 я к вам обращался.
->Я 1.2.3.3 готов
=>Я 1.2.3.4 и мне нужен этот файл
->Я 1.2.3.3 посылаю первую часть к 1.2.3.4
=>Я 1.2.3.4 получил ее
->Я 1.2.3.3 посылаю вторую часть к 1.2.3.4
=>Я 1.2.3.4 не получил ничего
->Я 1.2.3.3 посылаю еще раз
=>Я 1.2.3.4 получил ее
->Я 1.2.3.3 ожидаю
=>Я 1.2.3.4 готов, до свидания
->Я 1.2.3.3 до свидания

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

У нас есть компьютер, с локальным адресом 10.0.0.1, подключенный к
Интернет через телефонное соединение, который получил у своего провайдера
адрес 11.1.1.4. Если кто-то пытается достичь 11.1.1.4, то они получат
ответ, но при попытке установить соединение с 10.0.0.1, они не получат
ответ, хотя это один и тот же компьютер, но 10.0.0.1 не узнаваем в сети
Интернет. Еще есть 10.0.0.2, подключенный к 10.0.0.1. В этом случае
10.0.0.1 является гейтвеем (gateway), своего рода выход в другую сеть.

=> Я 10.0.0.2 хочу установить соединение с 1.2.3.3
-> Я 1.2.3.3 но у меня нет представления как тебя найти (конечно, это
сообщение не передается, т.к. нет логического пути между этими двумя
компьютерами, в данном случае остается лишь запись в логах).

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

=>Я 10.0.0.2 хочу установить соединение с 1.2.3.3
->Я 10.0.0.1 продолжу процесс запроса к 1.2.3.3
->Я 11.1.1.4 хочу установить соединение с 1.2.3.3
_>Я 1.2.3.3 ожидаю ваших дальнейших команд

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

Подготовка компьютера

Я думаю у вас стоит компьютер с установленной ОС Линукс и существует
учетная запись для подключения к Интернет. Для использования маскарадинга
предпочтительно использовать ядро 2.2.х, т.к. более старые версии ядра
могут содержать ошибки, не поддерживать ваше оборудование и быть
подвержены уязвимостям. Последние версии ядер можно скачать с
ftp://ftp.kernel.org/. Существуют более полные документы по компиляции ядра, здесь же я укажу
лишь основные шаги. Допустим, вы скачали новую версию ядра
newkernel.tar.gz

$ mv newkernel.tar.gz /usr/src
$ cd /usr/src
$ rm linux (удаляем символьную ссылку на старые исходники)
$ tar zxvf newkernel.tar.gz (ядро извлекается в папку linux)
$ cd linux
# make menuconfig

Можно выбрать: mak config для текстового режима, make manuconfig для
графического режима, make xconfig под Х режимом. Для включения функции маскарадинга нужно ответить YES в следующих опциях:

> Prompt for development and or incomplete code / drivers
>Enable loadable module support
>Networking support
>Network firewalls
>TCP/IP Networking
>IP:forwarding/gatewaying
>IP:firewalling
>IP:masquerading
>IP:ipportfw masq support
>IP:ipautofw masq support
>IP:ICMP masquerading
>IP:always defragment
>Dummy net driver support
>IP:ip fwmark masq-forwarding support

Далее следует процесс компиляции, зависящий от скорости компьютера.

# make dep
# make clean
# make bzImage
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/kernel
# make modules
# make modules_install

После этого следует отредактировать файл /etc/lilo.conf. Нужно добавить
что-то типа этого:

image=/boot/kernel
label=masqkernel
root=/dev/hdaX (заменить на вашу root файловую систему, раздел)
read-only

Эти изменения в файле позволят менеджеру загрузки найти новое ядро при
загрузке. В следующий раз при lilo-приглашении напечатайте masqkernel.

/sbin/lilo
added linux-2.2.5-15 *
added dos
added masqkernel

Теперь необходимо отредактировать /etc/rc.d/rc.local, чтобы необходимые
модули загружались при старте.

Эти модули необходимы для ftp, real audio и irc. Остался последний шаг
перед перезагрузкой, это активация форвардинга (forwarding).

Источник

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

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

Основы iptables для начинающих. Часть 3. Таблица nat

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeВ качестве продолжения нашего цикла о брандмауэре iptables мы рассмотрим таблицу nat, в которой происходит преобразование сетевых адресов. С этой таблицей, также, как и с filter вы будете часто встречаться, выполняя такие привычные и повседневные задачи, как выход в интернет, проброс портов или перенаправление трафика. При этом действие механизма NAT более сложное и требует более глубокого понимания происходящих процессов, поэтому советуем уделить внимание в первую очередь теоретической части.

Сразу с этого места сделаем небольшое отступление, потому как с понятием «пакет» существует изрядная путаница, которая может приводить начинающих в некоторое замешательство. Начнем с того, что понятие пакет применимо только к протоколу IP сетевого уровня (L3). Пакет состоит из заголовка и полезной нагрузки. Заголовок, вместе с иной служебной информацией, содержит два важных поля: адрес отправителя (SRC IP) и адрес получателя (DST IP). Полезной нагрузкой IP-пакета является один из протоколов транспортного уровня (L4): TCP, UDP, GRE и т.д.

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeСледует четко запомнить: IP-заголовок содержит только адрес отправителя и адрес получателя, понятие порт в протоколе IP отсутствует. Порт появляется в заголовках транспортного протокола L4 (TCP, UDP), но информация об адресах источника и назначения там отсутствует. Но как быть, если где-то говорят о пакете на порт TCP 80? Это выражение следует понимать, как IP-пакет с полезной нагрузкой в виде TCP-сегмента с портом назначения 80. Также следует помнить, что у каждого транспортного протокола свой набор портов и одни и те же порты могут быть использованы одновременно с разными протоколами.

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

Существует несколько видов NAT:

Далее мы будем говорить именно о перегруженном NAT (NAPT, NAT Overload, PAT, маскарадинг), потому что в большинстве реализаций используется именно он, также следует отметить, что PAT (Port Address Translation, Трансляция порт-адрес) требует обязательного наличия открытого порта, что может вызвать проблемы с прохождением NAT для транспортных протоколов не использующих порты, например, GRE.

Вернемся к iptables, функции NAT реализованы в одноименной таблице nat (все таблицы обозначаются строчными буквами), которая содержит цепочки PREROUTING, POSTROUTING и OUTPUT. В первые две цепочки попадает весь трафик узла, в последнюю только собственный исходящий.

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeОбратите внимание, что все преобразования NAT выполняются либо до, либо после принятия решения о маршрутизации и фильтрации трафика брандмауэром, этот момент следует учитывать при построении правил фильтрации.

В таблице nat доступно два основных действия:

Что делает SNAT? Он заменяет адрес источника пакета внешним адресом, также, при необходимости, меняет и порт источника, что позволяет различать запросы, сделанные с одного и того же порта разных ПК, запись о выполненной трансляции заносится в специальную таблицу трансляций (она же таблица NAT). Получив ответ роутер находит запись в таблице трансляций и на ее основании изменяет адрес и порт назначения ответного пакета, после чего он прозрачно доставляется адресату в локальной сети.

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeВ общем виде запись в iptables для SNAT будет выглядеть следующим образом:

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

Также мы можем выполнять трансляцию адресов не для всего трафика, а выборочно, указывая необходимые порты и протоколы, скажем только для SSH:

Частным случаем SNAT является действие MASQUERADE (маскарадинг), его основным отличием является то, маскарадинг самостоятельно получает IP-адрес от заданного сетевого интерфейса и не требует его явного указания. Это удобно если на внешнем интерфейсе используется динамический IP-адрес. Вторая особенность MASQUERADE в том, что при остановке интерфейса таблица трансляций полностью очищается и все текущие соединения разрываются. Причина такого поведения в том, что при следующем запуске интерфейса имеется возможность получить новый IP-адрес и все текущие записи сразу окажутся неверны.

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

Маскарадинг, также, как и SNAT, можно использовать только в цепочке POSTROUTING, и типичная запись будет выглядеть так:

Данное правило изменит адрес назначения всех пакетов пришедших на внешний интерфейс ens33 по протоколу tcp с портом назначения TCP-сегмента 3389 на адрес внутреннего сервера 192.168.100.1. Изменение номера порта при этом не производится. Если же вы используете нестандартный порт, то правило будет выглядеть несколько иначе:

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

Узел назначения видит, что ему пришел пакет от удаленного узла XXX.XXX.XXX.XXX и он формирует ответный пакет с этим адресом в качестве назначения, а в качестве источника подставляет собственный адрес. Так как удаленный узел не принадлежит локальной сети данный пакет будет направлен основному шлюзу, т.е. назад нашему роутеру. А так как на шлюзе в любом случае включен либо SNAT, либо MASQUERADE, то локальный адрес источника будет заменен адресом внешнего интерфейса и такой пакет будет отправлен назад удаленному узлу.

Частным случаем DNAT является REDIRECT, это действие позволяет перенаправлять пакеты на другой порт текущего узла. Это удобно при прозрачном проксировании, либо перенаправлении трафика. Например, перехватим все DNS-запросы и направим их локальному DNS-серверу, развернутому на этом же узле:

А следующее правило выполнит прозрачное проксирование HTTP-трафика, не предназначенного узлу на развернутый на нем прокси-сервер:

Мы же перейдем к не менее интересной теме последующего движения пакетов. Давайте еще раз внимательно изучим схему выше. Действие DNAT в цепочке PREROUTING выполняется до решения о маршрутизации, а, следовательно, пакеты могут претерпевать «чудесные превращения». Непонимание этого момента приводит ко многим грубым ошибкам в настройке брандмауэра и неработоспособным конфигурациям.

Допустим у нас с внешнего адреса 198.51.100.1 и порта 3390 сделан проброс на внутренний адрес 192.168.100.1 и порт 3389, но нормально закрытый брандмауэр блокирует подключения. Что нам нужно сделать? Правильно, открыть порт. Если долго не думать, то вырисовывается такой набор правил:

На первый взгляд все правильно: мы «открыли» порт 3390 для внешних подключений, а затем перенаправили соединения с него на внутренний узел. Однако это грубая ошибка. Почему? Давайте разбираться.

И снова схема движения пакетов! Так, что мы видим? А видим мы то, что пакет первым делом попадает в цепочку PREROUTING таблицы nat и именно здесь у него будут изменены адрес и порт назначения. После чего пакет из локального, предназначенного данному узлу, превратится в транзитный и вместо цепочки INPUT таблицы filter пойдет в цепочку FORWARD и приведенное выше правило никогда не сработает.

А как будет правильно?

Аналогично, действие REDIRECT превращает транзитные пакеты в локальные и при возникновении такой необходимости фильтровать мы их должны уже не в цепочке FORWARD, а в INPUT.

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

Дополнительные материалы:

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

Или подпишись на наш Телеграм-канал: Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

Источник

Mikrotik настройка nat masquerade

Сначала хочу отметить, что без создания правила NAT интернеты пользователи за роутером не получат, поэтому оно является обязательным.
Команда в терминале будет выглядеть следующим образом:

где WAN_Interface — это интерфейс на который приходит линк от провайдера, например, ether1 или sfp1. По этому принципу для PPPoE/L2TP-соединений будет указываться название соответствующего PPP-интерфейса. Данной настройки достаточно, чтобы интернет заработал.
В GUI Winbox’a настройка будет производиться в пункте меню IP > Firewall > NAT.

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

Простая настройка NAT

После подключения к роутеру открываем вкладку NAT меню ip-firewall, нажимаем кнопку добавить новое правило(красный крестик)

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

В открывшемся окне, вкладка General заполняем минимально необходимые поля

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

Chain-канал приемник, нам нужно принимать из локальной сети, поэтому выбираем srcnat

Out.Interface – Внешний интерфейс маршрутизатора, тот которым он смотрит в интернет

Далее открываем вкладку Action

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

В поле Action выбираем masquerade(Маскарад). Теперь будет происходить подмена локальных ip, адресом предоставленный провайдером. Минимальная настройка НАТ на Mikrotik закончена. Рассмотрим более сложную настройку NAT на Микротик.

Настройка NAT для нескольких внешних ip

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

Указываем в 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 address 1.1.1.1, 2.2.2.2 и целая сеть 3.3.3.3/24 как показано на рисунке

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

Нам нужно настроить выход для разных локальных компьютеров с внешних ip 1.1.1.1, 2.2.2.2 3.3.3.3 и 3.3.3.4.

Рассмотрим настройки на примере интерфейса с ip 3.3.3.4, все остальные будут идентичны

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

На вкладке General указываем только Src.Address, сеть или local с которого будут идти пакеты. Далее на вкладке Action делаем следующие настройки

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

В поле 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 — если пакет соответствует правилу, увеличьте счетчик и перейдите к следующему правилу (полезно для статистики).

passthrough — заменяет порт назначения IP-пакета на один, заданный параметром-портом-портом и адресом назначения на один из локальных адресов маршрутизатора

return — передает управление обратно в цепочку, откуда произошел прыжок

same — дает конкретному клиенту один и тот же IP-адрес источника / получателя из заданного диапазона для каждого соединения. Это чаще всего используется для служб, ожидающих одного и того же адреса клиента для нескольких подключений от одного и того же клиента

src-nat — заменяет исходный адрес IP-пакета на значения, заданные параметрами to-addresses и to-ports

Если нужно настроить проброс портов из интернета на ресурсы локальной сети, то как это сделать подробно описано здесь

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

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

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

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

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

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

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

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

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

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

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

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

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

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

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

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

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

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeКак видим, все прекрасно работает.

Hairpin NAT

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeПочему так происходит? Давайте рассмотрим еще одну схему:

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

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

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

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masquerade

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

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeЧерез терминал данное правило можно создать следующим образом:

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

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

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

Что выполняет функция masquerade. Смотреть фото Что выполняет функция masquerade. Смотреть картинку Что выполняет функция masquerade. Картинка про Что выполняет функция masquerade. Фото Что выполняет функция masqueradeЕсли вы нигде не допустили ошибок — все будет работать, как и предполагалось.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *