NAT

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

NAT (від англ. Network Address Translation — «перетворення мережевих адрес») — це механізм у мережах TCP/IP, котрий дозволяє змінювати IP-адресу у заголовку пакунку, котрий проходить через пристрій маршрутизації трафіку. Також має назви IP Masquerading, Network Masquerading і Native Address Translation.

Функціонування[ред. | ред. код]

Перетворення адреси методом NAT може производитись майже будь-яким маршрутизуючим пристроєм — маршрутизатором[1], сервером доступу, міжмережевим екраном (фаєрволом). Найбільш популярным являється SNAT, суть механізму котрого складається у заміні адреси джерела ( англ. source ) при проходженні пакету в одну сторону і зворотній заміні адреси призначення ( англ. destination ) у зворотньому пакеті. Поряд з адресами джерело/призначення можуть також замінюватися номера портів джерела і призначення.

Приймаючи пакет від локального комп'ютера, роутер доглядає на IP-адресу призначення. Якщо це локальна адреса, то пакет пересилається іншому локальному комп'ютерові. Якщо нi, то пакет слід переслати назовні до інтернету. Але зворотнею адресою у пакеті вказана локальна адреса комп'ютера, котра з інтернета буде недоступна. Тому роутер «на льоту» транслює (підміняє) зворотню IP-адресу пакету на свою зовнішню (видиму з інтернету) IP-адресу, а також міняє номер порту (щоб розрізняти зворотні пакети, адресованні різним локальним комп'ютерам). Комбінацію, потрібну для зворотної підстановки, роутер зберігає у себе у тимчасовій таблиці. Через деякий час після того, як клієнт і сервер закінчать обмінюватися пакетами, роутер зітре у себе в таблиці запис про n-м порт за строком давнини.

Окрім source NAT (надання користувачам локальної мережі з внутрішніми адресами доступу до мережі Інтернет) часто застосовуєтся також destination NAT, коли обіги ззовні транслюються міжмережевым екраном на комп'ютер користувача у локальній мережі, котрий має внутрішню адресу і тому недоступный ззовні мережі безпосередньо (без NAT).

Існує 3 базових концепції трансляції адрес: статична (Static Network Address Translation), динамічна (Dynamic Address Translation), перевантажена (NAPT, NAT Overload, PAT).

Статичний NAT — відображення незареєстрованої IP-адреси на зареєстровану IP-адресу на основі один к одному. Особливо корисно, коли пристрій повинен бути доступним зовні мережі.

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

Перевантажений NAT (NAPT, NAT Overload, PAT, маскарадинг) — форма динамічного NAT, котрий переобразовує декілька незареєстрованих адрес у єдину зареєстровану IP-адресу, використовуючи різноманітні порти. Відомий також як PAT (Port Address Translation). При перевантаженні кожен комп'ютер у приватній мережі транслюєтся у ту ж саму адресу, але з різним номером порту.

Механізм NAT визначений у RFC 1631, RFC 3022.

Типи NAT[ред. | ред. код]

Класифікація NAT, часто зустрічається у зв'язку з VoIP.[2] Термін «сполука» використаний у значенні «послідовний обмін пакунками UDP».

Симетричний NAT (Symmetric NAT) — трансляція, при котрої кожне сполучення, ініційоване парою «внутрішня адреса: внутрішній порт» перетворюється в свободную уникальну, випадково вибрану пару «публічну адресу: публічний порт». При цьому, ініціація сполуки з публічної мережі неможлива.  [джерело не вказано 1353 дні]

Cone NAT, Full Cone NAT — однозначна (взаємна) трансляція між парами «внутрішня адреса: внутрішній порт» і «публічна адреса: публічний порт». Кожен зовнішній хост може ініціювати сполуку з внутрішнім хостом (якщо це дозволене у правилах міжмережевого екрана (брандмауера)).

Address-Restricted cone NAT, Restricted cone NAT — постійна трансляція між парою «внутрішня адреса: внутрішній порт» і «публічна адреса: публічний порт». Кожна сполука, ініційована з внутрішньої адреси, дозволяє надалі отримувати йому пакунки з будь-якого порту того публічного хоста, до якого він відправляв пакунок(ки) раніше.

Port-Restricted cone NAT — трансляція між парою «внутрішня адреса: внутрішній порт» і «публічна адреса: публічний порт», при котрої пакунки що надходять до внутрішнього хосту тільки з одного порту публічного хоста — того, на котрий внутрішній хост вже відправляв пакунок.

Переваги[ред. | ред. код]

NAT виконує три важливі функції.

  1. Дозволяє заощаджувати IP-адреси (тільки у разі використання NAT у режимі PAT), транслюючи декілька внутрішніх IP-адрес в одну зовнішню публічну IP-адресу (або у декілька, але меньшою кількістю, чим внутрішніх). За таким принципом збудована більшість мереж у світі: на невеликий район домашньої мережі місцевого провайдера або на офіс виділяється 1 публічна (зовнішня) IP-адреса, за котрим працюють і отримують доступ інтерфейси з приватными (внутрішніми) IP-адресами.
  2. Дозволяє запобігти або обмежити обіг зовні до внутрішніх хостів, залишаючи можливість обігу зсередини назовні. Прі ініціації сполуки зсередини мережі створюється трансляція. Відповідні пакунки, які надходять зовні, відповідають створеної трансляції і тому пропускаються. Якщо для пакунків, які надходять зовні, відповідної трансляції не існує (а вона може бути створеної при ініциації сполуки або статичної), вони не пропускаються.
  3. Дозволяє приховати визначені внутрішні сервіси внутрішніх хостів/серверів. По суті, виконується та ж вказана вище трансляція на визначений порт, але можливо підмінити внутрішній порт офіційно зареєстрованої служби (наприклад, 80-й порт TCP (HTTP-сервер) на зовнішній 54055-й). Тим самим, зовні, на зовнішній IP-адресі після трансляції адрес на сайт (або форум) для обізнаних відвідувачів можна буде потрапити за адресою http://example.org:54055, але на внутрішньому сервері, який знаходиться за NAT, він буде працювати на звичайному 80-му порту. Підвищення безпеки і приховування «непублічних» ресурсів.

Недоліки[ред. | ред. код]

  1. Старі протоколи. Протоколи, розроблені до масового впровадження NAT, не в змозі працювати, якщо на шляху між взаємодіючими хостами є трансляція адрес. Деякі міжмережеві екрани, які здійснюють трансляцію IP-адрес, можуть виправити цей недолік, відповідним чином замінюючи IP-адреси не тільки в заголовках IP, але і на більш високих рівнях (наприклад, в командах протоколу FTP). См. Application-level gateway.
  2. Ідентифікація користувачів. Через трансляції адрес «багато в один» з'являються додаткові складнощі з ідентифікацією користувачів і необхідність зберігати повні логи трансляцій.
  3. Ілюзія DoS-атаки. Якщо NAT використовується для підключення багатьох користувачів к одному і тому ж сервісу, це може викликати ілюзію DoS-атаки на сервіс (безліч успішних і неуспешных спроб). Наприклад, надмірна кількість користувачів ICQ за NAT приводить к проблемі з подключенням до сервера деяких користувачів із-за перевищення допустимої швидкості підключень. Частковим вирішенням проблеми є використання пулу адрес (групи адрес), для яких здійснюється трансляція.
  4. Пірінгові мережі. У NAT-пристроях, які не підтримують Universal Plug & Play, в деяких випадках, необхідна додаткова настройка (см. Трансляція порт-адреса) при роботі з пірінговими мережами і деякими іншими програмами, в яких необхідно не тільки ініціювати вихідні з'єднання, але також приймати входящі..

Приклад[ред. | ред. код]

Трансляція локальної мережі з діапазоном адрес 172.16.14.0/24 у глобальну мережу буде здійснюватися через одну зовнішню IP-адресу (адресу маршрутизатора,котра виконує трансляцію).

Застосування:IP мережа через єдину IP-адресу[ред. | ред. код]

  • NAT.svg
  • На робочих станціях вказаний шлюз за замовчуванням або gateway
  • Перетворює службові заголовки, формує ідентичний IP-пакунок
    Файл:Ip-paket.JPG
  • Публікація локальних ресурсів у зовнішній IP-мережі
    Файл:Ip-set.JPG

• Економічна вигода в наслідок набуття єдиного IP-підключення, а не IP-мережі.

• Приховування від зовнішнього спостерігача структури внутрішньої IP-мережі.

• Організація системи з розподіленим навантаженням.

• При загальному доступі через NAT прозоро відкривається доступ до внутрішньої структури із захистом без використання міжмережевого екрана ( брандмауера ) і т. п.

• Через NAT коректно працюють багато мережевих протоколів. Конструктивні реалізації (спільний доступ - це і є підключення NAT) є апаратна реалізація NAT (інтегровані міжмережеві екрани).

NAT loopback[ред. | ред. код]

Сенс технології NAT loopback (або NAT hairpinning) прост: якщо пакунок надходить з внутрішньої мережі на зовнішню IP-адресу маршрутизатора, він вважаєтся пришедшим ззовні — а значить, працюють правила брандмауэра, що відносяться до зовнішніх з'єднань. І якщо пакет успішно пройде крізь брандмауэр, спрацює NAT, взявши на себе посередництво між двома внутрішньомережевими машинами. Це дає дві речі.

  1. Прямо зсередини локальної мережі можна перевірити, як налаштовані мережеві служби.
  2. Доступ до сервера, що знаходиться в локальній мережі, по доменному імені. Без NAT loopback довелося б правити файл hosts на кожній машині для кожного задіяного домену та піддомену.

Недоліком NAT loopback можна вважати підвищене навантаження на хаб і маршрутизатор (в порівнянні з прямим доступом до серверу).

NAT Traversal[ред. | ред. код]

NAT Traversal (проходження або автонастройка NAT) — це набір можливостей, дозволяющіх мережевим додаткам визначати, що вони перебувають за пристроєм, забезпечующім NAT, дізнаватися зовнішню IP-адресу цього пристрою і виконувати зіставлення портів для пересилання пакунків з зовнішнього порту NAT на внутрішній порт, використовуваний додатком; все це виконується автоматично, користувачу немає необхідності вручну налаштовувати сопоставлення портів або вносити зміни у будь-які інші параметри. Однак існують запобіжні заходи у довірі к таким додаткам — вони отримують обширный контроль над пристроєм, з'являються потенційні вразливості.

Програмна реалізація NAT[ред. | ред. код]

При наявності вже існуючого сервера під управлінням серверной ОС можливо організовувати трансляцію адрес без необхідності закупівлі додаткових, апаратных пристроїв. Як правило для програмної реалізації NAT вимагає наявності принаймні двох мережевих адаптерів в сервері (можливі варіанти з одним, але при наявності trunk-VLAN).

Усі існуючі, а також використовувані зараз серверні ОС підтримують найпростішу трансляцію адрес.

З точки зору відмовостійкості, гнучкості і продуктивності, використовують операційні системи сімейства UNIX (більшість GNU/Linux, BSD-системи, а також OpenSolaris і др.). У багатьох з них NAT доступний «з коробки», в інших можлива реалізація за рахунок додавання модулів у поєднанні з міжмережевими екранами з функціями трансляції адрес (IPFW, IPtables #і др.). Також, NAT працює «з коробки» у сімействі операційних систем Windows Server.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Network Protocols Handbook. — 2. — Javvin Technologies Inc. — С. 27. — ISBN 9780974094526.
  2. Андрей Жуков. Типы Network Address Translation (NAT)