1. Знайомство в NAT

Ще одна цікава тема – це NAT. NAT розшифровується як Network Address Translation і зазвичай є у кожному роутері як сервіс. То що ж це таке і навіщо воно потрібне?

NAT – це точка, за допомогою якої локальні мережі можна підключати до глобальних мереж: наприклад, до мережі інтернет.

Як ти вже знаєш, у локальних мережах у всіх комп'ютерів (та інших пристроїв, що підключено до мережі) є власні локальні IP-адреси. А щоб обмінюватися даними з сервером в інтернеті, треба щоб наш комп'ютер міг надіслати запит до сервера, а сервер міг надіслати нам відповідь. А куди йому надсилати відповідь, якщо наша IP-адреса невідома за межами локальної мережі?

Уяви, що ти пишеш паперовий лист Стівену Кінгу. Кінг – це публічна постать, він такий один – це наш публічний сервер. А як зворотну адресу в листі ти вказуєш Христину. Христин багато. Якій саме Христині потрібно надіслати відповідь?

Тому ти надсилаєш листа своєму знайомому зі штату Мен, теж публічній фігурі, із вказівкою вислати його Кінгу. Твій знайомий отримує листа, надсилає його Кінгу, а як зворотну адресу вказує свою адресу у штаті Мен.

Після отримання відповіді від Кінга, знайомий пересилає її тобі. Так само і з IP-пакетами.

Щоб дозволити пристрою з приватною IPv4-адресою звертатися до пристроїв і ресурсів за межами локальної мережі, приватну адресу спочатку потрібно змінити на загальнодоступну публічну адресу.

Саме NAT переводить приватні адреси до загальнодоступних. Це дозволяє пристрою з локальною IP-адресою звертатися до ресурсів за межами приватної мережі. NAT у поєднанні з локальними IP-адресами виявився корисним методом збереження загальнодоступних IPv4-адрес.

У світі живе 8 мільярдів людей, а мережевих пристроїв вже в рази більше: телефони, ноутбуки, смарт-годинники, сервери, будь-які розумні девайси. А IP-адрес лише 4 мільярди. Раніше здавалося, що це багато, втім, зі швидким зростанням інтернету всім стало зрозуміло, що цього замало.

Тут нам на допомогу приходить NAT: одну публічну IPv4-адресу можуть використовувати сотны, навіть тисячы пристроїв, кожен з яких має локальну IPv4-адресу. NAT має додаткову перевагу, яка полягає в додаванні ступеня конфіденційності та безпеки до мережы, оскільки він приховує внутрішні IPv4-адреси із зовнішніх мереж.

2. Підмережі в NAT

Локальні мережі зазвичай проэктуються за допомогою приватних IP-адрес. Це адреси приватних підмереж – 10.0.0.0/8, 172.16.0.0/12 і 192.168.0.0/16. Ці IP-адреси використовуються всередині організації або майданчика. Щоб дозволити пристроям спілкуватися локально, вони не маршрутизуються в інтернеті.

Роутери з підтримкою NAT можна налаштувати з однією або декількома дійсними загальнодоступними IPv4-адресами. Ці загальнодоступні адреси називають пулом NAT.

Коли пристрій із внутрішньої мережі відправляє трафік із мережі назовні, роутер з підтримкою NAT переводить внутрішню IP-адреау пристрою на публічну IP-адресу з пулу NAT. Для зовнішніх пристроїв весь трафік, що входить і виходить з мережі, має загальнодоступну IP-адресу.

Маршрутизатор NAT зазвичай працює на межі Stub-мережі. Stub-мережа – це термін з теорії мереж: тупикова мережа, яка має одне з'єднання із сусідньою мережею, один вхід та вихід із мережі.

Коли пристрій всередині Stub-мережі хоче зв'язатися з пристроєм за межами своєї мережі, пакет пересилається роутеру і він виконує NAT-процес: переводить внутрішню приватну адресу пристрою на публічну, зовнішню адресу, що маршрутизується.

3. Термінологія NAT

Якщо заглибитися в теорію мереж, то NAT — це внутрішня мережа, яка є набором підмереж, що підлягають переведенню. Зовнішня мережа належить до всіх інших мереж.

При використанні NAT IP адреси мають різні позначення, що базуються на тому, чи знаходяться вони в приватній мережі чи в загальнодоступній (в інтернеті), а також чи є трафік вхідним або вихідним.

NAT містить чотири типи адрес:

  • Внутрішня локальна адреса (Inside local address);
  • Внутрішня глобальна адреса (Inside Global Address );
  • Зовнішня місцева адреса (Outside local address);
  • Зовнішня глобальна адреса (Outside global address);

При визначенні того, який тип адреси використовується, важливо пам'ятати, що термінологія NAT завжди застосовується з точки зору пристрою з трансльованою адресою:

  • Внутрішня адреса (Inside address) – адреса пристрою, що транслюється NAT;
  • Зовнішня адреса (Outside address) – адреса пристрою призначення;
  • Локальна адреса (Local address) – будь-яка адреса, яка відображається у внутрішній частині мережі;
  • Глобальна адреса (Global address) – будь-яка адреса, яка відображається у зовнішній частині мережі.

Розглянемо це на прикладі схеми.

Комп'ютер на малюнку зліва має внутрішню локальну (Inside local) адресу 192.168.1.5, і з його точки зору веб-сервер має зовнішню (outside) адресу 208.141.17.4. Коли з комп'ютера відправляються пакети даних на глобальну адресу веб-сервера, внутрішня локальна (Inside local ) адреса ПК транслюється в 208.141.16.5(inside global). Адреса зовнішнього пристрою зазвичай не переводиться, оскільки вона є загальнодоступною адресою IPv4.

Варто зауважити, що комп'ютер має дві адреси: локальну і глобальну, тоді як вебсервер має однакову публічну IP-адресу. На його думку трафік, що виходить з комп'ютера, надходить із внутрішньої глобальної адреси 208.141.16.5. Роутер з NAT є точкою поділу між внутрішньою та зовнішньою мережами, та між локальними та глобальними адресами.

Терміни inside і outside об'єднані з термінами local і global, щоб посилатися на конкретні адреси. На малюнку роутер налаштований на надання NAT і має пул загальнодоступних адрес для призначення внутрішнім хостам.

4. Шлях проходження пакету

Якщо ти вже відчуваєш втому, переходь до наступної лекції. Якщо тобі все ще цікаво, ласкаво просимо далі до кротової нори.

На малюнку нижче показано, як трафік відправляється з внутрішнього комп'ютера на зовнішній вебсервер через маршрутизатор з підтримкою NAT, надсилається і переводиться у зворотний бік.

NAT-таблиця маршрутизатора
ПК Вебсервер
Inside Global Inside Local Outside Local Outside Global
208.141.17.4 192.168.1.5 208.141.16.5 208.141.16.5

Внутрішня локальна адреса (Inside local address) – адреса джерела, яка є видимою з внутрішньої мережі. На малюнку адресу 192.168.1.5 присвоєно комп'ютеру – це і є його внутрішня локальна адреса.

Внутрішня глобальна адреса (Inside global address) – адреса джерела, яка є видимою із зовнішньої мережі. На малюнку видно, що коли трафік з комп'ютера відправляється на вебсервер за адресою 208.141.17.4, роутер переводить внутрішню локальну адресу (local address) на внутрішню глобальну адресу (Inside global address). У цьому випадку роутер змінює адресу джерела IPv4 з 192.168.1.5 на 208.141.16.5.

Зовнішня глобальна адреса (Outside global address) – адреса адресата, яка є видимою із зовнішньої мережі. Це IP-адреса, що глобально маршрутизується, призначена хосту в інтернеті. На схемі веб-сервер доступний за адресою 208.141.17.4. Найчастіше зовнішні локальні та зовнішні глобальні адреси однакові.

Зовнішня локальна адреса (Outside local address) – адреса одержувача, яка є видимою з внутрішньої мережі. У цьому прикладі комп'ютер відправляє трафік на вебсервер за адресою 208.141.17.4.

Тепер давай розглянемо весь шлях проходження пакета. Комп'ютер з адресою 192.168.1.5 намагається встановити зв'язок з веб-сервером 208.141.17.4. Коли пакет прибуває до маршрутизатора з підтримкою NAT, він зчитує IP-адресу призначення пакета, щоб визначити, чи відповідає пакет критеріям, зазначеним для переведення. У цьому прикладі вихідна адреса відповідає критеріям і переводиться з 192.168.1.5 (Inside local address) на 208.141.16.5 (Inside global address).

Роутер додає це зіставлення локального до глобальної адреси до таблиці NAT і відправляє пакет з переведеною адресою джерела до пункту призначення. Вебсервер відповідає пакетом, який адресовано внутрішній глобальній адресі ПК (208.141.16.5).

Роутер отримує пакет з адресою призначення 208.141.16.5 та перевіряє таблицю NAT, в якій знаходить запис для цього зіставлення. Він використовує цю інформацію і переводить назад внутрішню глобальну адресу (208.141.16.5) на внутрішню локальну адресу (192.168.1.5), пакет перенаправляється у бік ПК.

5. Переваги та недоліки NAT

Сервіс NAT – це дуже сильне рішення, яке використовується повсюдно. NAT надає безліч переваг, включно з такими:

  • NAT зберігає зареєстровану схему адресації й тим самим забезпечує гнучку роботу локальних мереж. При NAT внутрішні хости можуть спільно використовувати одну публічну IP-адресу для всіх зовнішніх комунікацій. У цьому типі конфігурації потрібно дуже мало зовнішніх адрес для підтримки багатьох внутрішніх хостів.
  • NAT збільшує гнучкість з'єднань з інтернетом. Численні пули, пули резервного копіювання та пули балансування навантаження можна реалізувати для забезпечення надійних загальнодоступних мережних підключень.
  • NAT забезпечує узгодженість внутрішніх схем адресації мережі. У мережі, яка не використовує приватні IP-адреси та NAT, зміна загальної схеми IP-адреси вимагає переадресації всіх хостів у наявній мережі. Вартість переадресації хостів може бути значною. NAT дозволяє залишатися існуючій приватній схемі IPv4, що дає змогу легко змінювати нову схему загальнодоступної адресації. Це означає, що організація може змінювати провайдерів і не потрібно міняти жодного зі своїх внутрішніх клієнтів.
  • NAT забезпечує мережеву безпеку. Оскільки приватні мережі не рекламують свої адреси або внутрішню топологію, вони залишаються досить надійними під час використання разом із NAT для отримання контрольованого зовнішнього доступу. Однак потрібно розуміти, що NAT не замінює фаєрволи.

Але у NAT є і деякі недоліки. Той факт, що хости в інтернеті, мабуть, безпосередньо взаємодіють із пристроєм з підтримкою NAT, а не з фактичним хостом усередині приватної мережі, створює низку проблем:

  • Один із недоліків використання NAT пов'язаний із продуктивністю мережі, особливо для протоколів реального часу, таких як VoIP. NAT збільшує затримки переключення, тому що переведення кожної IP-адреси в заголовках пакетів потребує часу.
  • Іншим недоліком використання NAT є те, що наскрізна адресація губиться. Багато інтернет-протоколів та програм залежать від наскрізної адресації від джерела до місця призначення. Деякі програми не працюють із NAT. Програми, які використовують фізичні адреси, а не кваліфіковане доменне ім'я, не доходять до адресатів, які транслюються через маршрутизатор NAT. Іноді цього можна уникнути, якщо реалізувати статичні зіставлення NAT.
  • Також втрачається наскрізне трасування IPv4. Складніше трасувати пакети, які зазнають численних змін адрес пакетів протягом декількох NAT-переходів, що ускладнює пошук і усунення несправностей.
  • Використання NAT також ускладнює протоколи тунелювання, такі як IPsec, оскільки NAT змінює значення заголовків, які заважають перевіркам цілісності, що виконуються IPsec та іншими протоколами тунелювання.
  • Служби, що вимагають ініціювання TCP-з'єднань із зовнішньої мережі, або stateless протоколи, наприклад, що використовують UDP, можуть бути порушені. Якщо маршрутизатор NAT не налаштований для підтримки таких протоколів, вхідні пакети не можуть досягти свого адресата.