поставки оборудования
ICQ: 238-663
Skype: lantorg4
+38 (057) 780 - 40 - 63
+38 (095) 128 - 76 - 85
+38 (063) 638 - 79 - 24
+38 (067) 897 - 26 - 63
г. Харьков, ул. Благовещенская 13, оф. 13
ГлавнаяСтатьиНастройка → Как зайти по внешнему IP-адресу из локальной сети для MikroTik

Как зайти по внешнему IP-адресу из локальной сети для MikroTik

Допустим, вы настроили проброс портов на роутере MikroTik, и из внешней сети все прекрасно работает. Но иногда может возникнуть необходимость организовать доступ к компьютеру или серверу по внешнему IP-адресу не только извне, но и из локальной сети. В этом случае применяется так называемый Hairpin NAT или NAT LoopBack - прием-отправка пакетов через один и тот же интерфейс роутера, со сменой адресов с локального на внешний и обратно. Разберем нужные настройки.

Допустим у нас есть:

  1. Роутер с внешним IP (WAN IP) 1.1.1.1.
  2. Компьютер с локальным адресом 192.168.88.229, и запущенным на нем сервером, приложением и т. д. для доступа из внешней сети. В нашем случае для соединения используется порт 8080.
  3. Компьютер в локальной сети с адресом 192.168.88.110.

У нас уже есть настроенное правило проброса порта 8080:

Настройка проброса порта 8080

Настройка проброса порта 8080, рис2

Но оно не будет срабатывать при обращении из локалки, так как настройки ориентированы на пакеты из внешней сети, через WAN-порт. Поэтому нам нужно прописать дополнительно еще 2 правила.

Настройка доступа из локальной сети по внешнему IP-адресу

1. Создаем правило для перенаправления обращений по внешнему IP из локальной сети.

Вкладка General.

Chain  - dstnat.

Src. Address - пишем здесь локальный адрес компьютера, с которого будем заходить по внешнему IP, или диапазон адресов, если такой доступ нужно предоставить нескольким компьютерам сети.

Dst. Address - указываем внешний адрес компьютера/ сервера и т. п., по которому будет осуществляться доступ из локалки.

Protocol,  Dst. Port - здесь прописываем параметры порта и протокола, которые соответствуют нашему соединению (те же, что и в пробросе портов).

Настройка доступа по внешнему IP адресу из локальной сети

Вкладка Action.

To Addresses - указываем локальный адрес нашего сервера, компьютера, на который мы заходим по внешнему IP-адресу.

To Ports - порт тот же самый, что на предыдущей вкладке, поэтому здесь можно ничего не указывать.

Настройка доступа по внешнему IP адресу из локальной сети, рис2

Теперь на компьютер 192.168.88.229 можно зайти из локальной сети по внешнему IP-адресу 1.1.1.1.

Но при попытке какого-то взаимодействия с ним ничего не получится. Почему? Посмотрим, что происходит.

  • Наш компьютер (192.168.88.110) посылает пакет на внешний адрес сервера, который является и адресом роутера, соответственно - 1.1.1.1.  
  • Роутер добросовестно перенаправляет его по нашему правилу dst-nat на компьютер с адресом 192.168.88.229.
  • Тот его принимает и отправляет ответ. Но так как он видит в качестве адреса источника локальный IP-адрес (ведь пакет поступил от компьютера в локальной сети), он отправляет ответ не на маршрутизатор, а напрямую получателю.
  • Получатель же (192.168.88.10) отправляя данные по внешнему IP, и ответ также ожидает от внешнего IP. Получив пакет от локального 192.168.88.229, он его просто сбрасывает, как ненужный.

Схема движения пакетов в локальной сети

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

2. Подменяем локальный адрес компьютера на внешний IP-адрес.

На вкладке Action выставляем маскарадинг (masquerade), т. е. подмену адреса источника на локальный адрес маршрутизатора.

На вкладке General прописываем правила, при которых он будет применяться:

Chain  - srcnat, т. е. при запросах из локальной сети.

Src. Address - пишем здесь локальный адрес компьютера, или диапазон адресов, с которых будут отправляться пакеты.

Dst. Address - здесь конкретизируем "адрес получателя", т. е. правило будет применяться только для пакетов, адресованных нашему серверу.

Protocol,  Dst. Port - здесь прописываем те же параметры порта и протокола.

Правило scrnat для доступа по внешнему IP

Правило scrnat для доступа по внешнему IP, скриншот 2

Теперь, получив пакет из локальной сети, адресованный на внешний IP 1.1.1.1, маршрутизатор не только перенаправит его на 192.168.88.229 (по первому правилу), но и заменит в пакете адрес источника (192.168.88.110) на свой локальный адрес.

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

Схема Hairpin Nat

Второй способ Hairpin NAT MikroTik: 2 правила вместо 3

Можно сделать еще проще, заменив правило проброса портов первым правилом Hairpin NAT. В этом случае в настройках не нужно указывать In. Interface и Src Address, но нужно прописать адрес назначения.

Настройка Hairpin NAT 2-й способ

Доступ на внешний IP адрес вашего сервера или компьютера с приложением будет открыт как для обращений извне, так и из локальной сети, с любых адресов, но только для пакетов с адресом назначения 1.1.1.1:80.

Теперь добавляете описанное выше правило srcnat, и все. Можно добавить дополнительную фильтрацию, прописав в out-interface тот интерфейс, с которого будут осуществляться отправки пакетов, если есть такая необходимость.

Недостатком Hairpin NAT является только то, что нагрузка на роутер возрастает, ведь те обращения, что раньше проходили через локальную сеть непосредственно между компьютерами, теперь будут идти через маршрутизатор.

Второй способ проще, но, в зависимости от конфигурации вашей сети, может использоваться и первый.

UPD: мы протестировали еще раз изложенные в этой статье способы настройки на примере организации FTP-сервера, а также настройку, предложенную в комментариях. Все они рабочие.


Оцените, пожалуйста, полезность/интересность статьи. Нам важно ваше мнение!

Оценка:   5.0 (голосов 10)
Поделиться с друзьями:                                                                             27.10.2015

Также советуем почитать:



Комментарии

  • Комментарий администратора:
    Влад, у нас при создании статьи работал и первый, и второй вариант. А второй вариант пробовали, работает у вас?
  • Влад 04.11.2016, 10:12
    не работает!
    первый вариант не работает всё слеланно один к одному.
  • svyatoslav 01.11.2016, 18:06
    add chain=srcnat dst-address=192.168.88.2 protocol=tcp dst-port=3389 action=masquerade add action=dst-nat chain=dstnat dst-address-type=local dst-port=3389 protocol=tcp to-addresses=192.168.88.2
  • Тарас 29.09.2016, 14:44
    а для ubiquiti не знаете как сделать доступ к внешнему ip из локальной сети?
  • Олег 09.09.2016, 16:01
    спасибо
  • Андрей 19.07.2016, 09:01
    Допустим есть локальная сеть (192.168.5.0/24)с внешним IP:123.123.123.123 так как шлюз на windows - Hairpin не настроить в принципе. Есть MicroTik роутер с wifi. По нему будут цепляться планшеты. Можно ли Микротик так настроить чтобы клиенты которые подключились через него при обращении к адресу 123.123.123.123 на порт 5555 попадали на 192.168.5.10 порт 80.
  • fw 19.06.2016, 22:34
    Спасибо автору статьи, и дополнительное огромное спасибо Stealth !!!
    Вы меня спасли!
  • Алексей 26.05.2016, 22:31
    Я б поднял VPN для доступа извне.
    Так надежнее и мы не привязаны к конкретному IP
  • Xoma55 08.04.2016, 12:00
    Спасибо друг! Такую инфу найти было тяжело.
  • Комментарий администратора:
    Stealth, спасибо за полезную информацию!
  • Stealth 17.03.2016, 01:21
    dst-address-type=local находится на вкладке "Extra".
  • Stealth 17.03.2016, 01:19
    Чтобы не указывать внешний IP-адрес роутера, вместо него можно указать (во втором варианте) dst-address-type=local. Т.е. получится что-то вроде
    /ip firewall nat
    add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.2 protocol=tcp dst-port=3389 action=masquerade
    add action=dst-nat chain=dstnat comment=RDP dst-address-type=local dst-port=3389 protocol=tcp to-addresses=192.168.88.2
  • Павел 03.03.2016, 00:08
    Получилось по первому варианту, но одно НО! Почему-то могу зайти только с одного устройства из локалки. Со второго устройства не пускает, пока первым не выйду. В чем может быть загвоздка?
  • E.IVANOV 29.02.2016, 08:51
    Очень полезная статья!
  • fromtheroof 26.01.2016, 22:18
    Спасибо. Полезная статья.
  • Виталий 03.12.2015, 23:13
    Нагрузка больше не будет если внешней й и внутренний порты разны. К примеру сервер на порте 3333 а внешний порт на ване 8888. Локальные абоненты будут конектится напрямую на 3333 а те кто просится на 1.1.1.1:8888 будут ходить через роутер. Я правильно все понял? Нагрузка не увеличивается?

Написать комментарий

Ссылки на другие сайты из комментариев удаляются. Спасибо за понимание.


Подписаться на получение новостей
* обязательные поля
Не чаще 1 письма в неделю. Только полезная информация. Убедитесь сами – посмотрите наш архив рассылок.