Проброс порта в микротик командой. Как сделать проброс портов в Mikrotik? Проброс портов ("Микротик"): описание, инструкция, рекомендации

Необходимость настройки проброса портов (Port Forwarding) на роутерах MikroTik встречается довольно часто. Но даже для опытного администратора конфигурирование микротиковских маршрутизаторов может показаться сложным, тем более для обычного пользователя. Хотя как раз за широкие функциональные возможности, наряду со стабильностью и надежностью работы, эти устройства и ценятся.

В сегодняшней статье мы постараемся дать как можно более понятную инструкцию по настройке проброса портов на примере роутера (изображен на картинке выше).

Для чего нужен проброс портов?

Для чего вообще вам может понадобиться такая настройка? Чаще всего Port Forwarding используется для:

  • организации игрового сервера на домашнем компьютере,
  • организации пиринговых (одноранговых) сетей,
  • для доступа к IP-камере из интернета,
  • корректной работы торрентов,
  • работы WEB и FTP-серверов.

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

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

Эта схема имеет одну особенность: роутер принимает только те пакеты данных, которые приходят по соединению, инициированному компьютером из внутренней сети. Если компьютер или сервер из внешней сети пытается установить соединение первым, роутер его сбрасывает. А для указанных выше пунктов (игровой сервер, пиринговые сети и т. п.) такое соединение должно быть разрешено. Вот для этого и применяется проброс портов. Фактически, это команда роутеру зарезервировать один порт и все данные извне, которые на него поступают, передавать на определенный компьютер. Т. е. сделать исключение из маскарадинга, прописав новое правило.

Настройка Port Forwarding в MikroTik

В MikroTik управление настройкой проброса портов находится в меню IP =>Firewall =>NAT.

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

Настройка вкладки General

Нажимаем плюсик и в появившемся окне заполняем несколько полей:

  • Chain - направление потока данных. В списке выбора - srcnat , что означает "изнутри наружу", т. е. из локальной сети во внешний мир, и dstnat - из внешней сети во внутреннюю. Мы выбираем второе, так как будем принимать входящие подключения.
  • Src. Address Dst. Address - внешний адрес, с которого будет инициироваться подключение, и адрес назначения (всегда адрес роутера). Оставляем незаполненным.
  • Protocol - здесь указываем вид протокола для нашего соединения, tcp или udp, заполняем обязательно.
  • Src. Port (исходящий порт) - порт удаленного компьютера, с которого будут отправляться данные, оставляем пустым, если для нас это неважно.
  • Dst. Port (порт назначения) - проставляем номер внешнего порта роутера, на который будут приходить данные от удаленной машины и переадресовываться на наш компьютер во внутренней сети.
  • Any. Port (любой порт) - если мы проставим здесь номер порта, то укажем роутеру, что этот порт будет использоваться и как исходящий, и как входящий (объединяя два предыдущие поля в одном).
  • In. interface (входящий интерфейс) - здесь указываем интерфейс роутера MikroTik, на котором используется, "слушается" этот порт. В нашем случае, так как мы делаем проброс для поступления данных извне, это интерфейс, через который роутер подключен к Интернет, по умолчанию это ether1-gateway . Параметр нужно указать обязательно, иначе порт не будет доступным из локальной сети. Если мы подключены к провайдеру через pppoe, то возможно, потребуется указать его, а не WAN-интерфейс.
  • Out. interface (исходящий интерфейс) - интерфейс подключения компьютера, для которого мы делаем проброс портов.

Настройка вкладки Action

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

  • accept — просто принимает данные;
  • add-dst-to-address-list — адрес назначения добавляется в список адресов;
  • add-src-to-address-list — исходящий адрес добавляется в соответствующий список адресов;
  • dst-nat — перенаправляет данные из внешней сети в локальную, внутреннюю;
  • jump — разрешает применение правила из другого канала, например при установленном в поле Chain значения srcnat — применить правило для dstnat ;
  • log — просто записывает информацию о данных в лог;
  • masquerade — маскарадинг: подмена внутреннего адреса компьютера или другого устройства из локальной сети на адрес маршрутизатора;
  • netmap — создает переадресацию одного набора адресов на другой, действует более расширенно, чем dst-nat ;
  • passthrough — этот пункт настройки правил пропускается и происходит переход сразу к следующему. Используется для статистики;
  • redirect — данные перенаправляются на другой порт этого же роутера;
  • return — если в этот канал мы попали по правилу jump, то это правило возвращает нас обратно;
  • same — редко используемая настройка один и тех же правил для группы адресов;
  • src-nat — переадресация пакетов из внутренней сети во внешнюю (обратное dst-nat перенаправление).

Для наших настроек подойдут варианты dst-nat и netmap. Выбираем последний, как более новый и улучшенный.


В поле To Adresses прописываем внутренний IP-адрес компьютера или устройства, на который роутер должен будет перенаправлять данные по правилу проброса портов.

В поле To Ports , соответственно, номер порта, к примеру:

  • 80/tcp — WEB сервер,
  • 22/tcp — SSH,
  • 1433/tcp — MS SQL Server,
  • 161/udp — snmp,
  • 23/tcp — telnet и так далее.

Если значения в поле Dst. Port предыдущей вкладки и в поле To Ports совпадают, то здесь его можно не указывать.

Таким образом, мы создали правило для проброса портов и доступа к внутреннему компьютеру (в локальной сети) из Интернет.

Если вам необходимо заходить по внешнему IP-адресу и из локальной сети, нужно настроить Hairpin NAT, об этом можно прочитать .

Сервер в кармане, или просто о сложном!

Настройка firewall Mikrotik

Разделы:

Вместо вступления

Итак, имеем роутер Mikrotik, например, очень популярный RB951G-2HnD.

Считаем, что внутренняя сеть осталась нетронутой (192.168.88.0/24), IP роутера 192.168.88.1, внешний интерфейс ether1-gateway.

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

Доступ к терминалу через WinBox

Огромное преимущество WinBox состоит в том, что даже если сетевой адаптер компьютера, с которого вы подключаетесь к Mikrotik, находится в другой подсети (ну, настройка у вас такая), то WinBox все равно сможет подключиться к роутеру - по mac. Если вы еще не установили WinBox, самое время это сделать! В браузере открываем веб-интерфейс роутера и находим почти в самом низу ссылочку WinBox.

Запускаем WinBox и выбираем New Terminal.

При вводе команд учтите, что внесенные изменения применяются сразу же, поэтому не заблокируйте сами себя. После ввода команд новые правила будут доступны для редактирования через WinBox или веб-интерфейс. Порядок правил имеет значение - выполняются сверху вниз. Где бы вы ни взяли сами команды, сначала посмотрите, что они делают!

Цепочка INPUT работает тогда, когда данные предназначены роутеру (его ip адресу). Когда мы что-то настраиваем для этой цепочки, мы в первую очередь защищаем сам роутер (ssh, telnet, веб-интерфес и др.) от взлома. Пожалуй, больше всего внимания требует именно эта цепочка. Общий принцип построения правил: явно запрещаем что-то (например, все новые соединения из интернета;)) или явно что-то разрешаем (например, удаленный ssh), остальное запрещаем.

Цепочка FORWARD работает тогда, когда данные проходят через роутер, например, когда ваш локальный компьютер хочет открыть сайт ya.ru. Всякие блокировки на этом этапе защищают вас, например, от того, что зараженный компьютер в вашей локальной сети начнет рассылать спам или учавствовать в DDOS. Т.е. каждый банк-клиент, IM-месенджер и куча другого софта требуют своих особых разрешений, то если вы не защищаете банк от хакеров, то мы просто запретим некоторые наиболее распространенные виды трафика, которые используются зараженными компьютерами. А так весь проходящий из локалки в интернет (но не наоборот!) мы разрешим.

Цепочка OUTPUT работает тогда, когда данные генерятся на самом роутере и идут наружу. Например, для запросов DNS. Эту цеопчку по сути нам нет смысла фильтровать. Почти.

Цепочка forward позволяет нам разрешать или не разрешать проходящий трафик, а вот за то, какой трафик и куда мы будем перенаправлять, отвечают цепочки SRCNAT и DSTNAT.

Цепочка SRCNAT (Source NAT) предназначена для трафика, условно названного "наружу". Изменяется адрес источника (source) на адрес внешнего интерфейса. Например, чтобы дать возможность клиентам локальной сети посещать сайты в интернет.

Цепочка DSTNAT (Destination NAT) определяет как будет проходить "входящий" трафик. Роутер изменит адрес назначения (destination). Например, можно сделать доступным из вне веб сервер, размещенный в локальной сети.

INPUT

Минимальный набор правил - сделать недоступным из вне внешний интерфейс роутера.

/ip firewall filter
add chain=input connection-state=invalid action=drop comment="drop invalid connections"
add chain=input connection-state=related action=accept comment="allow related connections"
add chain=input connection-state=established action=accept comment="allow established connections"
add chain=input action=drop comment="drop everything else" in-interface=ether1-gateway

где в последнем правиле мы запрещаем весь входящий трафик на внешнем интрфейсе. Не играйтесь настройками удаленно! Легко лишить себя доступа к роутеру.

NAT

IP -> Firewall - NAT. По-умолчанию, nat уже включен.Это правило "маскарадинга":

/ip firewall nat add chain=srcnat action=masquerade out-interface=ether1-gateway

Исходящий интерфейс (out-interface) всегда внешний, смотрящий и интернет (или просто в другую сеть, если у вас все непросто). В принципе, минимально этих правил nat и input уже достаточно. Учтите, что если у вас цепочка forward по-умолчанию блокирует все, что возможно, то надо добавить соответствующее правило:

/ip firewall filter add chain=forward out-interface=ether1-gateway

Примеры

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

Предположим, вам надо сделать доступным веб-сервер (tcp/80), запущенный на локальной машине с IP 192.168.88.22.

/ip firewall nat add action=dst-nat chain=dstnat dst-port=80 in-interface=ether1-gateway protocol=tcp to-addresses=192.168.88.22 to-ports=80

Все бы ничего, но скорее всего, у вас включен firewall, который режет все, что не соответствует политике партии. Тогда надо разрешить forward пакетов:

/ip firewall filter add chain=forward protocol=tcp dst-port=80 action=accept

Это правило надо переместить повыше, т.е. ближе к началу списка правил.

Перенаправление трафика, адресованного одному ip, на другой ip

Если вам надо все подключения на один ip-адрес переадресовать другому ip-адресу:

/ip firewall nat add action=netmap chain=dstnat protocol=tcp dst-address=192.168.88.3 to-addresses=192.168.4.200

Ждем и давим, как блох любителей чужого ssh

Если мы не используем ssh для работы с Mikrotik, то нам может быть мало просто отключить ssh в IP -> Services. Если мы не пользуемся ssh, значит, любая попытка коннекта по ssh - вражеская!

Следующее правило добавляет IP-адреса источников (action=add-src-to-address-list), которые подключаются к 22 порту, в список ssh_blacklist , на 60 минут. Само это правило ничего не блокирует, просто заносит в черную книжечку:

/ip firewall filter
add chain=input protocol=tcp dst-port=22 address-list=ssh_blacklist action=add-src-to-address-list address-list-timeout=60m comment="record ssh brute forcers" disabled=no log=yes log-prefix=" --- SSH ATTEMPT --- "

А вот теперь, имея на руках список хулиганов (ssh_blacklist), можно банить им либо только работу с ssh, либо вообще любые действия в сторону нашего микротика:

/ip firewall filter
add chain=input protocol=tcp src-address-list=ssh_blacklist action=drop comment="drop ssh brute forcers"

Правила по отлову и блокированию маньяков надо разместить выше последнего запрещающего правила, иначе ничего не сработает. А еще лучше, если у вас есть открытый VPN или другие сервисы на микроте - оба этих правила поставить самыми первыми, чтобы тех, кто пытался наш ssh открыть, отгородить вообще от всего на нашем роутере, по принципу - если кто-то в одном что-то замышляет, то и в другом он тоже пакость готовит. Главное - не перестараться! Вдруг вы сами случайно забудете об этом правиле и решите с работы посканить роутер nmap-ом, например.

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

Настройка с помощью скрипта

Вводить каждое правило firewall с консоли руками очень быстро может надоесть, к тому же готовый скрипт легко сохранить "на память". В открытом WinBox выбираем System -> Scripts. В текстовом редакторе готовим скрипт правил, копируем его и жмем Run Script. Потом можно что-то добавить по мелочи, что-то подправить, а может и опять скриптом все...

Приведу пример скрипта настройки firewall:

/ip firewall filter # INPUT add chain=input connection-state=invalid action=drop comment="drop invalid connections" add chain=input connection-state=related action=accept comment="allow related connections" add chain=input connection-state=established action=accept comment="allow established connections" # ext input # local input add chain=input src-address=192.168.88.0/24 action=accept in-interface=!ether1-gateway # drop all other input add chain=input action=drop comment="drop everything else" # OUTPUT add chain=output action=accept out-interface=ether1-gateway comment="accept everything to internet" add chain=output action=accept out-interface=!ether1-gateway comment="accept everything to non internet" add chain=output action=accept comment="accept everything" # FORWARD add chain=forward connection-state=invalid action=drop comment="drop invalid connections" add chain=forward connection-state=established action=accept comment="allow already established connections" add chain=forward connection-state=related action=accept comment="allow related connections" add chain=forward src-address=0.0.0.0/8 action=drop add chain=forward dst-address=0.0.0.0/8 action=drop add chain=forward src-address=127.0.0.0/8 action=drop add chain=forward dst-address=127.0.0.0/8 action=drop add chain=forward src-address=224.0.0.0/3 action=drop add chain=forward dst-address=224.0.0.0/3 action=drop # (1) jumping add chain=forward protocol=tcp action=jump jump-target=tcp add chain=forward protocol=udp action=jump jump-target=udp add chain=forward protocol=icmp action=jump jump-target=icmp # (3) accept forward from local to internet add chain=forward action=accept in-interface=!ether1-gateway out-interface=ether1-gateway comment="accept from local to internet" # (4) drop all other forward add chain=forward action=drop comment="drop everything else" # (2) deny some types common types add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP" add chain=tcp protocol=tcp dst-port=111 action=drop comment="deny RPC portmapper" add chain=tcp protocol=tcp dst-port=135 action=drop comment="deny RPC portmapper" add chain=tcp protocol=tcp dst-port=137-139 action=drop comment="deny NBT" add chain=tcp protocol=tcp dst-port=445 action=drop comment="deny cifs" add chain=tcp protocol=tcp dst-port=2049 action=drop comment="deny NFS" add chain=tcp protocol=tcp dst-port=12345-12346 action=drop comment="deny NetBus" add chain=tcp protocol=tcp dst-port=20034 action=drop comment="deny NetBus" add chain=tcp protocol=tcp dst-port=3133 action=drop comment="deny BackOriffice" add chain=tcp protocol=tcp dst-port=67-68 action=drop comment="deny DHCP" add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP" add chain=udp protocol=udp dst-port=111 action=drop comment="deny PRC portmapper" add chain=udp protocol=udp dst-port=135 action=drop comment="deny PRC portmapper" add chain=udp protocol=udp dst-port=137-139 action=drop comment="deny NBT" add chain=udp protocol=udp dst-port=2049 action=drop comment="deny NFS" add chain=udp protocol=udp dst-port=3133 action=drop comment="deny BackOriffice" add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment="echo reply" add chain=icmp protocol=icmp icmp-options=3:0 action=accept comment="net unreachable" add chain=icmp protocol=icmp icmp-options=3:1 action=accept comment="host unreachable" add chain=icmp protocol=icmp icmp-options=3:4 action=accept comment="host unreachable fragmentation required" add chain=icmp protocol=icmp icmp-options=4:0 action=accept comment="allow source quench" add chain=icmp protocol=icmp icmp-options=8:0 action=accept comment="allow echo request" add chain=icmp protocol=icmp icmp-options=11:0 action=accept comment="allow time exceed" add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment="allow parameter bad" add chain=icmp action=drop comment="deny all other types" # (5) drop all other forward add chain=forward action=drop comment="drop (2) everything else"

Обратите внимание: этот скрипт не привязан к внешнему IP или MAC или чему-то уникальному. Его можно брать и использовать. Если вы ничего не меняли в своем роутере и обновили до версии 6.* после покупки, вам на всякий случай следует проверить название внешнего интерфейса и убедиться, что внутренняя сеть 192.168.88.0/24. И все.

ether1-gateway - внешний интерфейс, первый по счету. Это его имя по-умолчанию. Остальные порты - внутренние.

В секции ext input ничего нет - мне не нужно, чтобы кто-то подключался к роутеру. Если вам необходим удаленный доступ к роутеру, скажем, по ssh, то впишите команду:

add chain=input protocol=tcp dst-port=22 action=accept in-interface=ether1-gateway comment="allow remote ssh"

В секции OUTPUT хватило бы и последней команды (add chain=output action=accept comment="accept everything"), но для интереса я немного разделил по исходящим интерфейсам. Теперь при беглом просмотре будет видно, есть ли вообще трафик от роутера, и если есть, куда он идет - наружу или в локалку. Скажем, увидим, что был трафик наружу, уточним правила по протоколам (tcp, udp, icmp). Если будет еще интереснее, можно будет поставить правило для логирования определенного вида трафика. Особо не увлекайтесь, все-таки роутер не имеет кучи места под логи. Да и лишний раз напрягать слабенький процессор тоже не очень.

Последнее правило (5) никогда не будет выполняться, я его добавил сюда специально, чтобы продемонстрировать работу jump. Последнее правило для цепочки forward будет (4) drop.

Т.е. предположим, мы запросили исходящее соединение с удаленным ssh-сервером (т.е. из локальной сети через через цепочку forward, протокол tcp, dst-port 22). Дойдя до блока (1) jumping, выполнится переход в (2) deny для tcp. Т.к. в цепочке tcp нет решения по поводу tcp/22, то выполнение вернется к (3), которое выполнит forward нашего пакета. Если наш пакет не удовлетворит требованиям (3), следующее за ним правило (4) блокирует его.

Наглядно это очень интересно смотреть, когда в окне Firewall видишь счетчик пакетов по правилам.

Если вы начали подозревать, что 100500 правок выполняют уже невесть что, просто выделяете все правила брандмауэра и нажимаете delete. Затем снова Run Script ;)

Чтобы не листать всю простыню, можно отфильтровать листинг правил по цепочкам (фильтр вверху справа):

Запаситесь терпением, не экспериментируйте в состоянии ночного анабиоза и второпях. В принципе, это все.

08.12.2016 21:59 Serge

11.12.2016 17:25 bzzz

05.05.2017 23:18 alex099

28.10.2017 14:51 [email protected]

25.11.2017 10:24 Dehale

25.11.2017 10:27 Dehale

Зачастую можно столкнуться с задачами, когда необходимо обеспечить доступ к внутренним корпоративным (или домашним) ресурсам из Интернета. В этом случае, нужно выполнить, так называемый "проброс портов" . Что это такое, зачем это нужно и как настраивать на примере роутера Mikrotik 951Ui-2HnD – расскажем в данной статье.

Как это работает?

Давайте представим себе следующую ситуацию – у нас есть корпоративная сеть, в которой пока ещё локально разворачивается сервер IP-телефонии на базе Asterisk, управляется он при помощи графической оболочки FreePBX. Задача состоит в том, чтобы предоставить возможность администратору сервера управлять им из Интернета.

Итак, имеем следующую схему:


Для начала остановимся на понятии “проброс порта”. Проброс порта – это функционал маршрутизаторов, поддерживающих NAT , который позволяет получить доступ к ресурсам локальной сети, из Интернета по средствам перенаправления трафика определенных портов с внешнего адреса маршрутизатора на внутренний адрес хоста в локальной сети.

Иными словами, мы должны настроить на роутере правило, в котором при поступлении TCP запроса на внешний адрес, в данном случае 35.135.235.15 и определенный порт, например 23535 , открывался бы доступ к интерфейсу FreePBX, который в данным момент доступен только в локальной сети по адресу 192.168.1.100 и, соответственно на порту 80 (HTTP) .

Настройка

Перейдём к настройке. Заходим на адрес нашего роутера Mikrotik 951Ui-2HnD, видим следующее окно:



Скачиваем приложение WinBox . Вводим учётные данные и подключаемся. По умолчанию логин - admin , пароль - пустой. Если у вас уже настроены логин и пароль, то укажите их.




Открывается следующее окно:



Нажимаем на + , открывается страница добавления нового NAT- правила.


Задаём следующие параметры:

  • Chain dstnat - направление запроса из внешней сети во внутреннюю.
  • Protocol tcp , поскольку в нашем случае нужно предоставить доступ к HTTP страничке.
  • Dst.Port 23535 - это тот самый порт назначения, на который будет отправлять запрос из вне на получение доступа к FreePBX.
  • In.Interface all ethernet - входной интерфейс. Это интерфейс, которым роутер смотрит в Интернет и на котором он будет прослушивать указанный выше порт.

Должно получиться вот так:


На вкладках Advanced и Extra настраиваются расширенные опции, такие как лимит по битрейту, политика IPsec, время, в течение которого правило будет активно и так далее.

Переходим на вкладку Action и объясняем роутеру, какие действия он должен выполнить при поступлении запроса на указанный порт. Выбираем Action netmap , то есть трансляция с одного адреса на другой. To Addresses 192.168.1.100 , то есть адрес нашёго FreePBX. И последнее - To Ports 80 , то есть запрос на HTTP порт.

Находя в сети различные инструкции по работе с Mikrotik RouterOS, я обратил внимание, что большинство из них малоинформативны - в лучшем случае они представлены в виде скриншотов Winbox со скудными комментариями, в худшем - просто груда строк для командной строки, из которых что-либо понять вообще нет никакой возможности.
Поэтому я решил написать небольшой набор инструкций, в которых буду объяснять, не только ЧТО нужно выполнить, но и ЗАЧЕМ и ПОЧЕМУ.

Итак, начнём с самого простого и, в тоже время, нужного - проброс порта из внутренней сети «наружу».

Любую сеть можно схематично представить вот в таком виде:

Посмотрим немного подробнее, на примере роутера Mikrotik RB951-2n. У него 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.
В Микротике управление 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 и указать комментарий для правила, чтобы в дальнейшем не приходилось вспоминать, что это за правило и зачем

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

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

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

Инструкция актуальна для версий прошивки 5 и 6. До версии 7 вряд-ли что-либо изменится.

Нередко у нас возникает необходимость дать доступ снаружи к компьютерам, которые находятся за NAT-ом в нашей локальной сети. Будь то веб-сервер или персоналка, к которой надо дать доступ снаружи по протоколу RDP, чтобы сотрудник мог работать из дома используя «Удаленный рабочий стол». Сегодня расскажу, как пробросить порты на роутере MikroTik используя dst-nat.

В статье, посвященной , я раздал IP-адреса двум компьютерам: 192.168.33.2 и 192.168.33.129. Пусть первый будет веб-сервером, а второй будет персоналкой. Соответственно, для веб-сервера нам нужно пробросить, как минимум 80-ый порт, а для персоналки — порты для удовлетворения хотелок пользователя. А пользователь хочет удаленный рабочий стол. Пусть нашим внешним ip будет 1.1.1.1 на интерфейсе inetTest.

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

Открываем IP — Firewall — NAT, жмем «+»

Добавление правила NAT

Chain — цепочка, в которой будет обрабатываться правило. Выбираем dstnat .
Src. Address — адрес источника. Если мы хотим указать конкретный адрес, то забиваем сюда. Но т.к. веб-сервер должен быть доступен всем, то я это поле не заполняю.
Dst. Address — адрес, к которому будут обращаться клиенты извне. В данном примере это адрес 1.1.1.1 . Можно этот адрес не указывать, но в этом случае нужно будет обязательно указать In. Interface
Protocol — выбираем TCP .
Dst. port — порт, к которому будут обращаться клиенты извне. Для веб-сервера по-умолчанию это порт 80.
In. Interface — интерфейс, который смотрит наружу. В нашем случае это интерфейс inetTest .

Остальные параметры нам в этой статье неинтересны, поэтому переходим на вкладку Action .

Добавление правила вкладка Action

Action — выбираем dst-nat.
To Addresses — пишем IP-адрес нашего веб-сервера в локальной сети.
To Ports — порт 80.

Этого, собственно, достаточно. Но есть один очень важный момент. У роутера MikroTik есть встроенный веб-сервер, который висит на том же дефолтном порту 80. Надо его оттуда убрать. Заходим в IP — Services и меняем там порт службы www с 80-го, на произвольный.

Процесс создания правила проброса порта RDP для персоналки аналогичен вышеописанному.


Хотел бы только сказать, что такой простой проброс RDP чертовски небезопасен и использовать его в таком виде крайне не рекомендую. Если известен удаленный IP-адрес, с которого будет производиться подключение, обязательно его указывайте в поле Src. Address. Это как минимум. А лучше вообще используйте VPN (легко поднимается на MikroTik) вместо банального проброса порта. Если уж сильно нужен именно проброс порта и неизвестен адрес источника, то есть еще такая штука, port knocking называется. Так же можно реализовать на MikroTik, но это материал для отдельной заметки — читайте статью .
Здесь проброс RDP используется только в качестве примера проброса порта , а не как призыв открывать небезопасный доступ к своим рабочим столам всему интернету.

Проброс портов — скрипты

# # # WEB Server 192.168.33.2 HTTP port 80 /ip firewall nat add action=dst-nat chain=dstnat comment=test dst-address=1.1.1.1 dst-port=80 in-interface=inetTest protocol=tcp to-addresses=192.168.33.2 to-ports=80 # WEB Server 192.168.33.2 HTTPS port 443 add action=dst-nat chain=dstnat comment=test dst-address=1.1.1.1 dst-port=443 in-interface=inetTest protocol=tcp to-addresses=192.168.33.2 to-ports=443 # RDP PC 192.168.33.129 add action=dst-nat chain=dstnat comment=test dst-address=1.1.1.1 dst-port=4565 in-interface=inetTest protocol=tcp to-addresses=192.168.33.129 to-ports=3389

# WEB Server 192.168.33.2 HTTP port 80

/ ip firewall nat

add action = dst - nat chain = dstnat comment = test dst - address = 1.1.1.1 dst - port = 80 in - interface = inetTest protocol = tcp to - addresses = 192.168.33.2 to - ports = 80

# WEB Server 192.168.33.2 HTTPS port 443

add action = dst - nat chain = dstnat comment = test dst - address = 1.1.1.1 dst - port = 443 in - interface = inetTest protocol = tcp to - addresses = 192.168.33.2 to - ports = 443

Для RDP dst-port указан 4565 , который MikroTik перенаправит на персоналку 192.168.33.129 на стандартный порт RDP — 3389. Соответственно, удаленному пользователю при подключению к удаленному рабочему столу надо будет так же указать и порт: 1.1.1.1:4565

Естественно, не забудьте разрешить в файерволе входящие соединения на внешний интерфейс (у нас inetTest ) на порты, которые мы собираемся пробросить (в этом примере 80 , 443 , 4565 ).

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

Статьи по теме: