Припустимо, ви налаштували прокидання портів на роутері 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-сервера , а також налаштування, запропоноване в коментарях . Усі вони робітники.