Ранее мы уже писали о том, как настроить роутер MikroTik. В нашей очередной инструкции мы постарались ответить на вопрос – как пробросить порты на роутере MikroTik.
Любую сеть можно схематично представить в таком виде:
Схема 1 – Схематичное отображение типовой сети
Посмотрим немного подробнее, на примере роутера MikroTik RB951-2nb – у него 5 портов, плюс модуль WiFi.
Подключаемся через web-интерфейс или Winbox’ом к роутеру(по умолчанию логин admin, без пароля), заходим в список интерфейсов, это второй пункт в меню, Interfaces.
Тут мы видим все интерфейсы, доступные нашему роутеру (интерфейс — это, грубо говоря, канал связи роутера с другим компьютером/компьютерами)
- Первым идёт bridge-local — «локальный мост». В данном случае он служит для установки моста между локальной сетью и беспроводными подключениями по WiFi (В Микротике для соединения вместе нескольких интерфейсов можно или объединить их в свитч, или соединить мостом (бриджем).
- Далее, ether1-gateway. Ether1 — это первый RJ45-разъем на лицевой панели роутера. По умолчанию считается, что в него воткнут кабель с интернетом от провайдера. Поэтому он называется Gateway — «Ворота» (в принципе, это не обязательно должен быть первый порт, при желании можно назначить gateway’ем любой другой порт, и даже несколько портов одновременно при наличии подключений от нескольких провайдеров).
- Затем идут 4 порта локальной сети. Они объединены в свитч, начиная со второго RJ45-разъёма, он называется ether2-master-local, остальные 3 — называются slave-local. Тут логика простая: в параметрах портов 3, 4 и 5 прописано, что главным у них является порт №2 — соответственно, все четыре порта автоматически объединяются в виртуальный свитч. А этот виртуальный свитч внутренней сети объединен с беспроводной сетью посредством бриджа из первой строки.
- Между внешним интернетом и внутренней сетью находится NAT — Network Address Translation, дословно «Трансляция сетевых адресов». Механизм, позволяющий компьютерам, находящимся в локальной сети, иметь внутренние адреса своей сети, и при этом нормально общаться со всеми другими компьютерами и серверами в интернете (при этом для внешнего сервера все компьютеры внутри сети представляются одним адресом — внешним адресом роутера). Вкратце, это работает таким образом: при обращении из внутренней сети куда-нибудь в интернет, роутер подменяет внутренний адрес компьютера своим адресом, принимает ответ от сервера в интернете, и переадресовывает на локальный адрес компьютера, сделавшего исходный запрос. Это называется Masquerade — «Маскарад»: данные от машины в локальной сети как-бы «надевают маску» и для внешнего сервера это выглядит так, будто они исходят от самого роутера.
- Точно так же, при подключении из внешней сети, нам нужно где-то задать правило, какой именно компьютер в локальной сети должен отвечать на попытки подключиться к какому-то порту на роутере.
Пример – мы хотим, чтобы при подключении к нашей сети роутера на порты 110 и 51413 — подключение переадресовывалось на компьютер PC1, а при подключении к порту 3189 — на машину PC2. Для этого и нужен NAT.
Схема 2 – Пример распределения подключения к сети
В Микротике управление 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К в окошке ввода комментария и ОК в окне ввода правила:
Правило создано, всё работает.
Обратите внимание — дополнительно «открывать» порт не требуется!