Як зайти по зовнішній 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 вже налаштоване:

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

Але якщо ми спробуємо скористатися ним, у нас нічого не вийде.

Розберемося з причин:

  1. Комп'ютер 192.168.88.110 надсилає пакет на зовнішню адресу сервера, який також є адресою роутера - 1.1.1.1.  
  2. Роутер перенаправляє його за встановленим правилом dst-nat на комп'ютер із адресою 192.168.88.229.
  3. Комп'ютер 192.168.88.229 приймає його та відправляє відгук. Але оскільки він бачить як адресу відправника локальну IP-адресу - адже пакет надійшов від комп'ютера в локальній мережі, відповідь відправляється не на маршрутизатор, а одержувачу.
  4. Отримувач 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 збільшення навантаження на роутер, адже звернення, що раніше проходили через локальну мережу безпосередньо між комп'ютерами, тепер йдуть через маршрутизатор.

Другий спосіб простіший, але, залежно від конфігурації мережі, можна використовувати і перший.