Пользователь
0,0
рейтинг
5 июня 2013 в 02:24

Администрирование → Проброс портов в Микротике — ликбез для начинающих tutorial

Находя в сети различные инструкции по работе с 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 вряд-ли что-либо изменится.
Писать ли ещё статьи в таком ключе по настройке Микротиков?

Проголосовало 903 человека. Воздержалось 62 человека.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Маслов Дмитрий @DeusNox
карма
10,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (44)

  • +5
    В таком — нет. Для «такого» есть документация на официальном сайте.
    • +1
      Действительно, такие моменты и описывать не стоит, это банально и находиться на 1-2-3 для новичков.
      Напишите что-нить действительно интересно-нестандартное по mikrotik.
    • 0
      С winbox на таком уровне можно даже без документации разобраться.
      • 0
        У гуру конечно проблем не возникнет. Хоть циска, хоть тп-линк. Теорию-то знаете от и до.
        Набор бы таких статей на заре моей компутерной молодости!
    • 0
      Документация на официальном сайте: во-первых, на английском, во-вторых, её трудно назвать понятной для начинающих. Вы же обратили внимание на тэг " Для начинающих"?
      Конечно, мало-мальски приличный сисадмин разберётся «на раз», но я-то писал не для админов.
      Сам я в лучшем случае продвинутый пользователь, но я искренне считаю, что Микротики начального уровня на голову лучше аналогичных по ТТХ Длинков и Тплинков — в части производительности, стабильности, и надёжности. Единственный громадный минус Микротиков — сложный и запутанный интерфейс.
      Вот для людей, которые после чего-нибудь типа dir-320 пытаются настроить Микротик, я и писал.
  • 0
    Будет ли ваш вариант работать, если у компьютера на который пробрасывается порт нет шлюза или шлюз является другим маршрутизатором отличным от микротика с которого происходит проброс портов?
    • 0
      Сам проброс будет работать, он на шлюз не завязан. А вот отвечать на запросы компьютер нормально не сможет. Ну, или надо будет настраивать какую-то хитрую маршрутизацию.
      • 0
        Вот именно. Поэтому вам в доку нужно добавить эту «хитрую» маршрутизацию, которая заключается в том, что необходимо включить masquerade на dst.addr в цепочке srcnat
        • +1
          Я думаю, если у человека такая нестандартная конфигурация, он и без моей статьи разберётся, как сделать такую элементарную вещь.

          Но я уже понял, что на Хабре писать статьи «для начинающих» не принято, больше, наверное, не буду…
          • 0
            Я почему спросил, просто этот редкий момент всегда всплывает когда нужно, например, прокинуть порт до принтера, у которого статический ип адрес и не указан шлюз. С таким вопросом ко мне обращались очень много людей, поэтому имеет смысл это дописать у Вас на русском языке (если конечно вы не будете скрывать статью).

            Вообще, реально на русском языке очень мало документации по Mikrotik. Поэтому, думаю, некоторым точно пригодится.
          • 0
            Несмотря на то, что две трети пользователей посчитали материал полезным? На любую статью, даже самую продвинутую в техническом плане, почти всегда находится человек, который скажет, что это банально и все это есть в документации. Это вовсе не значит, что такой материал не нужен.
          • –1
            «Принято», «не принято»… первая понятная статья про настройку проброса портов на этом поганом* микротике :) Статьи нужны и важны разные. Спасибо, я наконец разобрался со всеми этими, на первый взгляд непонятными, полями в настройках NAT. Имел до этого дело только со всяким ширпотребом типа dlink и zyxel, там все много проще.

            * на самом деле хороший роутер, это я так…
  • 0
    Больше микротиков, хороших и разных. О чём эта статья, так и не понял. Обычный iptables же, только с графической оболочкой.
  • 0
    Статья хорошая, как раз начал разбираться с микротиками, пока в тестовом режиме, но хочется и в «поле» задействовать.
    Если будете еще писать — напишите про Virtual AP. Вроде, все просто, все сделал, ничего сложного — но устройства, подключенные к виртуальной точке не получают адрес по DHCP. Целый вечер сидел — не разобрался…
    • 0
      Насколько я помню, VAP надо объединить в бридж с каким-то интерфейсом (можно VLAN), на этот бридж интерфейс прибить IP и на нём же должен жить DHCP.
      Может, конечно, оно заработает и без этого и Вы просто где-то ошиблись в конфигурации.
  • 0
    жду приезда MikroTik CCR1036-12G-4S-EM, стоит ли написать обзор?
    • 0
      Напишите. Судя по их презентации на user meeting, сабж совсем не тянет заявленную пропускную способность.
      • 0
        сабж уже на месте, с вас методика тестирования :)
        • 0
          Попробуйте, например, выжать из него line rate скорость на все порты одновременно. Ну или хотя-бы половину скорости. Нет, серьёзно, интересно знать, что оно из себя представляет. 16-ти портовый 1G роутер со всеми фичами роутинга, включая MPLS за $1k — это просто нереальное счастье.
  • 0
    Не вижу смысла прописывать в разделе Action значение порта, если он не отличается от входящего.
    Когда внутренний порт будет, к примеру, 22 (внутри локальной сети), а снаружи его надо открыть как 222, тогда надо так прописывать, иначе смысла нет.
    • 0
      Согласен, допишу в статью(с указанием авторства, конечно).
  • 0
    Может юзеры mikrotik подскажут как дать доступ определённому пользователю на ftp микротика только к определённому каталогу? Знаю как создать пользователя, знаю как дать доступ только к ftp, знаю как сделать ему доступ только для чтения, а вот возможно ли сделать так чтобы ему была доступна только определённая папка на ftp?
  • 0
    По мне так материал полезен. Жду продолжения, железки очень привлекательны ценой и своими широкими возможностями. А наличие русской документации это всегда на пользу для начинающих свое знакомство с новыми для себя продуктами. Сетевые устройства всегда были немного недружелюбны к новичкам :).
  • 0
    Тестирую уже второй 2011UAS-2HnD. У первого были технические недоработки — проваливался тач-скрин, питание уходило внуть корпуса, дырка ресета не явная… Второй — все мелкое подфиксили и работает отлично.
    Настроил проброс портов. Через внешний интерфейс — все работает.
    А если из локалки обращаться к ext_ip:port то тупо таймаут…
    подскажите плз где я лопухнулся

    0 ;;; default configuration
    chain=srcnat action=masquerade out-interface=sfp1-gateway

    1 ;;; default configuration
    chain=srcnat action=masquerade to-addresses=0.0.0.0 out-interface=ether1-gateway

    2 chain=dstnat action=netmap to-addresses=10.0.0.11 to-ports=88 protocol=tcp dst-address=ext_ip dst-port=8888
    • 0
      зачем из локалки ходить на внешний ип? ходите на 10.0.0.11 to-ports=88…
      • +1
        Например, я на ноуте работаю и из дома, и на работе. Соответственно, в офисе я во внешней сети, дома — во внутренней(относительно домашней локалки). А вкладки в браузере, настройки рабочих сред и прочее — они, естественно, в ноуте неизменны. Постоянно менять их при перемещении из офиса в дом и обратно — противоречит моей политике об ограничении энтропии.
        • 0
          собственно вот и ответ.
          • 0
            хм… а если на микротике сделать правило, что если с локального порта прилетает пакет на ext_ip dst-port=8888 перенаправить его на 10.0.0.11 to-ports=88?
            • 0
              не работает
              habrahabr.ru/post/182166/#comment_6604146

              в dd-wrt все работало.
              я подозреваю что можно было бы как-то извратиться и в ROS но пока идеи закончились
    • 0
      Не могу гарантировать, что это на 100% правильно, но у меня есть два варианта решения оной задачи.
      Вариант первый:
      Нужно сделать 2 правила:
      chain=dstnat, dst.address=внешнему ip, protocol=tcp, dst.port=внешний порт, action=netmap на внутренний ip и порт
      и второе
      chain=srcnat, protocol=tcp, dst.port=8080, action=masquerade

      Вариант второй:
      прописать в DNS — Static соответствие FQDN и локального IP. Но это не для IP, а уже для имени.
      • 0
        пока так и делаю — DNS с разными view

      • 0
        если смотреть торчем — приходит с 10.0.0.х на внешний ип и пакет уходит с адресом внутренего ип на 10.0.0.х
        естествено нифига не работает…
        маскарадинг не помогает…
        • 0
          вопрос решился благодаря
          wiki.mikrotik.com/wiki/Hairpin_NAT
          спасибо x1shn1k За подсказку
    • 0
  • 0
    отличная, аккуратная статья для начинающих…
  • 0
    Если не указан это параметр, то этот порт перестанет так же быть доступен из внутренней сети, даже несмотря на то, что цепочка у нас dstnat.

    Вот оно! О чём молчит официальный док.
  • 0
    Если ставить in interface и выбрать там WAN порт, то по внешнему адресу из внутренней локалки не получится подключиться. Эту строку можно не ставить.
    • 0
      что делать в этом случае? у меня подобная ситуация, отписался ниже
  • 0
    Не указано еще и то, что при подключении роутером к провайдеру через например pppoe нужно будет выбирать этот интерфейс, а не «ворота», пользуясь вашей терминологией :)
  • 0
    спасибо за статью – оказалась, кстати

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

    приходится подключаться к одному серверу двумя способами
    — из локалки заходить на внутренний адрес
    — из глобального интернета обращаться на внешний айпи

    или можно нахимичить хитрое правило для NAT?

    • 0
      Для этого у меня такое правило, не знаю насколько верно, но вроде работает и извне не светится.

      /ip firewall nat
      add action=masquerade chain=srcnat comment=\
      "\C2\EE\E7\E2\F0\E0\F2 \F1 \E0\E4\F0\E5\F1\E0" src-address=192.168.1.0/24

      Можно ещё ограничить внешним интерфейсом, вообщем — попробуйте.
  • 0
    Пожалуйста, опишите чем отличается netmap от dst-nat?
    Возможно имеет смысл в статью добавить решение задачи, которую тут уже спросили несколько раз – обращение к проброшенному порту из локальной сети.
    • 0
      Я, конечно, очень поздно, но вдруг кому-то всё таки пригодится
      Пожалуйста, опишите чем отличается netmap от dst-nat?

      netmap позволяет передать IP адрес посетителя локальному хосту, в dst-nat же этот адрес будет заменен на адрес микротика.

      обращение к проброшенному порту из локальной сети

      Тут просто необходимо создать еще одно правило. Можно поискать в официальной wiki — Hairpin NAT.

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

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.