Донецкий техникум промышленной автоматики

Що таке NAT, як його налаштувати і використовувати - NAT, PAT, Static NAT, Dynamic NAT

  1. загальне визначення
  2. Тип перший, Static NAT
  3. Так в чому ж справа в статиці?
  4. Схема роботи статичного NAT
  5. Тип другий, Dynamic NAT
  6. Недолік і переваги динаміки
  7. Тип третій, Port Address Translation (PAT), також відомий як NAT Overload або NAT Masquerading
  8. Ще трохи про порти та інші нюанси
  9. Трохи деталей про порти
  10. Переваги та недоліки третього варіанту
  11. Післямова

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

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

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

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

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

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

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

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

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

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

до змісту ↑

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

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

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

До речі кажучи про портах , Спробую кілька заглибитися в цю тему, але не дуже сильно. Справа в тому, що будь-який сервіс, будь-яка програма звертається до комп'ютера, сервера, роутера або сервісу (будь то пошта, веб-сторінка або будь-який інший сервіс) не тільки по IP адресою, але і по порту. Наприклад, щоб вам відкрити сторінку google.com зі свого комп'ютера, вам треба ввести дві речі: IP адреса (DNS ім'я) і .. порт.

Але стривайте, обуритеся ви, адже ніякого порту ви не вводите і все відмінно відкривається!

до змісту ↑

Так в чому ж справа в статиці?

Справа в тому, що, немає, в DNS записи порт не ховається, як деякі могли б подумати, цей самий порт ваш браузер сам підставляє в адресний рядок замість вас. Ви можете легко це перевірити. Введіть в адресному рядку google.com:80 і побачите, що сторінка гугла відкрилася, але чарівні ": 80" раптово зникли.

Так ось, щоб користувачам з інтернету вас бачити і мати можливість до вас підключатися, вони повинні знати дві речі: ваш IP адреса і ваш порт, на якому розташований ваш сервіс.

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

Якщо провести паралель, то IP адреса - це адреса вашого будинку, а порт - це номер вашої квартири. Таким чином, щоб люди могли до вас потрапити, їм потрібно знати ці дві речі, інакше вони вас просто не знайдуть.

до змісту ↑

Схема роботи статичного NAT

Спробую розповісти про схему роботи статичного NAT.

Наприклад, провайдер видав вам чотири IP адреси 87.123.41.11, 87.123.41.12, 87.123.41.13, 87.123.41.14, а у вас є три сервера і роутер. Ви призначаєте роутера, наприклад, перша адреса з цього діапазону (87.123.41.11), а решта ділите між серверами (сервер 1 - .12, сервер 2 - .13, сервер 3 - .14).

Щоб користувачі з інтернету могли підключатися на ці сервери, їм достатньо буде ввести зовнішні IP адреси серверів. Наприклад, коли користувач підключається на адресу 87.123.41.12, то роутер перенаправляє його на сервер 1 і користувач вже спілкується з сервером, хоча не знає що реальну адресу сервера насправді інший (192.168.1.2). Такий запис в NAT таблиці роутера буде зберігатися завжди.

Переваги даного способу:

  • реальні адреси серверів будуть приховані;
  • Ваші сервери завжди будуть видні в інтернеті.

недоліки:

  • Зловмисники можуть на них спробувати пробитися або здійснювати які-небудь атаки;
  • Потрібно декілька зовнішніх адрес, що може бути затратно.
до змісту ↑

Тип другий, Dynamic NAT

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

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

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

Істотний недолік в тому, що кількість серверів і комп'ютерів, яким потрібен доступ в інтернет, не повинен сильно перевищувати кількість виданих провайдером зовнішніх адрес.

до змісту ↑

Недолік і переваги динаміки

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

В даному прикладі провайдер видав нам всього два зовнішніх адреси: 87.123.41.11 і 87.123.41.12. В цьому випадку ми IP 87.123.41.11 призначаємо роутера, а залишився адреса буде автоматично віддаватися тому сервера, який першим попросить доступ в інтернет (в даному прикладі це був сервер 2), інші сервери будуть чекати, коли перший закінчить і цей IP адреса звільниться.

Переваги даного способу:

  • Всякі зловмисники не зможуть визначити за якими адресами доступні ваші сервери, тому що їх адреси будуть весь час змінюватися;
  • Не потрібно вручну призначати IP адреси, роутер сам розподілить.

недоліки:

  • Потрібно декілька зовнішніх адрес;
  • Кількість хостів у вашій мережі не повинно бути сильно більше, ніж виданих провайдером IP адрес.
до змісту ↑

Тип третій, Port Address Translation (PAT), також відомий як NAT Overload або NAT Masquerading

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

Наприклад, нам потрібно, щоб користувачі з інтернету могли підключатися до торрент-клієнту на ПК 1 і 2, до сервера Teamspeak на сервері 1, серверу FTP на сервері 2, веб-сайту на сервері 3 (по протоколу http і https), плюс до всьому на ПК 1 і 2 потрібен буде віддалений доступ. Тепер торкнемося трохи тему внутрішніх і зовнішніх портів (так, таке теж є).

Внутрішній порт - це порт, який використовує програма на тому комп'ютері або сервері, на якому знаходиться. Зовнішній порт - це порт, який ви хочете відкрити на роутері, щоб на нього підключалися користувачі. Часто внутрішній і зовнішній порти збігаються, але далеко не завжди.

до змісту ↑

Ще трохи про порти та інші нюанси

Багато програм (не тільки все) мають вшиті порти без можливості перенастроювання, або, наприклад, у вас є два Веб-сервера на винде (так званий IIS), які працюють на 80 порту кожен і вам потрібно дати доступ з інтернету на обидва сервера.

Тут ви відкриєте на роутері одного сервера порт 80, а залишився вам доведеться вибрати інший порт (наприклад 8080).

Разом, на роутері ми налаштовуємо порти таким чином:

Ім'я Додаток Внутрішній IP Внутрішній порт Зовнішній IP Зовнішній порт Сервер 1 Teamspeak 192.168.1.2 9987 * 87.123.41.12 9987 Сервер 2 FTP сервер 192.168.1.3 21 * 87.123.41.12 21000 Сервер 3 Веб-сервер 192.168.1.4 80 * 87.123.41.12 80 Сервер 3 Веб-сервер 192.168.1.4 443 * 87.123.41.12 444 ПК 1 uTorrent 192.168.1.10 26000 87.123.41.12 26000 ПК 2 Bit-Torrent 192.168.1.20 26100 87.123.41.12 26100 ПК 2 Game Server 192.168.1.20 27015 * 87.123.41.12 27015 ПК 1 RDP 192.168.1.10 3389 ** 87.123.41.12 33891 ПК 2 RDP 192.168.1.20 3389 ** 87.123.41.12 33892

Де * - стандартний порт, який використовує програма (тобто ви її встановили і нічого не налаштовували);

** - стандартний порт, який використовує сервіс і який не можна змінити.

Наочна схемку нижче:

Тепер я постараюся пояснити чому я написав саме ці порти.

до змісту ↑

Трохи деталей про порти

суть:

  1. Для сервера Teamspeak (TS) я порт не міняв, тому що такий сервер у нас один і користувачам не доведеться взагалі вводити його порт. Вони просто вбивають у себе адресу 87.123.41.12 і потрапляють на наш сервер TS, зручно і практично;
  2. Для FTP сервера я порт поміняв, тому що, строго кажучи, FTP-сервер не повинен бути доступний за стандартним порту, на нього можуть лазити недобросовісні люди. А так ви говорите тим, кому треба, щоб підключалися на 87.123.41.12:21000 і вони потраплять на ваш FTP-сервер;
  3. Для Веб-сервера я http порт не міняв знову ж через зручності, щоб користувачам не треба було вводити адресу разом з портом в адресному рядку. Вони просто вводять 87.123.41.12 і підключаються на ваш Веб-сервер. Порт HTTPS ж я поміняв для наочності. Користувачам, щоб потрапити на ваш Веб-сервер по захищеному каналу, доведеться вводити в адресному рядку адресу 87.123.41.12:444;
  4. З торрентами в общем-то все просто, який порт налаштований в самій програмі, такий і налаштовується на роутері;
  5. Порт ігрового сервера, де в якості прикладу я взяв звичайний стімовскій ігровий сервер (Dedicated Server), я також не міняв, а залишив стандартний;
  6. А ось з RDP ситуація цікава. Справа в тому, що на кожному комп'ютері служба RDP працює по порту 3389 і це ніяк не поміняти без свого RDP сервера (такі теж бувають). Тому, щоб мати можливість підключатися на ПК 1 і 2 я задав на роутері порти 33891 і соотв. 33892, бо так простіше пам'ятати де який використовується. Таким чином, ввівши в RDP клієнта адресу 87.123.41.12:33891 ми потрапимо на ПК 1, а ввівши 87.123.41.12:33892 ми соотв. потрапимо на ПК 2.

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

до змісту ↑

Переваги та недоліки третього варіанту

Теоретично, ви можете призначити одному IP адресою до 131072 (2 * 2 ^ 16) додатків. Чому я кажу "додатків", а не комп'ютерів / серверів?

Тому що один комп або сервер, як ви вже помітили вище, може використовувати кілька різних додатків (при цьому один додаток може використовувати кілька портів), при цьому кожен порт може бути двох типів: TCP і UDP.

Заглиблюватися в це в рамках цієї статті я не буду, в цьому немає необхідності.

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

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

Післямова

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

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

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

Ми в соц.сетях: ВК Facebook Twitter Telegram

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