Трансляція мережевих адрес
Трансляція мережевих адрес — це клейка стрічка, завдяки якій IPv4 працював довго після того, як його адреси закінчилися. Це також причина, чому однорангові програми потребують пробивання отворів, чому ваш телефон не може бути зв’язаний безпосередньо з Інтернету та чому відеодзвінки іноді відмовляються з’єднуватися в певних мережах. Варто розібратися детально.
Повний текст статті подано англійською мовою нижче.
Трансляція мережевих адрес (NAT) — це техніка, яку використовує маршрутизатор, щоб дозволити багатьом пристроям у приватній мережі спільно використовувати одну публічну IP-адресу. Спочатку це була зупинка для вичерпання адреси IPv4; вона стала постійною частиною майже кожного споживача підключення до Інтернету.
Основні операції
Ваша домашня мережа зазвичай використовує приватні IP-адреси з одного з діапазонів RFC 1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Вони не маршрутизуються в загальнодоступному Інтернеті; 192.168.1.42 вашого ноутбука нічого не означає поза вашим домом.
Коли ваш ноутбук відкриває з’єднання з example.com:443, пакет залишає ваш ноутбук із джерелом 192.168.1.42:55123. Ваш маршрутизатор перехоплює пакет і переписує джерело на your.public.ip:55123 (або на новий порт, вибраний маршрутизатором), а потім пересилає його далі. Ваш маршрутизатор запам'ятовує відображення. Коли відповідь повертається на адресу your.public.ip:55123, маршрутизатор перевіряє зіставлення та переписує пункт призначення на 192.168.1.42:55123, а потім пересилає його на ноутбук. Ноутбук і пункт призначення не знають, що таке сталося.
Таблиця зіставлення
A споживчий маршрутизатор підтримує таблицю NAT, індексовану за (внутрішня IP-адреса, внутрішній порт, зовнішня IP-адреса, зовнішній порт, протокол). Час очікування кожного рядка закінчується після того, як з’єднання стає неактивним — зазвичай це 30 секунд для UDP, кілька хвилин для TCP. Коли таблиця заповнюється (дешеві маршрутизатори зберігають лише кілька тисяч записів), старі чи неактивні записи вилучаються.
Типи NAT
NAT відрізняються тим, наскільки вони поблажливі щодо повторного використання зіставлень:
- Повноконусний NAT: один раз
192.168.1.42:55123зіставлено зpub.ip:55123, any зовнішній хост може надіслати пакет наpub.ip:55123, і його буде перенаправлено всередину. Найбільш дозволений. - Restricted-cone NAT: можуть відповісти лише зовнішні хости, на які внутрішній пристрій уже надіслав.
- Port-restricted-cone: як restricted-cone, але також має відповідати port.
- Symmetric NAT: для кожного зовнішнього призначення створюється інше зіставлення. Ззовні один і той самий внутрішній пристрій виглядає так, ніби він має кілька публічних адрес, які постійно змінюються. Найбільш обмежений — і найважчий для проходження для однорангових протоколів.
Чому NAT порушує роботу
NAT було легко розгорнути, оскільки він не потребував змін у кінцевих точках. Але це зламало оригінальну наскрізну модель Інтернету. Конкретні втрати:
- IВхідні підключення. Без явного перенаправлення портів ніхто в Інтернеті не зможе підключитися до пристрою за NAT. Для самостійного розміщення ігрового сервера, світу Minecraft або особистого веб-сайту через домашнє з’єднання потрібне перенаправлення портів або ретрансляція.
- Програми для однорангового зв’язку. Два пристрої, обидва за NAT, не можуть напряму телефонувати один одному. Їм потрібен координаційний сервер (STUN/ICE), щоб виявити їхні загальнодоступні відображення, і, можливо, ретрансляція (TURN), якщо їхні NAT занадто обмежені для проходження.
- Протоколи, які вбудовують IP-адреси в їх корисне навантаження. Класичний FTP і SIP розміщують IP-адресу клієнта всередині тіла протоколу, про що NAT не знає. переписати. Шлюзи прикладного рівня (ALG) у маршрутизаторі мають аналізувати та переписувати корисне навантаження — крихкий обхідний шлях.
NAT проти PAT проти CGNAT
Строго кажучи, більшість домашніх маршрутизаторів роблять Port Address Translation (PAT) — переклад порту номери, а також адреси для мультиплексування багатьох внутрішніх потоків через один зовнішній IP. "NAT" - це повсякденна назва цього. Carrier-Grade NAT — це та сама ідея, але на рівні провайдера: багато клієнтів спільно використовують одну загальнодоступну IP-адресу, а провайдер виконує PAT у масштабі.
Переадресація портів і UPnP
Щоб приймати вхідні з’єднання за NAT, потрібно сказати маршрутизатору «надсилати будь-який пакет, що потрапляє на публічний порт X, на внутрішній IP-адрес Y на порт Z." Це переадресація порту. Його можна встановити вручну в адміністраторі маршрутизатора або автоматично запитати програмою через UPnP (Universal Plug and Play) або NAT-PMP. UPnP є зручним і, як відомо, небезпечним — будь-яка програма в локальній мережі може відкрити діри в брандмауері, тому деякі посібники з безпеки рекомендують його вимкнути.
Шпилька NAT і відображення
IЯкщо ви перенаправляєте порт зі своєї загальнодоступної IP-адреси на сервер у своїй мережі, доступ до цього сервера зсередини вашої мережі за допомогою загальнодоступної IP-ім’я працює, лише якщо маршрутизатор підтримує «шпильку NAT» (також називається петлею / відображенням NAT). Багато дешевих маршрутизаторів цього не роблять, тому «мій самостійний сервер працює ззовні, але не з мого дивана» є поширеною плутаниною.
Те, що замінює NAT
IPv6, має стільки адрес, що NAT непотрібний — кожен пристрій отримує адресу глобальної маршрутизації. Мережі IPv6 зазвичай мають натомість брандмауер із збереженням стану, який забезпечує перевагу безпеки NAT (без небажаних вхідних повідомлень) без порушення наскрізного зв’язку. У міру впровадження IPv6 NAT поступово зникне, але він існуватиме десятиліттями.
Часті запитання
- Чи є NAT брандмауером?
- Не зовсім так, але він діє як один для вхідних з’єднань. Оскільки NAT створює зіставлення лише у відповідь на вихідний трафік, небажаним вхідним пакетам нікуди подітися, і вони відкидаються. Це справжній захист, але його іноді плутають із брандмауером із явною політикою, який також має бути присутнім.
- Чому відеодзвінки іноді не виконуються через NAT?
- Відеодзвінки зазвичай використовують UDP для медіа-потоку. Два пристрої, обидва за симетричними NAT, можуть важко знайти прямий шлях, оскільки зовнішній порт відрізняється для кожного пункту призначення. Запасним варіантом є реле TURN, керовані службою виклику — повільніше та дорожче, але вони працюють.
- Чи обходить VPN NAT?
- Так, двома способами. По-перше, зовнішнє з’єднання VPN – це єдине, що має транслювати ваш домашній NAT; як тільки тунель встановлено, трафік програми всередині невидимий для локального NAT. По-друге, з точки зору пункту призначення ваш трафік, здається, надходить із публічної IP-адреси VPN-сервера, а не з вашої домашньої IP-адреси.
- Чи можна відстежувати мене на кількох веб-сайтах через NAT?
- Кілька пристроїв у вашому домі мають спільну загальнодоступну IP-адресу, тому зовнішні сайти бачать багато потоків з однієї IP-адреси — це протилежність відбитку пальців окремих осіб. Але час, відбиток пальця веб-переглядача та дані для входу в обліковий запис все одно повторно пов’язують вас. NAT сам по собі не є конфіденційністю.
- Чому деяке програмне забезпечення погано працює на Wi-Fi кафе?
- Кав’ярні часто використовують NAT операторського рівня або накладають суворіші типи NAT, які блокують однорангові протоколи, BitTorrent і деякі протоколи VPN. Локальна локальна мережа також може обмежувати незвичний трафік. Звичайний HTTPS працює майже всюди; все інше - азартна гра.