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

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


Всё, нажимаем OК в окошке ввода комментария и ОК в окне ввода правила:


Правило создано, всё работает.

Обратите внимание — дополнительно «открывать» порт не требуется!