Маршрутизаторы Mikrotik. Мелочи. Проброс порта.
В этой очень короткой статье познакомимся именно с принципом "попадания" извне на некое устройство в сети роутера.
Имеется вполне себе реальная задача. Есть маршрутизатор линейки CCR за которым висит ряд управляемых свичей. Мы хотим при обращении на определенный порт роутера переадресовываться на конкретный IP в сети для управления извне свичами не имеющими белых айпи и находящихся во внутренней сетке.
Данная настройка позволяет при обращении на определенный порт вроде 95.215.100.75:8890 попасть на хост за роутером. Рассмотрим настройки.
Идем в меню IP > Firewall > NAT и создаем там новое правило. Так выглядит настройка во вкладке General:

In. interface (входящий интерфейс) — это, грубо говоря, тот интерфейс, на котором «слушается» указанный порт. Если не указан этот параметр, то этот порт перестанет так же быть доступен из внутренней сети, даже несмотря на то, что цепочка у нас dstnat. Поэтому, выбираем тут интерфейс, через который мы подключены к интернету, в нашем случае — например,ether1-gateway или sfp1.
Out. interface (исходящий интерфейс) — интерфейс, к которому подключена та машина, на которую мы делаем переадресацию. Тут что-либо ставить не имеет смысла.
Указываем логику dstnat и IP назначения, которым будет адрес внешнего интерфейса маршрутизатора. Далее говорим по какому протоколу это будет работать (скорее всего это будет TCP) и какой порт мы задействуем.
И остается настроить вкладку 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 — соответственно, сам порт.
Ах да, вместо IP можно указать хостнейм нужной нам машины. Зачем это нужно? Хостнейм резолвится в IP, который ему выдает роутер. Но IP-то может меняться (при условии, что он не задан статически), а указание имени хоста избавит нас от данной проблемы.
Выбираем действие netmap и ссылаемся на нужный нам IP внутренней сети. Чтобы правило не перестало работать, IP должен быть статическим. Ну, и указываем, на какой порт долбиться. Собственно, вот и вся настройка.
Есть второй вариант реализации правила NAT для проброса порта, и будет выглядеть он следующим образом:

То есть всё также выбираем цепочку dstnat, указываем нужный протокол и порт назначения, а также интерфейс с которого мы ожидаем увидеть пакетики подпадающие под правило. Ну, а вкладка Action настраивается всё также.
Разница, как можно заметить, в том, что в первом рассматриваемом нами случае критерием для выбора пакетика будет destination address, который тождественен IP-адресу внешнего интерфейса роутера, а также нужный нам порт назначения. Во втором случае правило несколько более универсально, ведь его не придется редактировать в случае изменения внешнего айпишника - оно просто продолжит свою работу.
Схематическая картинка по теме.
Имеется вполне себе реальная задача. Есть маршрутизатор линейки CCR за которым висит ряд управляемых свичей. Мы хотим при обращении на определенный порт роутера переадресовываться на конкретный IP в сети для управления извне свичами не имеющими белых айпи и находящихся во внутренней сетке.
Данная настройка позволяет при обращении на определенный порт вроде 95.215.100.75:8890 попасть на хост за роутером. Рассмотрим настройки.
Идем в меню IP > Firewall > NAT и создаем там новое правило. Так выглядит настройка во вкладке General:

Выбор у нас тут из двух вариантов: srcnat и dstnat. Для простоты понимания поясню, что чейн это что-то вроде направления потока данных. Srcnat - из внутренней сети во внешнюю, а dstnat - соответственно, из внешней во внутреннюю.
Тут логика простая, но тут всё зависит от выбранного направления Chain. Например, для подключения извне исходный адрес (source) будет адресом любого из хостов глобальной сети, а адресом назначение (destination) всегда будет внешний адрес роутера. Естественно, из всего этого указать имеет смысл разве что Dst.Address.
В поле протокол нужно указать тот, что интересует нас. В 90% случаев нас будет интересовать tcp(6). А указав его, нам становится доступным выбор Src.Port и Dst.Port. Напоминаю, мы все еще ведем объяснение приняв, что настраиваем именно dstnat!
Src. Port (исходящий порт) — это тот порт, из которого удалённая машина инициирует соединение с нашим роутером. Нам это абсолютно без разницы, тут ничего не ставим.
Dst. Port (порт назначения) — а это как раз тот порт, на который мы хотим принимать соединение. Это может быть, например, заданный в торрент-клиенте порт или порт для доступа к веб-интерфейсу какой-то железки за нашим маршрутизатором.
К слову, ниже идет интересный пункт Any. Port (любой порт) — так и есть, это объединение двух предыдущих пунктов, тут можно указать значение, которое будет работать и как исходный порт, так и как порт назначения. В целом, нам это не требуется.
Src. Port (исходящий порт) — это тот порт, из которого удалённая машина инициирует соединение с нашим роутером. Нам это абсолютно без разницы, тут ничего не ставим.
Dst. Port (порт назначения) — а это как раз тот порт, на который мы хотим принимать соединение. Это может быть, например, заданный в торрент-клиенте порт или порт для доступа к веб-интерфейсу какой-то железки за нашим маршрутизатором.
К слову, ниже идет интересный пункт Any. Port (любой порт) — так и есть, это объединение двух предыдущих пунктов, тут можно указать значение, которое будет работать и как исходный порт, так и как порт назначения. В целом, нам это не требуется.
In. interface (входящий интерфейс) — это, грубо говоря, тот интерфейс, на котором «слушается» указанный порт. Если не указан этот параметр, то этот порт перестанет так же быть доступен из внутренней сети, даже несмотря на то, что цепочка у нас dstnat. Поэтому, выбираем тут интерфейс, через который мы подключены к интернету, в нашем случае — например,ether1-gateway или sfp1.
Out. interface (исходящий интерфейс) — интерфейс, к которому подключена та машина, на которую мы делаем переадресацию. Тут что-либо ставить не имеет смысла.
Указываем логику dstnat и IP назначения, которым будет адрес внешнего интерфейса маршрутизатора. Далее говорим по какому протоколу это будет работать (скорее всего это будет TCP) и какой порт мы задействуем.
И остается настроить вкладку 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 — соответственно, сам порт.
Ах да, вместо IP можно указать хостнейм нужной нам машины. Зачем это нужно? Хостнейм резолвится в IP, который ему выдает роутер. Но IP-то может меняться (при условии, что он не задан статически), а указание имени хоста избавит нас от данной проблемы.
Выбираем действие netmap и ссылаемся на нужный нам IP внутренней сети. Чтобы правило не перестало работать, IP должен быть статическим. Ну, и указываем, на какой порт долбиться. Собственно, вот и вся настройка.
--------------------------------------
Есть второй вариант реализации правила NAT для проброса порта, и будет выглядеть он следующим образом:

То есть всё также выбираем цепочку dstnat, указываем нужный протокол и порт назначения, а также интерфейс с которого мы ожидаем увидеть пакетики подпадающие под правило. Ну, а вкладка Action настраивается всё также.
Разница, как можно заметить, в том, что в первом рассматриваемом нами случае критерием для выбора пакетика будет destination address, который тождественен IP-адресу внешнего интерфейса роутера, а также нужный нам порт назначения. Во втором случае правило несколько более универсально, ведь его не придется редактировать в случае изменения внешнего айпишника - оно просто продолжит свою работу.
- Jack Frost от
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.