![Как зайти по внешнему IP-адресу из локальной сети для MikroTik?](https://setevuha.fra1.digitaloceanspaces.com/media/29143/conversions/b73ce398c39f506a-940x500.webp)
Если настроен проброс портов на роутере MikroTik, доступ к компьютеру или серверу из внешней сети хорошо организован. Однако бывают случаи, когда доступ к оборудованию по внешнему IP-адресу нужно получить не только из нее, но и из локальной сети. Тогда на помощь приходит так называемый Hairpin NAT или NAT LoopBack – прием и отправка пакетов данных через один и тот же интерфейс роутера, с периодической сменой адресов с локального на внешний и обратно.
Посмотрим, как это можно осуществить на практике.
В рассматриваемом примере набор устройств выглядит таким образом:
- Роутер с внешним IP-адресом (WAN IP) 1.1.1.1.
- Компьютер с локальным адресом 192.168.88.229, и работающим на нем сервером, приложением и т. д. для доступа из внешней сети. В нашем примере для соединения используется порт 8080.
- Компьютер в локальной сети с адресом 192.168.88.110.
Правило проброса порта 8080 уже настроено:
Однако оно не приведет к желаемому результату при обращении из локальной сети, поскольку настройки установлены для работы с внешней сетью, через WAN-порт. Чтобы исправить ситуацию, установим 2 дополнительных правила.
Настраиваем доступ из локальной сети по внешнему IP-адресу
1. Создаем правило для перенаправления обращений по внешнему IP-адресу из локальной сети.
На вкладке General:
- Chain - dstnat.
- Src. Address - прописываем локальный адрес компьютера, с которого будем заходить по внешнему IP, или диапазон адресов, если такой доступ нужно предоставить нескольким компьютерам сети.
- Dst. Address - прописываем внешний адрес компьютера/сервера и т. п., по которому будет осуществляться доступ из локальной сети.
- Protocol, Dst. Port - устанавливаем параметры порта и протокола, которые соответствуют параметрам соединения (те же, что и в пробросе портов).
На вкладке Action.
- To Addresses - прописываем локальный адрес сервера, компьютера, на который мы заходим по внешнему IP-адресу.
- To Ports - можно ничего не прописывать, так как порт тот же, что и в предыдущей вкладке.
Теперь доступ к компьютеру с адресом 192.168.88.229 из локальной сети по внешнему IP-адресу 1.1.1.1 получен.
Однако если мы попробуем воспользоваться ним, у нас ничего не выйдет.
Разберемся в причинах:
- Компьютер 192.168.88.110 посылает пакет на внешний адрес сервера, который также является адресом роутера - 1.1.1.1.
- Роутер перенаправляет его по установленному правилу dst-nat на компьютер с адресом 192.168.88.229.
- Компьютер 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 - устанавливаем те же параметры порта и протокола.
После внесения указанных изменений, маршрутизатор, получив пакет из локальной сети, адресованный на внешний IP 1.1.1.1, не только перенаправит его на 192.168.88.229 (по первому правилу), но и заменит в пакете адрес источника (192.168.88.110) на свой локальный адрес.
Именно поэтому отклик от сервера отправится не напрямую в локальную сеть, а на маршрутизатор, который, в свою очередь направит его источнику.
Второй упрощенный способ Hairpin NAT MikroTik
Можно упростить схему, заменив правило проброса портов первым правилом Hairpin NAT. В этом случае в настройках не нужно указывать In. Interface и Src Address, но нужно прописать адрес назначения.
Доступ на внешний IP адрес вашего сервера или компьютера с приложением будет открыт как для обращений извне, так и из локальной сети, с любых адресов, но только для пакетов с адресом назначения 1.1.1.1:80.
Теперь добавляем описанное выше правило srcnat и настройка завершена. Можно добавить дополнительную фильтрацию, прописав в out-interface тот интерфейс, с которого будут осуществляться отправки пакетов, если есть такая необходимость.
Недостатком Hairpin NAT увеличение нагрузки на роутер, ведь обращения, что раньше проходили через локальную сеть непосредственно между компьютерами, теперь будут идти через маршрутизатор.
Второй способ проще, но, в зависимости от конфигурации сети, можно использовать и первый.