NAT
NAT (від англ. Network Address Translation — «перетворення мережевих адрес») — це механізм у мережах TCP/IP, котрий дозволяє змінювати IP-адресу у заголовку пакету, що проходить через пристрій маршрутизації трафіку. Також має назви IP Masquerading, Network Masquerading і Native Address Translation.
Перетворення адреси методом NAT може виконувати майже будь-який маршрутизаційний пристрій — маршрутизатор[1], сервер доступу, міжмережевий екран (фаєрвол). Найпопулярнішим є SNAT, суть механізму котрого полягає в заміні адреси джерела (англ. source) при проходженні пакета в один бік і зворотній заміні адреси призначення (англ. destination) у зворотному пакеті. Поряд з адресами джерела/призначення можуть також замінюватися номери портів джерела і призначення.
Приймаючи пакет від локального комп'ютера, роутер переглядає IP-адресу призначення. Якщо це локальна адреса, то пакет пересилається іншому локальному комп'ютерові. Якщо ні, то пакет слід переслати назовні до інтернету. Але зворотною адресою в пакеті вказано локальну адресу комп'ютера, котра з інтернету буде недоступна. Тому роутер «на льоту» транслює (підміняє) зворотну 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, часто зустрічається у зв'язку з VoIP.[2] Термін «з'єднання» використаний у значенні «послідовний обмін пакунками UDP».
Симетричний NAT (Symmetric NAT) — трансляція, при якій кожне з'єднання, ініційоване парою «внутрішня адреса: внутрішній порт» перетворюється у вільну унікальну, випадково вибрану пару «публічна адреса: публічний порт». При цьому, ініціація з'єднання з публічної мережі неможлива.
Cone NAT, Full Cone NAT — однозначна (взаємна) трансляція між парами «внутрішня адреса: внутрішній порт» і «публічна адреса: публічний порт». Кожен зовнішній хост може ініціювати з'єднання з внутрішнім хостом (якщо це дозволене у правилах міжмережевого екрана (брандмауера).
Address-Restricted cone NAT, Restricted cone NAT — постійна трансляція між парою «внутрішня адреса: внутрішній порт» і «публічна адреса: публічний порт». Кожне з'єднання, ініційоване з внутрішньої адреси, дозволяє надалі отримувати йому пакети з будь-якого порту того публічного хоста, до якого він відправляв пакет(ти) раніше.
Port-Restricted cone NAT — трансляція між парою «внутрішня адреса: внутрішній порт» і «публічна адреса: публічний порт», при якій пакети що надходять до внутрішнього хосту тільки з одного порту публічного хоста — того, на котрий внутрішній хост вже відправляв пакет.
NAT виконує три важливі функції.
- Дозволяє заощаджувати IP-адреси (тільки у разі використання NAT у режимі PAT), транслюючи декілька внутрішніх IP-адрес в одну зовнішню публічну IP-адресу (або у декілька, але все ж в меншу кількість, ніж внутрішніх). За таким принципом побудована більшість мереж у світі: на невеликий район домашньої мережі місцевого провайдера або на офіс виділяється одна публічна (зовнішня) IP-адреса, за котрою працюють і отримують доступ інтерфейси з приватними (внутрішніми) IP-адресами.
- Дозволяє запобігти або обмежити обіг ззовні до внутрішніх хостів, залишаючи можливість обігу зсередини назовні. При ініціації з'єднання зсередини мережі створюється трансляція. Відповідні пакети, які надходять зовні, відповідають створеній трансляції і тому пропускаються. Якщо для пакетів, які надходять ззовні, відповідної трансляції не існує (а вона може бути створеною при ініціації з'єднання або статичною), вони не пропускаються.
- Дозволяє приховати визначені внутрішні сервіси внутрішніх хостів/серверів. По суті, виконується та ж, вказана вище, трансляція на визначений порт, але можна підмінити внутрішній порт офіційно зареєстрованої служби (наприклад, 80-й порт TCP (HTTP-сервер) на зовнішній 54055-й). Тим самим, зовні, на зовнішній IP-адресі після трансляції адрес на сайт (або форум) для обізнаних відвідувачів можна буде потрапити за адресою http://example.org:54055, але на внутрішньому сервері, який знаходиться за NAT, він буде працювати на звичайному 80-му порту. Підвищення безпеки і приховування «непублічних» ресурсів.
- Старі протоколи. Протоколи, розроблені до масового впровадження NAT, не в змозі працювати, якщо на шляху між взаємодіючими хостами є трансляція адрес. Деякі міжмережеві екрани, які здійснюють трансляцію IP-адрес, можуть виправити цей недолік, відповідним чином замінюючи IP-адреси не тільки в заголовках IP, але і на більш високих рівнях (наприклад, в командах протоколу FTP). Див. Application-level gateway[en].
- Ідентифікація користувачів. Через трансляції адрес «багато в один» з'являються додаткові складнощі з ідентифікацією користувачів і необхідність зберігати повні логи трансляцій.
- Ілюзія DoS-атаки. Якщо NAT використовується для підключення багатьох користувачів до одного і того ж сервісу, це може викликати ілюзію DoS-атаки на сервіс (безліч успішних і неуспішних спроб). Наприклад, надмірна кількість користувачів ICQ за NAT приводить до проблеми з підключенням до сервера деяких користувачів через перевищення допустимої швидкості підключень. Частковим вирішенням проблеми є використання пулу адрес (групи адрес), для яких здійснюється трансляція.
- Пірингові мережі. У NAT-пристроях, які не підтримують Universal Plug & Play, в деяких випадках, необхідна додаткова настройка (див. Трансляція порт-адреси) при роботі з піринговими мережами і деякими іншими програмами, в яких необхідно не тільки ініціювати вихідні з'єднання, але також приймати вхідні...
Трансляція локальної мережі з діапазоном адрес 172.16.14.0/24 у глобальну мережу буде здійснюватися через одну зовнішню IP-адресу (адресу маршрутизатора, котра виконує трансляцію).
Сенс технології NAT loopback (або NAT hairpinning) простий: якщо пакет надходить з внутрішньої мережі на зовнішню IP-адресу маршрутизатора, він вважається надійшовшим ззовні — а значить, працюють правила брандмауера, що відносяться до зовнішніх з'єднань. І якщо пакет успішно пройде крізь брандмауер, спрацює NAT, взявши на себе посередництво між двома внутрішньомережевими машинами. Це дає дві речі
- Прямо зсередини локальної мережі можна перевірити, як налаштовані мережеві служби.
- Доступ до сервера, що знаходиться в локальній мережі, по доменному імені. Без NAT loopback довелося б правити файл hosts на кожній машині для кожного задіяного домену та піддомену.
Недоліком NAT loopback можна вважати підвищене навантаження на хаб і маршрутизатор (в порівнянні з прямим доступом до серверу).
NAT Traversal (проходження або автоналаштування NAT) — це набір можливостей, що дозволяє мережевим додаткам визначати, що вони перебувають за пристроєм, забезпеченим NAT, дізнаватися зовнішню IP-адресу цього пристрою і виконувати зіставлення портів для пересилання пакунків з зовнішнього порту NAT на внутрішній порт, використовуваний додатком; все це виконується автоматично, користувачу немає необхідності вручну налаштовувати співставлення портів або вносити зміни у будь-які інші параметри. Однак існують запобіжні заходи у довірі до таких додатків — вони отримують широкий контроль над пристроєм, з'являються потенційні вразливості.
При наявності вже існуючого сервера під управлінням серверної ОС можливо організовувати трансляцію адрес без необхідності закупівлі додаткових, апаратних пристроїв.
З точки зору відмовостійкості, гнучкості і продуктивності, використовують операційні системи сімейства UNIX (більшість GNU/Linux, BSD-системи, а також OpenSolaris і т. ін.). У багатьох з них NAT доступний «з коробки», в інших можлива реалізація за рахунок додавання модулів у поєднанні з міжмережевими екранами з функціями трансляції адрес (IPFW, IPtables #і т. ін.). Також, NAT працює «з коробки» у сімействі операційних систем Windows Server.
- ↑ Network Protocols Handbook. — 2. — Javvin Technologies Inc. — С. 27. — ISBN 9780974094526.
- ↑ Андрей Жуков. Типы Network Address Translation (NAT) [Архівовано 8 травня 2020 у Wayback Machine.]
Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. |