Простір приватних IPv4-адрес
Кількості публічних IPv4-адрес недостатньо, щоб призначити унікальні адреси усім пристроям, підключеним до Інтернету. У більшості випадків, мережі реалізуються з використанням приватних IPv4-адрес відповідно до
RFC 1918. На рис. 1 показаний діапазон адрес, включених в RFC 1918. Найімовірніше, комп’ютеру, на якому ви зараз переглядаєте матеріал учбового курсу, призначена приватна адреса.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_1.jpg)
Ці приватні адреси використовуються у рамках організації або об’єкту з метою забезпечення взаємодії пристроїв на локальному рівні. Але оскільки ці адреси не визначають конкретну компанію або організацію, приватні IPv4 -адреси не можна використати для маршрутизації через інтернет. Для того, щоб дозволити пристрою з часткою IPv4-адрес доступ до пристроїв і ресурсів поза локальною мережею, приватну адресу спочатку необхідно перетворити в публічну адресу.
Як показано на рис. 2, NAT забезпечує перетворення приватних адрес в публічні адреси. Це дозволяє пристрою з часткою IPv4-адрес діставати доступ до ресурсів поза своєю приватною мережею, включаючи ресурси, знайдені в Інтернеті. У поєднанні з приватними IPv4-адресами, NAT продемонстрував свою доцільність відносно економії публічних IPv4-адрес. Одна публічна IPv4-адреса може спільно використовуватися сотнями, навіть тисячами пристроїв, для кожного з яких налагоджена унікальна приватна IPv4-адреса.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_2.jpg)
Без використання NAT адресний простір IPv4 був би вичерпаний задовго до настання 2000 року. Незважаючи на свої переваги, NAT має ряд обмежень, які детально розглядатимуться далі в цій главі. Вирішенням проблеми вичерпання простору IPv4-адрес і обмежень NAT є остаточний перехід на IPv6.
Визначення NAT
Перетворення мережевих адрес NAT використовується в різних цілях, проте основним завданням цього механізму є збереження публічних IPv4-адрес. Це досягається шляхом дозволу мережам використати приватні IPv4-адреси для внутрішньої взаємодії і перетворення їх в публічні адреси тільки у разі потреби. Додаткова перевага NAT — підвищення міри конфіденційності і безпеки мережі — пояснюється тим, що цей механізм приховує внутрішні IPv4-адреси від зовнішніх мереж.
Для маршрутизатора з підтримкою NAT можна налаштувати один або декілька діючих публічних IPv4-адрес. Ці публічні адреси відомі як пул адрес NAT. Коли внутрішній пристрій відправляє трафік за межі мережі, маршрутизатор з підтримкою NAT перетворить внутрішню IPv4-адресу пристрою в публічну адресу з пулу NAT. Зовнішнім пристроям здається, що увесь трафік, що входить в мережу і виходить з неї, використовує публічні IPv4-адреси з наданого пулу адрес.
Маршрутизатор NAT зазвичай працює на межі тупикової мережі. Тупикова мережа — це мережа, що використовує єдине з’єднання з сусідньою мережею, один маршрут, що входить, і один витікаючий маршрут. У прикладі, показаному на малюнку, R2 є граничним маршрутизатором. З точки зору інтернет-провайдера, маршрутизатор R2 створює тупикову мережу.
Коли пристрою в тупиковій мережі потрібно з’єднання з пристроєм поза його мережею, пакет пересилається граничному маршрутизатору. Граничний маршрутизатор виконує процес NAT, перетворюючи внутрішню приватну адресу пристрою в публічну, зовнішню, таку, що маршрутизується адресу.
Підключення до мережі інтернет-провайдера може також використати приватну адресу або публічну адресу, спільно використовувану клієнтами постачальника. У рамках даної теми як приклад приведена публічна адреса.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_3.jpg)
Термінологія NAT
У термінології NAT під «внутрішньою мережею» мається на увазі набір мереж, задіяних в перетворенні. Термін «зовнішня мережа» відноситься до усіх інших мереж.
При використанні NAT, IPv4-адреси представляють різні точки призначення залежно від того, чи знаходяться вони в приватній або в публічній мережі (Інтернет), а також від того, чи є трафік таким, що входить або виходить.
У NAT передбачено 4 типи адрес :
- внутрішня локальна адреса;
- внутрішня глобальна адреса;
- зовнішня локальна адреса;
- зовнішня глобальна адреса.
При визначенні використовуваного типу адреси важливо пам’ятати, що термінологія NAT завжди застосовується з точки зору пристрою з перетворюваною адресою:
- Внутрішня адреса — це адреса пристрою, що перетворюється механізмом NAT.
- Зовнішня адреса — це адреса облаштування призначення.
У рамках NAT по відношенню до адрес також використовується поняття локальності або глобальності :
- Локальна адреса — це будь-яка адреса, що з’являється у внутрішній частині мережі.
- Глобальна адреса — це будь-яка адреса, що з’являється в зовнішній частині мережі.
На малюнку внутрішньою локальною адресою PC1 є 192.168.10.10. З точки зору PC1 веб-сервер використовує зовнішню адресу 209.165.201.1. Коли пакети вирушають з PC1 за глобальною адресою веб-сервера, внутрішня локальна адреса PC1 перетвориться в 209.165.200.226 (внутрішня глобальна адреса). Адреса зовнішнього пристрою зазвичай не перетвориться, оскільки ця адреса зазвичай вже являється публічною IPv4-адресою.
Зверніть увагу, що для PC1 використовуються різні локальний і глобальний адреси, а для веб-сервера в обох випадках використовується одна публічна IPv4-адреса. З точки зору веб-сервера трафік, витікаючий від PC1, представляється таким, що поступає з адреси 209.165.200.226, внутрішньої глобальної адреси. Маршрутизатор NAT (R2 на рис. 4) є точкою розмежування між внутрішньою і зовнішньою мережами, а також між локальними і глобальними адресами.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_4.jpg)
Терміни «внутрішній» і «зовнішній» використовується у поєднанні з термінами «локальний» і «глобальний», коли йдеться про конкретні адреси. На малюнку маршрутизатор R2 налаштований на використання механізму NAT. Він використовує пул публічних адрес, що призначаються внутрішнім вузлам.
- Внутрішня локальна адреса — це адреса джерела, видима з внутрішньої мережі. На малюнку PC1 призначена IPv4-адреса 192.168.10.10. Це внутрішня локальна адреса PC1.
- Внутрішня глобальна адреса — це адреса джерела, видима із зовнішньої мережі. На малюнку, коли PC1 відправляє трафік веб-серверу з адресою 209.165.201.1, R2 перетворить внутрішню локальну адресу у внутрішню глобальну адресу. В цьому випадку R2 міняє початкову IPv4-адресу з 192.168.10.10 на 209.165.200.226. У термінології NAT, внутрішня локальна адреса 192.168.10.10 перетвориться у внутрішню глобальну адресу 209.165.200.226.
- Зовнішня глобальна адреса — це адреса призначення, видима із зовнішньої мережі. Це глобально IPv4, що маршрутизується, -адреса, призначена вузлу в Інтернеті. Наприклад, веб-сервер доступний по IPv4-адресі 209.165.201.1. У більшості випадків зовнішня локальна і зовнішня глобальна адреса співпадають.
- Зовнішня локальна адреса — це адреса призначення, видима з внутрішньої мережі. В даному прикладі PC1 відправляє трафік веб-серверу з IPv4-адресою 209.165.201.1. У окремих випадках ця адреса може відрізнятися від адреси призначення, що глобально маршрутизується.
На рисунку 5 показано, як адресується трафік, відправлений внутрішнім комп’ютером зовнішньому веб-серверу через маршрутизатор з підтримкою NAT. Також показано, як спочатку адресується і перетвориться зворотний трафік.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_5.jpg)
Принцип роботи NAT
В даному прикладі PC1 з приватною адресою 192.168.10.10 хоче підключитися до зовнішнього веб-сервера з публічною адресою 209.165.201.1 (рис. 6).
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_6.jpg)
PC1 посилає пакет, адресований веб-серверу. Пакет пересилається маршрутизатором R1 маршрутизатору R2.
Отримавши пакет, маршрутизатор R2, що підтримує виконання NAT для мережі, прочитує IPv4-адресу призначення пакету, щоб визначити, чи відповідає пакет критеріям, визначеним для перетворення.
В даному випадку IPv4-адреса джерела відповідає критеріям і перетвориться з 192.168.10.10 (внутрішня локальна адреса) в 209.165.200.226 (внутрішня глобальна адреса). Маршрутизатор R2 додає це зіставлення локальної і глобальної адрес в таблицю NAT.
R2 відправляє за призначенням пакет з перетвореною адресою джерела.
Веб-сервер відповідає пакетом, адресованим внутрішній глобальній адресі PC1 (209.165.200.226).
R2 отримує пакет з адресою призначення 209.165.200.226. R2 перевіряє таблицю NAT і знаходить запис для цього зіставлення. R2 використає цю інформацію і перетворить внутрішню глобальну адресу (209.165.200.226) у внутрішню локальну адресу (192.168.10.10), після чого пакет пересилається PC1.
Типи перетворень мережевих адрес NAT
Статичне перетворення мережевих адрес (NAT)
Існують три механізми перетворення мережевих адрес :
- Статичне перетворення мережевих адрес (статичний NAT) — ця взаємно-однозначна відповідність між локальною і глобальною адресою.
- Динамічне перетворення мережевих адрес (динамічний NAT) — це зіставлення адрес за схемою «багато до багатьох» між локальними і глобальними адресами.
- Перетворення адрес портів (PAT) — це зіставлення адрес за схемою «багато до одного» між локальними і глобальним адресами. Цей метод також називається перевантаженням (NAT з перевантаженням).
Статичний NAT використовує зіставлення локальних і глобальних адрес за схемою «один в один». Ці відповідності задаються адміністратором мережі і залишаються незмінними. На рисунку 7 для маршрутизатора R2 налагоджені статичні відповідності для внутрішніх локальних адрес Svr1, PC2 і PC3. Коли ці пристрої відправляють трафік в Інтернет, їх внутрішні локальні адреси перетворяться в задані внутрішні глобальні адреси. Для зовнішніх мереж ці пристрої використовують публічні IPv4-адреси.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_7.jpg)
Метод статичного перетворення мережевих адрес особливо корисний для веб-серверів або пристроїв, які повинні мати постійну адресу, доступну з Інтернету, — наприклад, для веб-сервера компанії. Статичний NAT також підходить для пристроїв, які мають бути доступні авторизованому персоналу, працюючому поза офісом, але при цьому залишатися закритими для загального доступу через інтернет. Наприклад, мережевий адміністратор може з PC4 підключитися за допомогою SSH до внутрішньої глобальної адреси Svr1 (209.165.200.226). Маршрутизатор R2 перетворить цю внутрішню глобальну адресу у внутрішню локальну адресу і підключає сеанс адміністратора до Svr1.
Для статичного NAT потрібно достатню кількість публічних адрес, доступних для загальної кількості одночасних сеансів користувачів.
Динамічне перетворення мережевих адрес NAT
Метод динамічного перетворення мережевих адрес (динамічний NAT) використовує пул публічних адрес, які привласнюються в порядку живої черги. Коли внутрішній пристрій просить доступ до зовнішньої мережі, динамічний NAT привласнює доступну публічну IPv4-адресу з пулу.
На рисунку 8 PC3 отримує доступ до Інтернету, використовуючи першу доступну адресу в пулі динамічного NAT. Інші адреси як і раніше доступні для використання. Аналогічно статичному NAT, для динамічного NAT потрібно достатню кількість публічних адрес, здатну забезпечити загальну кількість одночасних сеансів користувачів.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_8.jpg)
Перетворення адрес портів (PAT)
Перетворення адрес портів (PAT), так зване NAT з перевантаженням, зіставляє безліч приватних IPv4-адрес одному або декільком публічним IPv4-адресам (рис. 9). Саме цей метод реалізується більшістю домашніх маршрутизаторів. Інтернет-провайдер призначає маршрутизатору одну адресу, але декілька членів сім’ї можуть одночасно діставати доступ в Інтернет. NAT з перевантаженням — це найбільш поширений метод перетворення мережевих адрес.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_9.jpg)
За допомогою цього методу безліч адрес можуть бути зіставлені одному або декільком адресам, оскільки кожна приватна адреса також відстежуються по номеру порту. Якщо пристрій починає сеанс TCP/IP, він створює значення порту TCP або UDP для джерела, щоб унікальним чином визначити сеанс. Коли маршрутизатор NAT отримує пакет від клієнта, він використовує свій номер порту джерела, щоб унікальним чином визначити конкретне перетворення NAT.
PAT гарантує, що пристрої використовуватимуть різні номери портів TCP для кожного сеансу взаємодії з сервером в Інтернеті. При поверненні відповіді від сервера номер порту джерела, яке стає номером порту призначення при зворотній передачі, визначає, якому пристрою маршрутизатор перешле відповідні пакети. Процес PAT також переконується в тому, що пакети, що входять, дійсно були запрошені, підвищуючи таким чином міру безпеки сеансу.
Для того, щоб розрізняти перетворення, механізм PAT додає унікальні номери портів джерела до внутрішньої глобальної адреси.
Оскільки маршрутизатор R2 обробляє кожен пакет, він використовує номер порту (у даному прикладі 1331 і 1555) для ідентифікації пристрою, з якого поступив пакет. Адреса джерела (SA) — це внутрішня локальна адреса з доданим призначеним номером порту TCP/IP. Адреса призначення (DA) — це зовнішня локальна адреса з доданим номером порту служби. У цьому прикладі порт служби рівний 80: HTTP. Для адреси джерела маршрутизатор R2 перетворить внутрішню локальну адресу у внутрішню глобальну адресу з доданим номером порту. Адреса призначення не міняється, але тепер вона стає зовнішньою глобальною IP-адресою. Коли веб-сервер відповідає, шлях проходиться знову, тільки в зворотному порядку.
Наступний доступний порт
У попередньому прикладі номера портів клієнта, 1331 і 1555, не змінювалися на маршрутизаторі з підтримкою NAT. Цей сценарій не дуже правдоподібний, оскільки велика вірогідність того, що ці номери портів вже використовуються для інших активних сеансів.
Перетворення PAT намагається зберегти оригінальний порт джерела. У тому випадку, якщо оригінальний порт джерела вже використовується, PAT призначає перший доступний номер порту, починаючи з початку відповідної групи портів — 0-511, 512-1023 або 1024-65535 (рис. 10). Якщо доступних портів більше немає, а в пулі адрес є декілька зовнішніх адрес, PAT переходить до наступної адреси, намагаючись виділити оригінальний порт джерела. Цей процес триває до тих пір, поки не вичерпаються як доступні порти, так і зовнішні IP-адреси.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_10.jpg)
Порівняння NAT і PAT
Сформульовані нижче відмінності між NAT і PAT допоможуть зрозуміти особливості кожного з цих методів перетворення мережевих адрес.
Як показано на малюнку 11, NAT перетворить IPv4-адреси, виходячи з схеми 1:1 для приватних IPv4-адрес і публічних IPv4-адрес. В той же час, PAT змінює і адресу, і номер порту.
NAT пересилає пакети, що входять, по їх внутрішньому призначенню, використовуючи IPv4-адреси джерела, що входять, надані вузлом в публічній мережі. При використанні PAT зазвичай задіюється тільки один або невелика кількість публічно представлених IPv4-адрес. Пакети, що входять, з публічної мережі спрямовуються адресатам в приватній мережі за допомогою таблиці маршрутизатора NAT. Ця таблиця відстежує пари публічних і приватних портів, що називається відстежуванням з’єднань.
Що ж відбувається з пакетами IPv4, які передають дані, що не є сегментом TCP або UDP? Ці пакети не містять номери порту рівня 4. PAT перетворить більшість основних протоколів, що передаються за допомогою IPv4 і не використовуючих TCP або UDP, в протокол транспортного рівня. Найпоширенішим серед таких протоколів є протокол ICMPv4. Процес перетворення PAT обробляє кожного з цих протоколів по-різному. Наприклад, повідомлення запитів ICMPv4, ехо-запити і ехо-відповіді містять ідентифікатор запиту (Query ID). ICMPv4 використовує ідентифікатор запиту (Query ID), щоб визначити ехо-запит з відповідною ехо-відповідю. Ідентифікатор запиту збільшується з кожним відправленим ехо-запитом. PAT використовує ідентифікатор запиту замість номера порту рівня 4.
![](https://the-purple.team/wp-content/uploads/2023/08/NAT_11.jpg)
Переваги та недоліки NAT
NAT забезпечує безліч переваг, у тому числі наступні:
- NAT зберігає офіційно зареєстровану схему адресації, дозволяючи приватне використання внутрішніх мереж. NAT економить адреси завдяки мультиплексуванню додатків на рівні портів. При використанні NAT з перевантаженням внутрішні вузли можуть використати для усіх зовнішніх взаємодій одну публічну IPv4-адресу. При цьому типі конфігурації, для підтримки безлічі внутрішніх вузлів, потрібно дуже невелику кількість зовнішніх адрес.
- NAT підвищує гнучкість підключень до публічної мережі. Для забезпечення надійних підключень до публічної мережі можна створити множинні пули, резервні пули і пули розподілу навантаження.
- NAT забезпечує узгодженість схем внутрішньої мережевої адресації. Якщо в мережі не використовуються приватні IPv4-адреси і NAT, зміна схеми публічних IPv4-адрес зажадає зміни адрес усіх вузлів існуючої мережі. Витрати на зміну адресації вузлів можуть виявитися істотними. NAT дозволяє зберегти існуючу схему приватних IPv4-адрес, одночасно підтримуючи простий перехід на нову схему публічної адресації. Це означає, що організація може змінити інтернет-провайдера, не змінюючи налаштувань своїх внутрішніх клієнтів.
- NAT забезпечує безпеку мережі. Оскільки приватні мережі не оголошують ні свої адреси, ні внутрішню топологію, вони залишаються достатньою мірою захищеними при використанні NAT для здійснення керованого зовнішнього доступу. Проте, NAT не замінює міжмережеві екрани.
Перетворення мережевих адрес (NAT) має ряд недоліків. Той факт, що вузли в Інтернеті взаємодіють безпосередньо з пристроєм, підтримувальним NAT, а не з фактичним вузлом приватної мережі, створює ряд проблем.
Один з недоліків використання NAT пов’язаний з продуктивністю мережі, особливо це стосується протоколів реального часу, таких як VoIP. NAT збільшує затримки комутації, оскільки перетворення кожної IPv4-адреси в заголовках пакетів вимагає часу. Комутація першого пакету є програмним процесом — цей пакет завжди проходить повільнішим шляхом. Маршрутизатор повинен аналізувати кожен пакет, щоб вирішити, чи потрібно його перетворення. Маршрутизатор повинен змінити заголовок IPv4 і, по можливості, змінити заголовок TCP або UDP. При кожному перетворенні має бути перерахована контрольна сума заголовка IPv4, а також контрольна сума TCP або UDP. Якщо в кеші є відповідний запис, інші пакети проходять по шляхові зі швидкою комутацією. Інакше вони теж затримуються.
Іншим недоліком використання NAT є втрата наскрізної адресації. Багато інтернет-протоколів і додатки залежать від наскрізної адресації від джерела до вузла призначення. Деякі застосування не сумісні з NAT. Наприклад, деякі додатки безпеки, такі як електронні підписи, не працюють з NAT, оскільки IPv4-адреса джерела змінюється, перш ніж пакет устигає досягти вузла призначення. Додатки, що використовують фізичні адреси замість доменних імен, не можуть досягти вузлів призначення, при проходженні через маршрутизатор, використовуючий NAT. В деяких випадках цієї проблеми можна уникнути за допомогою статичних зіставлень NAT.
Крім того, втрачається можливість трасування наскрізного з’єднання IPv4. Дуже сильно ускладнюється трасування пакетів, що піддаються численним змінам адреси пакету при проходженні декількох ділянок NAT, що, у свою чергу, утрудняє усунення неполадок.
Використання NAT також ускладнює протоколи тунелювання, такі як IPsec, оскільки NAT змінює значення в заголовках, що заважає перевіркам цілісності, виконуваним протоколом IPsec і іншими протоколами тунелювання.
Робота служб, що вимагають ініціалізації з’єднань TCP із зовнішньої мережі або використовують протоколи без урахування стану, наприклад, на основі UDP, може бути порушена. Якщо на маршрутизаторі NAT не налагоджена підтримка таких протоколів, пакети, що входять, не зможуть досягти свого призначення. Деякі протоколи можуть підтримувати один екземпляр NAT між вузлами-учасниками (наприклад, FTP в пасивному режимі), але не працюють, якщо обидві системи відокремлені від Інтернету за допомогою NAT.