Види nat. Перетворення мережевих адрес (NAT). Технологія NAT loopback та NAT Traversal

ІР-адреси є дефіцитним ресурсом. У провайдера може бути /16-адреса (колишній клас В), що дає можливість підключити 65 534 хоста. Якщо клієнтів стає більше, починають виникати проблеми. Хостам, що підключаються до Інтернету час від часу по звичайній телефонній лінії, можна виділяти IP-адреси динамічно, лише на час з'єднання. Тоді одна /16-адреса обслуговуватиме до 65 534 активних користувачів, і цього, можливо, буде достатньо для провайдера, який має кілька сотень тисяч клієнтів. Коли сесія зв'язку завершується, IP-адреса присвоюється новому з'єднанню. Така стратегія може вирішити проблеми провайдерів, які мають невелику кількість приватних клієнтів, що з'єднуються по телефонній лінії, проте не допоможе провайдерам, більшу частину клієнтури яких становлять організації.

Справа в тому, що корпоративні клієнти вважають за краще мати постійне з'єднання з Інтернетом, принаймні протягом робочого дня. І в маленьких конторах, наприклад туристичних агенствах, що з трьох співробітників, й у великих корпораціях є локальні мережі, які з деякого числа комп'ютерів. Деякі комп'ютери є робочими станціями співробітників, деякі є веб-серверами. У загальному випадку є маршрутизатор ЛОМ, з'єднаний з провайдером виділеної лінії для забезпечення постійного підключення. Таке рішення означає, що з кожним комп'ютером цілий день пов'язана одна IP-адреса. Взагалі навіть всі разом узяті комп'ютери, що є у корпоративних клієнтів, не можуть перекрити наявні у провайдера IP-адреси. Для адреси довжини /16 ця межа дорівнює, як ми вже зазначали, 65 534. Однак якщо у постачальника послуг Інтернету кількість корпоративних клієнтів обчислюється десятками тисяч, то ця межа буде досягнута дуже швидко.

Проблема ускладнюється ще й тим, що все більше приватних користувачів бажають мати ADSL або кабельне з'єднання з Інтернетом. Особливості цих способів полягають у наступному:

а) користувачі отримують постійну IP-адресу;

б) відсутня погодинна оплата (стягується лише щомісячна абонентська плата).

Користувачі таких послуг мають постійне підключення до Інтернету. Розвиток у цьому напрямі призводить до зростання дефіциту IP-адрес. Надавати IP-адреси «на льоту», як це робиться при телефонному підключенні, марно, тому що кількість активних адрес в кожний момент часу може бути набагато більше, ніж є у провайдера.

Часто ситуація ще більше ускладнюється за рахунок того, що багато користувачів ADSL та кабельного Інтернету мають вдома два та більше комп'ютери (наприклад, по одному на кожного члена сім'ї) і хочуть, щоб усі машини мали вихід до Інтернету. Що ж робити - адже є тільки одна IP-адреса, видана провайдером! Вирішення таке: необхідно встановити маршрутизатор і об'єднати всі комп'ютери в локальну мережу. З погляду провайдера, у цьому випадку сім'я виступатиме як аналог маленької фірми з кількома комп'ютерами. Ласкаво просимо до корпорації Пупкіних!

Проблема дефіциту IP-адрес аж ніяк не теоретична і не належить до віддаленого майбутнього. Вона вже актуальна і боротися з нею доводиться тут і зараз. Довготривалий проект передбачає тотальний переведення всього Інтернету на протокол IPv6 зі 128-бітною адресацією. Цей перехід справді поступово відбувається, але процес іде настільки повільно, що затягується на роки. Бачачи це, багато хто зрозумів, що потрібно терміново знайти якесь рішення хоча б найближчим часом. Таке рішення було знайдено у вигляді методу трансляції мережевої адреси, NAT (Network Address Translation), описаного в RFC 3022. Суть його ми розглянемо пізніше, а більш детальну інформацію можна знайти (Butcher, 2001).

Основна ідея трансляції мережевої адреси полягає у присвоєнні кожній фірмі однієї IP-адреси (або принаймні невеликої кількості адрес) для інтернет-трафіку. Усередині фірми кожен комп'ютер отримує унікальну IP-адресу, яка використовується для маршрутизації внутрішнього трафіку. Однак, як тільки пакет залишає межі будівлі фірми і прямує до провайдера, виконується трансляція адреси. Для реалізації цієї схеми було створено три діапазони про приватних IP-адрес. Вони можуть використовуватися всередині компанії на її розсуд. Єдине обмеження полягає в тому, що пакети з такими адресами в жодному разі не повинні з'являтися в Інтернеті. Ось ці три зарезервовані діапазони:

10.0.0.0 - 10.255.255.255/8 (16 777 216 хостів)

172.16.0.0 - 172.31.255.255/12 (1048576 хостів)

192.168.0.0 -192.168.255.255/16 (65 536 хостів)

Робота методу трансляції мережевих адрес показана на наступній схемі. У межах території компанії кожна машина має власну унікальну адресу виду 10.x.y.z. Тим не менш, коли пакет виходить за межі володінь компанії, він проходить через NAT-блок, що транслює внутрішню IP-адресу джерела (10.0.0.1 на малюнку) в реальну IP-адресу, отриману компанією від провайдера (198.60.42.12 для нашого прикладу) . NAT-блок зазвичай являє собою єдиний пристрій з брандмауером, що забезпечує безпеку шляхом строго відстеження вхідного та вихідного трафіку компанії. NAT-блок може бути інтегрований із маршрутизатором компанії.

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

Насправді сталося ось що. Розробники NAT помітили, що більшість корисного навантаження IP-пакетів - це або TCP, або UDP . Обидва формати мають заголовки, що містять номери портів джерела та приймача. Номери портів є 16-розрядними цілими числами, що показують, де починається і де закінчується TCP-з'єднання. Місце зберігання номерів портів використовується як поле, необхідне NAT.

Коли процес хоче встановити TCP-з'єднання з віддаленим процесом, він зв'язується з вільним TCP-портом на своєму комп'ютері. Цей порт стає портом джерела, який повідомляє TCP-коду інформацію про те, куди направляти пакети даного з'єднання. Процес також визначає порт призначення. Через порт призначення повідомляється, кому віддати пакет на віддаленій стороні. Порти з 0 до 1023 зарезервовані для добре відомих сервісів. Наприклад, 80-й порт використовується веб-серверами, відповідно, ними можуть орієнтуватися віддалені клієнти. Кожне вихідне повідомлення TCP містить інформацію про порт джерела та порт призначення. Разом вони служать для ідентифікації процесів обох кінцях, які використовують з'єднання.

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

За допомогою поля Порт джерела ми можемо вирішити проблему відображення адрес. Коли вихідний пакет надходить до NAT-блоку, адреса джерела виду 192.168.c.d замінюється справжньою IP-адресою. Крім того, поле Порт джерела TCP замінюється індексом таблиці перекладу NAT-блоку, що містить 65536 записів. Кожен запис містить вихідну IP-адресу та номер вихідного порту. Нарешті, перераховуються та вставляються в пакет контрольні суми заголовків TCP та IP. Необхідно замінювати поле Порт джерела, тому що машини з місцевими адресами 10.0.0.1 і 10.0.0.2 можуть випадково побажати скористатися одним портом (5000-м, наприклад). Отже, для однозначної ідентифікації процесу відправника одного поля Порт джерела виявляється недостатньо.

Коли пакет прибуває на блок NAT з боку провайдера, витягується значення поля Порт джерела заголовка TCP. Воно використовується як індекс таблиці відображення NAT-блоку. За знайденим у цій таблиці запису визначаються внутрішній IP-адреса і справжній Порт джерела TCP. Ці два значення вставляють у пакет. Потім заново підраховуються контрольні суми TCP та IP. Пакет передається на головний маршрутизатор для нормальної доставки з адресою виду 192.168.y.z.

У разі застосування ADSL або кабельного Інтернету трансляція мережевих адрес може застосовуватися для полегшення боротьби з нестачею адрес. Надані користувачам адреси мають вигляд 10.x.y.z. Як тільки пакет залишає межі володінь провайдера і йде в Інтернет, він потрапляє в NAT-блок, який перетворює внутрішню адресу на реальну IP-адресу провайдера. На зворотному шляху виконується зворотна операція. У цьому сенсі для решти Інтернету провайдер зі своїми клієнтами, що використовують ADSL і кабельне: з'єднання, представляється у вигляді однієї великої компанії.

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

По-перше, сам принцип трансляції мережевих адрес ніяк не вписується в архітектуру IP, яка передбачає, що кожна IP-адреса унікальним чином ідентифікує лише одну машину у світі. Вся програмна структура Інтернету побудована використання цього факту. При трансляції мережевих адрес виходить, що тисячі машин можуть (і так відбувається насправді) мати адресу 10.0.0.1.

По-друге, NAT перетворює Інтернет з мережі без встановлення з'єднання на щось подібне до мережі, орієнтованої на з'єднання. Проблема в тому, що блок NAT повинен підтримувати таблицю відображення для всіх з'єднань, що проходять через нього. Запам'ятовувати стан з'єднання - справа мереж, орієнтованих на з'єднання, але не мереж без встановлення з'єднань. Якщо NAT-блок ламається і губляться його таблиці відображення, то про всі TCP-з'єднання, що проходять через нього, можна забути. За відсутності трансляції мережевих адрес вихід з ладу маршрутизатора не має жодного ефекту на діяльність TCP. Процес, що відправляє, просто вичікує кілька секунд і посилає заново всі непідтверджені пакети. При використанні NAT Інтернет стає таким же сприйнятливим до збоїв, як мережа з комутацією каналів.

По-третє, NAT порушує одне з фундаментальних правил побудови багаторівневих протоколів: рівень k не повинен робити жодних припущень щодо того, що саме рівень k+1 помістив у поле корисного навантаження. Цей принцип визначає незалежність рівнів один від одного. Якщо колись на зміну TCP прийде ТСР-2, який матиме інший формат заголовка (наприклад, 32-бітова адресація портів), то трансляція мережевих адрес зазнає фіаско. Вся ідея багаторівневих протоколів полягає в тому, щоб зміни в одному з рівнів ніяк не могли вплинути на інші рівні. NAT руйнує цю незалежність.

По-четверте, процеси в Інтернеті зовсім не повинні використовувати лише TCP чи UDP. Якщо користувач машини А вирішить придумати новий протокол транспортного рівня для спілкування з користувачем машини (це може бути зроблено, наприклад, для якогось мультимедійного додатку), то йому доведеться якось боротися з тим, що NAT-блок не зможе коректно обробити поле Порт джерела TCP.

По-п'яте, деякі програми вставляють IP-адреси до тексту повідомлень. Отримувач витягує їх звідти і потім обробляє. Так як NAT не знає нічого про такий спосіб адресації, він не зможе коректно обробити пакети, і будь-які спроби використання цих адрес видаленою стороною призведуть до невдачі. Протокол передачі файлів, FTP (File Transfer Protocol), використовує саме такий метод і може відмовитись працювати при трансляції мережевих адрес, якщо тільки не будуть вжиті спеціальні заходи. Протокол інтернет-телефонії Н.323 також має подібну властивість. Можна поліпшити метод NAT і змусити його коректно працювати з Н.323, але неможливо ж доопрацьовувати його щоразу, коли з'являється новий додаток.

По-шосте, оскільки поле Порт джерела є 16-розрядним, то на одну IP-адресу може бути відображено приблизно 65536 місцевих адрес машин. Насправді це число дещо менше: перші 4096 портів зарезервовані для службових потреб. Загалом, якщо є кілька IP-адрес, то кожна з них може підтримувати до 61440 місцевих адрес.

Ці та інші проблеми, пов'язані з трансляцією мережевих адрес, обговорюються в RFC 2993. Зазвичай противники використання NAT говорять, що вирішення проблеми нестачі IP-адрес шляхом створення тимчасової латки тільки заважає процесу справжньої еволюції, що полягає в переході на IPv6. Але якщо повернуться в реальність, ми побачимо, що в більшості випадків NAT - це просто незамінна річ, особливо для малих офісів з кількістю комп'ютерів від декількох штук до декількох десятків. NAT можна реалізувати власними силами в OS Linux використовуючи

Доброго часу доби, дорогі читачі! Ну, що давайте про NAT.

Сьогодні торкнемося докладніше тему дещо болісну і досить незрозумілу, але більш незрозумілу, ніж болісну.

Більшою мірою ця проблема стосується тих, хто грає в розраховані на багато користувачів ігри і коротко ця проблема звучить приблизно так: "ЧОМУ ДО МЕНІ НІХТО НЕ ЗАХОДИТЬ?". Для інших ця проблема виглядає дещо інакше, а саме:

  • Чому не хитає торрент?
  • Чому користувачі/друзі/знайомі/невідомі особи не можуть підключитися до FTP, WEB, VOIP (TS, Mamble, відро) та інших серверів, які ви так довго намагалися налаштувати і навіть перевіряли, що у вас все працює?
  • Чому ваш особистий домашній сервер пустує? Може це всесвітня змова?

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

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

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

Загальне визначення

NAT (Network Address Translation) - це такий механізм, який дозволяє роутеру визначати які сервіси знаходяться за роутером і повинні бути доступні з інтернету, щоб користувачі звідти могли цими сервісами користуватися (визначення з вікі я брати не став, тому що воно химерне і не всім зрозуміле).

NAT є у всіх роутерах і серверних операційних системах у тому чи іншому вигляді. У роутерах це зазвичай називається port forwarding, у лінуксах iptables, на віндових серверах – у спеціальному оснащенні. А тепер давайте поговоримо про різні типи NAT.

Тип перший, Static NAT

Static NAT не потрібно для дому, а потрібен у тому випадку, якщо провайдер виділив кілька IP адрес (зовнішні або "білі" адреси) вашої компанії, і вам потрібно, щоб деякі сервери завжди були видні з інтернету, при цьому їх адреси не змінювалися .

Тобто. відбувається перетворення адрес 1-1 (один зовнішній IP призначається одному внутрішньому серверу). При такому налаштуванні ваші сервери завжди будуть доступні з Інтернету на будь-якому порту.

  • Перевага такого методу в тому, що ви відкриваєте доступ з інтернету саме для певної програми на певному комп'ютері/сервері, решта портів комп'ютера/сервера залишаються закритими;
  • Недолік у тому, що потрібно всі порти відкривати вручну (іноді програми роблять це за вас за допомогою технології UPnP, але таке буває не завжди).

Післямова

Вийшло дещо сумбурно, та й тема досить непроста, але сподіваюся тепер при слові NAT вас не кидатиме в тремтіння:)

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

PS: За існування статті окреме спасибі другові проекту та члену нашої команди під ніком “barn4k“

NAT (Network address translation) – технологія трансляції мережевих адрес. Технологія NAT дозволила вирішити найбільшу проблему протоколу IPv4: до середини 1990-х років простір IPv4-адрес міг бути повністю вичерпаний. Якби технологію NAT не винайшли, зростання Інтернету значно сповільнилося б. Звичайно, на сьогодні створено нову версію протоколу IP – IPv6. Ця версія підтримує безліч IP-адрес, що існування NAT - безглуздо. Однак досі досить багато організацій використовують у своїй роботі протокол IPv4 і повний перехід на IPv6 відбудеться не скоро. Тому є сенс вивчити технологію NAT.

Трансляція мережевих адрес NAT дозволяє хосту, що не має “білого IP”, здійснювати зв'язок з іншими хостами через Інтернет. Біла IP-адреса являє собою зареєстровану, унікальну, глобальну IP-адресу в мережі Інтернет. Є також “сірі IP-адреси”, які використовуються у приватній мережі та не маршрутизуються у мережі Інтернет. Тому необхідна технологія NAT, яка підмінятиме сіру IP-адресу на білу. Діапазон "сірих IP-адрес" представлений у таблиці.

Трансляція NAT замінює приватні IP-адреси відкритими зареєстрованими IP-адресами у кожному пакеті протоколу IP.

Здійснюючи трансляцію NAT, маршрутизатор змінює IP-адресу відправника в той момент, коли пакет залишає приватну мережу. Маршрутизатор також змінює адресу одержувача кожного пакета, який повертається до приватної мережі. Програмне забезпечення Cisco IOS підтримує кілька різновидів трансляції NAT:

  1. Статична трансляція NAT – кожній приватній IP-адресі відповідає один публічний IP. При використанні статичної трансляції маршрутизатор NAT просто встановлює взаємно однозначну відповідність між приватною та зареєстрованою IP-адресою, від імені якої вона виступає.
  2. Динамічна трансляція NAT – перетворення внутрішніх IP-адрес на зовнішні відбувається динамічно. Створюється пул можливих публічних IP-адрес і з цього пулу динамічно вибираються IP-адреси для перетворення.
  3. Трансляція адрес портів PAT – дозволяє виконати масштабування для підтримки багатьох клієнтів з використанням лише декількох відкритих IP-адрес. PAT транслює мережеву адресу залежно від TCP/UDP-порту одержувача.

Розглянемо докладніше кожен із видів трансляції.

Статична трансляція NATробить точну відповідність між приватною та публічною IP-адресою. Розглянемо з прикладу.

Провайдер ISP компанії призначає зареєстрований номер мережі 200.1.1.0. Відповідно маршрутизатор NAT повинен зробити так, щоб ця приватна адреса виглядала таким чином, якби знаходилася в мережі 200.1.1.0. Для цього маршрутизатор змінює IP-адресу відправника в пакетах, які, як на малюнку, пересилаються зліва направо. У цьому прикладі маршрутизатор змінює приватну IP-адресу 10.1.1.1 на відкриту 200.1.1.1. Іншій приватній адресі 10.1.1.2 відповідає публічна 200.1.1.2. Далі розглянемо налаштування статичного NAT у Cisco.

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

На схемі видно, що користувач отримав від провайдера адресу мережі 100.0.0.0 класу C. Вся ця мережа з маскою 255.255.255.0 налаштована на послідовному каналі між користувачем та Інтернетом. Оскільки це двоточковий канал, у цій мережі використовується лише 2 з 254 дійсних (можливих) IP-адрес.

Конфігурація для роутера NAT_GW:

NAT_GW>enable NAT_GW#configure terminal - Опис інтерфейсу - задаємо шлюз за замовчуванням - Опис інтерфейсу - задаємо Ip та маску NAT_GW(config-if)#no shutdown - Включаємо інтерфейс фізично NAT_GW (config-if) # exit NAT_GW (config) # ip nat inside source static 192.168.1.2 100.0.0.1 NAT_GW (config) # ip nat inside source static 192.168.1.3 100.0.0.2 - Статичне зіставлення адрес NAT_GW(config)#ip nat inside source static 192.168.1.4 100.0.0.3 - Статичне зіставлення адрес

Статичні відповідності створюються за допомогою команди ip nat inside source static. Ключове слово insideозначає, що NAT транслює адреси для хостів, що знаходяться у внутрішній частині мережі. Ключове слово sourceозначає, що NAT транслює IP-адреси у пакетах, що надходять на її внутрішні інтерфейси. Ключове слово staticозначає, що ці параметри визначають статичну запис, яка ніколи не видаляється з таблиці NAT у зв'язку із закінченням періоду часу. Під час створення записів статичної трансляції NAT маршрутизатору необхідно знати, які інтерфейси є внутрішніми (inside), які зовнішніми (outside). Підкоманди інтерфейсу ip nat insideі ip nat outsideвідповідним чином ідентифікують кожний інтерфейс.

Для перегляду важливої ​​інформації про NAT існує дві команди show ip nat translations, show ip nat statistics.

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

Перейдемо далі до динамічної трансляції мережевих адрес NAT.Динамічна трансляція створює пул можливих глобальних внутрішніх адрес та визначає критерій відповідності для визначення того, які внутрішні глобальні IP-адреси повинні транслюватися за допомогою NAT. Наприклад, у схемі нижче було встановлено пул із п'яти глобальних IP-адрес у діапазоні 200.1.1.1 – 200.1.1.5. Трансляція NAT також налаштована для перетворення всіх внутрішніх локальних адрес, які починаються з октетів 10.1.1

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

  1. Налаштувати інтерфейси, які будуть у внутрішній підмережі, за допомогою команди ip nat inside.
  2. Налаштувати інтерфейси, які будуть у зовнішній підмережі, за допомогою команди ip nat outside.
  3. Налаштувати список ACL, що відповідає пакетам, що надходять на внутрішні інтерфейси, для яких має бути застосована трансляція NAT
  4. Налаштувати пул відкритих зареєстрованих IP-адрес за допомогою команди режиму глобального конфігурування ip nat pool ім'я перша-адреса остання-адреса netmask маска-підмережі.
  5. Включити динамічну трансляцію NAT, вказавши у команді глобального конфігурування ip nat inside source list номер-acl pool ім'я-пула

Схема використовуватиметься така сама як і минулого разу. Нова конфігурація для роутера NAT_GW:

NAT_GW>enable - Переходимо в розширений режим NAT_GW#configure terminal - Переходимо в режим конфігурації NAT_GW(config)#interface fa0/0 - Налаштування інтерфейсу у бік приватної мережі NAT_GW(config-if)#description LAN - Опис інтерфейсу NAT_GW(config-if)#ip address 192.168.1.1 255.255.255.0 - задаємо шлюз за замовчуванням NAT_GW(config-if)#no shutdown - Включаємо інтерфейс фізично NAT_GW(config-if)#ip nat inside - налаштовуємо інтерфейс як внутрішній NAT_GW(config-if)#exit NAT_GW(config)#interface fa0/1 - Налаштування інтерфейсу у бік провайдера NAT_GW(config-if)#description ISP - Опис інтерфейсу NAT_GW(config-if)#ip address 100.0.0.253 255.255.255.0 - задаємо Ip та маску NAT_GW(config-if)#no shutdown - Включаємо інтерфейс фізично NAT_GW(config-if)#ip nat outside - Налаштовуємо інтерфейс як зовнішній NAT_GW(config-if)#exit NAT_GW(config)#ip nat pool testPool 100.0.0.1 100.0.0.252 netmask 255.255.255.0 - Створюємо динамічний пул NAT_GW(config)#access-list 1 permit 192.168.1.1 0.0.0.255 - створюємо список доступу 1, в якому дозволяємо транслювати IP-адреси з підмережі 192.168.1.1/24 NAT_GW(config)#ip nat всередині source list 1 pool testPool - Включаємо динамічну трансляцію NAT_GW(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.254 - Статичний маршрут у бік провайдера

Наступний вид трансляції – трансляція адрес портів PAT (Port Address Translation). Про цей вид NAT я розповім у наступній статті, коли ми будемо підключати локальну мережу до Інтернету. Тема досить велика та важлива. PAT є найпопулярнішим видом NAT'a.

Підтримайте проект

Друзі, сайт Netcloud щодня розвивається завдяки вашій підтримці. Ми плануємо запустити нові рубрики статей та деякі корисні сервіси.

У вас є можливість підтримати проект і внести будь-яку суму, яку вважаєте за потрібну.

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

  • перестають працювати торрент-клієнти;
  • немає можливості підключитися до ігрового онлайн-сервера;
  • немає звернень до сервера внутрішньої мережі з ні за одним протоколом і ні на один порт.

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

NAT: загальні визначення

NAT (network address translation) або трансляція мережевих адрес - це процес переведення внутрішніх або локальних адрес на зовнішні. NAT використовується абсолютно всіма маршрутизаторами незалежно від їх конфігурації, призначення та вартості. За промовчанням роутер забороняє безпосередньо звертатися до будь-якого пристрою, що знаходиться в мережі. Він блокує доступ на будь-які порти для вхідних з'єднань, що надходять з інтернету.

Але NAT та Firewall це суть різні поняття. Firewall просто забороняє доступ до ресурсу за певним TCP або UDP портом, може встановлюватися на локальній машині для обмеження доступу тільки до неї або на сервері для фільтрації трафіку по всій локальній мережі. Перед NAT завдання стоїть розгорнуто. Сервіс забороняє або дозволяє доступ всередині мережі за конкретною IP-адресою або діапазоном адрес. Таким чином клієнт, який звертається до ресурсу, не бачить дійсної IP адреси ресурсу. NAT переводить внутрішній IP на адресу, яку буде видно з інтернету.

Щоб перевірити чи знаходиться комп'ютер за NAT або транслює в інтернет реальну адресу, можна наступним чином:

  • у Windows потрібно натиснути «Пуск – Виконати – cmd» і прописати ipconfigта натиснути «Введення»;
  • у Linux та MacOS у терміналі виконується ifconfig.

Виведення команди показує такі дані:

  • IP- реальна, дійсна адреса комп'ютера;
  • Subnet mask- маска підмережі;
  • Gateway- адреса шлюзу маршрутизатора.

Як тепер розібрати, чи є адреса локальною або ж безпосередньо «дивиться» в інтернет. Відповідно до специфікації, існує чотири діапазони адрес, які за жодних обставин не використовуються в інтернеті, а є виключно локальними:

  1. 0.0.0 - 10.255.255.255
  2. Х.0.0 – 172.Х.255.255, де Х у діапазоні від 16 до 31.
  3. 168.0.0 - 192.168.255.255
  4. 254.0.0 - 169.254.255.255

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

Проблеми NAT та можливості вирішення

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

Як приклад можна розглянути протокол передачі файлів (FTP), який був найпоширенішим до появи NAT. Для файлових серверів (FTP) ключовою є реальна IP-адреса комп'ютера, який надсилає запит на доступ. Тут перетворення адрес не працює, тому що запит на сервер відправляється з IP, невидимого з інтернету. Немає можливості створити сесію клієнт-сервер для завантаження файлів. Обійти проблему допомагає використання FTP у пасивному режимі. У цьому режимі використовується інший набір команд, робота ведеться через спеціальний проксі-сервер, який додатково відкриває інший порт для з'єднання і передає його програмі клієнту. Проблемою такого рішення є те, що необхідно використовувати сторонні клієнти FTP.

Повністю позбутися проблеми доступу вдалося лише з появою SOCKS (Socket Secure) протоколу. Цей протокол дозволяє обмінюватися даними через проксі-сервер у прозорому режимі. Тобто сервер не знатиме, що відбувається підміна адрес з локальних на глобальні та навпаки. Винахід SOCKS дозволив позбавитися низки проблем і спростити роботу адміністрування мережі:

  • створює на сервері службу, яка слухає вхідні запити, що дозволяє обслуговувати багатозв'язкові протоколи на зразок FTP;
  • немає необхідності використовувати та обслуговувати DNS в локальній мережі. Тепер таке завдання покладено на проксі, що кеширують;
  • додаткові способи авторизації дозволяють з більшою ефективністю проводити відстеження та фільтрацію пакетів. Засобами NAT можна фільтрувати запити лише за адресами.

Використання NAT та SOCKS не завжди виправдане з точки зору адміністрування мережі. Іноді більш доцільним є використання спеціалізованих проксі, яких існує безліч для будь-якого протоколу передачі даних.

Налаштування NAT на комп'ютері

Усі сучасні операційні системи мають вбудований NAT. У Windows ця функція реалізована з 1999 з появою Windows XP. Управління NAT здійснюється безпосередньо через властивості мережного підключення. Щоб налаштувати службу, потрібно зробити наступне:

  • Через меню "Пуск" запустити програму "Панель управління".
  • Знайти іконку «Мережеві підключення» та запустити її.
  • У новому вікні клацнути правою кнопкою миші на активному мережевому підключенні і вибрати у списку «Властивості».
  • Перейдіть на вкладку "Додатково".
  • Встановити галочки навпроти «Дозволити іншим користувачам мережі використовувати підключення до Інтернету даного комп'ютера».
  • Підтвердити зміну кнопкою «Ok».

Якщо при виведенні повідомлення неможливо запустити службу спільного доступу, потрібно переконатися, що запущена служба DHCP-клієнт. За потреби можна встановити запуск служби примусово, а не на запит автоматично.

Налаштування NAT на маршрутизаторі

Що таке NAT у роутері, доцільність його використання та проблеми, які він може створити було описано вище, тепер можна перейти безпосередньо до реалізації завдання. Налаштування служби на роутері залежить від моделі, використовуваної прошивки та інших параметрів. Але достатньо зрозуміти механізм, щоб не виникало складнощів та питань щодо налаштування окремого пристрою. Для налаштування виконуються такі дії (як приклад налаштування виконуються на роутері Zyxel на прошивці v1):

  • У браузері зайти на сторінку налаштувань роутера.
  • Перейти в меню "Network - Routing" на вкладку "Policy routing".

Сторінка, що відкрилася, і буде тією, яка керує політиками доступу і маршрутизацією. Тут необхідно включити службу, активувавши перемикач у положення Enable. Самі установки виконуються в групі «Criteria». Вибираються параметри NAT за кількома категоріями фільтрів:

  • User - трансляція за певним користувачем.
  • Incoming – за мережним інтерфейсом.
  • Source Address - заміна адреси на адресу джерела.
  • Destination Address - за адресою кінцевого одержувача
  • Service - по конкретному порту служби.

Як об'єкт перенаправлення можна вибрати такі варіанти:

  • Auto – автоматичний вибір об'єкта призначення. За промовчанням встановлено Wan інтерфейс.
  • Gateway – шлюз, вказаний заздалегідь у налаштуваннях.
  • VPN Tunel – відповідно через VPN тунель.
  • Trunk – діапазон інтерфейсів, налаштованих на спільну роботу.
  • Interface - конкретний інтерфейс на вибір.

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

Якщо Ви читаєте цей документ, то, швидше за все, ви під'єднані до Інтернету, і використовуєте трансляцію мережевих адрес ( Network Address Translation, NAT) прямо зараз! Інтернет став настільки величезним, ніж будь-хто міг собі уявити. Хоча точний розмір невідомий, поточна оцінка це приблизно 100 мільйонів хостів та більш ніж 350 мільйонів користувачів, які активно працюють в Інтернеті. Фактично норма зростання така, що Інтернет ефективно подвоюється в розмірі щороку. Для комп'ютера, щоб спілкуватися з іншими комп'ютерами та Web-серверами в Інтернеті, він повинен мати IP-адресу. IP-адреса (IP означає Інтернет Протокол) - це унікальне 32-бітове число, яке ідентифікує розташування вашого комп'ютера на мережі. В основному це працює так само, як ваша вулична адреса: спосіб точно з'ясувати, де ви знаходитесь і доставити вам інформацію. Теоретично можна мати 4,294,967,296 унікальних адрес (2^32). Фактична кількість доступних адрес є меншою (десь між 3.2 та 3.3 мільярдами) через спосіб, яким адреси поділені на класи та потреби відвести деякі з адрес для мультимовлення, тестування або інших певних потреб. Зі збільшенням домашніх мереж і ділових мереж, кількість доступних IP-адрес вже недостатньо. Очевидне рішення полягає в тому, щоб перепроектувати формат адреси, щоб врахувати більше можливих адрес. Таким чином, розвивається протокол IPv6, але, це розвинені займе кілька років, тому що вимагає модифікації всієї інфраструктури Інтернету.

Ось де приходить NAT нам на спасіння. В основному, Мережева Трансляція Адреса дозволяє єдиному пристрою, типу маршрутизатора, діяти як агент між Інтернетом (або "публічною мережею") і локальною (або "приватною") мережею. Це означає, що потрібна тільки єдина унікальна IP-адреса, щоб представляти всю групу комп'ютерів чомусь поза їхньою мережею. Нестача IP адрес - лише одна причина використовувати NAT. Дві інші серйозні підстави це безпека та адміністрування

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

Маскування

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

Розроблена технологія Cisco, Трансляція мережевих адрес використовується пристроєм (міжмережевим екраном, маршрутизатором або комп'ютером), який знаходиться між внутрішньою мережею та іншою частиною світу. NAT має багато форм і може працювати кількома способами:

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

У статичному NAT, комп'ютер з адресою 192.168.32.10 завжди транслюватиметься на адресу 213.18.123.110:


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

У динамічному NAT комп'ютер з адресою 192.168.32.10 транслюється в першу доступну адресу в діапазоні від 213.18.123.100 до 213.18.123.150


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

При перевантаженні кожен комп'ютер у приватній мережі транслюється в ту саму адресу (213.18.123.100), але з різним номером порту


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

Приклад:
Внутрішній діапазон IP (237.16.32.xx) є також зареєстрованим діапазоном, який використовується іншою мережею. Тому маршрутизатор транслює адреси, щоб уникнути потенційного конфлікту. Він також транслюватиме зареєстровані глобальні IP адреси назад до незареєстрованих локальних адрес, коли пакети надсилаються у внутрішню мережу


Внутрішня мережа - це зазвичай LAN (Локальна мережа), найчастіше називається тупиковим доменом. Тупиковий домен є LAN, яка використовує внутрішні IP-адреси. Більшість мережного трафіку в такому домені є локальним, він не залишає межі внутрішньої мережі. Домен може включати як зареєстровані, так і незареєстровані IP адреси. Звичайно, будь-які комп'ютери, які використовують незареєстровані IP-адреси, повинні використовувати NAT, щоб спілкуватися з рештою світу.

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


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

  • Вихідна адреса - IP-адреса комп'ютера джерела, наприклад, 201.3.83.132.
  • Вихідний порт - це номер TCP або UDP порту, призначений комп'ютером джерелом для цього пакета, наприклад, Порт 1080.
  • Адреса призначення - IP-адреса комп'ютера приймача. Наприклад, 145.51.18.223.
  • Порт призначення - номер TCP або UDP порту, який просить відкрити комп'ютер джерело на застосунку, наприклад порт 3021.

IP-адреси визначають дві машини з кожної сторони, в той час як номери портів гарантують, що з'єднання між цими двома комп'ютерами має унікальний ідентифікатор. Комбінація цих чотирьох чисел визначає єдине з'єднання TCP/IP. Кожен номер порту використовує 16 бітів, що означає, що існує 65536 (2^16) можливих значення. Насправді, оскільки різні виробники відображають порти трохи різними способами, ви можете очікувати приблизно 4000 доступних портів.

Приклади динамічного NAT та NAT з навантаженням

Нижче показано, як працює динамічний NAT.

Клацніть на одну із зелених кнопок, щоб надіслати успішний пакет або в або з внутрішньої мережі. Натисніть одну з червоних кнопок, щоб надіслати пакет, який відкине маршрутизатор через неприпустиму адресу.

  • внутрішня була встановлена ​​з IP-адресами, які не були спеціально відведені для цієї компанії IANA (Органом з нагляду за присвоєнням адрес в Інтернеті), глобальне бюро, яке роздає IP адреси. Такі адреси слід вважати немаршрутизованими, оскільки вони не унікальні. Це внутрішні локальні адреси.
  • компанія встановлює маршрутизатор із NAT. Маршрутизатор має діапазон унікальних IP-адрес, виданих компанії. Це – внутрішні глобальні адреси.
  • комп'ютер на LAN намагається з'єднатися з комп'ютером поза мережею типу Web-сервера.
  • маршрутизатор отримує пакет від комп'ютера до LAN.
  • Після перевірки таблиці маршрутизації та процесу перевірки для трансляції, маршрутизатор зберігає немаршрутизовану адресу комп'ютера в таблиці трансляції адрес. Маршрутизатор замінює немаршрутизовану адресу комп'ютера відправника першою доступною IP-адресою з діапазону унікальних адрес. Таблиця трансляцій тепер має відображення немаршрутизованого IP адреси комп'ютера, якому відповідає одна з унікальних IP адрес.
  • Коли пакет повертається від комп'ютера, маршрутизатор перевіряє адресу приймача в пакеті. Потім він дивиться в таблицю трансляції адрес, щоб знайти, якому комп'ютера в домені належить цей пакет. Він змінює адресу приймача на те, що був збережений раніше в таблиці трансляції і посилає пакет потрібному комп'ютеру. Якщо роутер не знаходить відповідність таблиці, він знищує пакет.
  • Комп'ютер отримує пакет від маршрутизатора і весь процес повторюється, поки комп'ютер спілкується із зовнішньою системою.
Далі подивимося як працює перевантаження
  • Внутрішня мережа була встановлена ​​з немаршрутизованими IP адресами, які не були спеціально відведені для компанії
  • компанія встановлює маршрутизатор із NAT. Маршрутизатор має унікальну IP адресу, яку видала IANA
  • комп'ютер у домені намагається з'єднатися з комп'ютером поза мережею, типу Web-сервера.
  • маршрутизатор отримує пакет від комп'ютера домену.
  • Після маршрутизації та перевірки пакета для виконання трансляції, маршрутизатор зберігає немаршрутизовану IP адресу комп'ютера та номер порту в таблиці трансляції. Маршрутизатор замінює немаршрутизовану IP адресу комп'ютера відправника IP адресою маршрутизатора. Маршрутизатор замінює вихідний порт комп'ютера відправника на якийсь випадковий номер порту і зберігає його в таблиці трансляції адрес для цього відправника. Таблиця трансляцій має відображення IP адреси комп'ютера, що не маршрутизується, і номери порту поряд з IP адресою маршрутизатора.
  • Коли пакет повертається з адресата, маршрутизатор перевіряє порт приміника в пакеті. Він потім дивиться в таблицю трансляцій, щоб знайти, до якого комп'ютера в домені належить пакет. Далі роутер змінює адресу приймача та порт приймача в ті значення, які були збережені раніше в таблиці трансляцій і посилає пакет кінцевому вузлу.
  • комп'ютер отримує пакет від маршрутизатора та процес повторюється
  • Оскільки маршрутизатор NAT тепер має вихідну адресу комп'ютера і вихідний порт, збережений до таблиці трансляцій, він продовжить використовувати той же номер порту для наступних підключень. Щоразу, коли маршрутизатор звертається до запису в таблиці трансляцій скидається таймер життя цього запису. Якщо до запису не звертаються, перш ніж таймер закінчується, він видаляється з таблиці

Число одночасних трансляцій, які маршрутизатор буде підтримувати, визначається переважно кількістю DRAM (Динамічна Пам'ять Довільного доступу). Так як типовий запис в таблиці трансляцій займає приблизно 160 байт, маршрутизатор з 4 Мбайт RAM може теоретично обробити 26214 одночасних з'єднань, що є більш ніж достатньо більшості додатків.

Безпека та Адміністрація

Реалізація динамічного NAT автоматично створює міжмережевий захист між вашою внутрішньою мережею та зовнішніми мережами або Інтернет. Динамічний NAT дозволяє лише підключення, що породжуються у локальній мережі. По суті, це означає, що комп'ютер на зовнішній мережі не може з'єднатися з вашим комп'ютером, якщо комп'ютер не почав з'єднання. Таким чином, ви можете працювати в Інтернеті та з'єднатися з сайтом, і навіть вивантажити файл. Але більше ніхто не може просто покуситися на вашу IP адресу і використовувати його, щоб з'єднатися з портом на вашому комп'ютері.

Статичний NAT, також званий вхідним мапінгом (inbound mapping), дозволяє підключення, ініційовані зовнішніми пристроями до комп'ютерів у LAN за певних обставин. Наприклад, ви можете відобразити внутрішню глобальну адресу на певну внутрішню локальну адресу, яка призначена на ваш Web-сервер.

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


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

Іноді Мережеву Трансляцію Адреса плутають із проксі-серверами, де є певні відмінності. NAT прозорий для комп'ютерів джерела та приймача. Ніхто з них не знає, що це має справу з третім пристроєм. Але проксі сервер не прозорий. Вихідний комп'ютер знає, що робить запит на проксі. Комп'ютер адресата вважає, що проксі сервер - це вихідний комп'ютер і має справу безпосередньо з ним. Крім того, проксі-сервери зазвичай працюють на рівні 4 (Transport) моделі OSI або вище, тоді як NAT – це протокол рівня 3 (Network). Робота на більш високих рівнях робить проксі-сервери повільнішими, ніж NAT пристрої в більшості випадків.