NAT

JSP & Servlets
8 уровень , 4 лекция
Открыта

5.1 Знакомство в NAT

Еще одна очень интересная тема – это NAT. NAT расшифровывается как Network Address Translation и обычно присутствует в каждом роутере как некий сервис. Так что же это такое и зачем оно нужно?

NAT – это точка, с помощью которой локальные сети можно подключать к глобальным сетям, таким как интернет, например.

Как ты уже знаешь, в локальных сетях у всех компьютеров (и других устройств, подключенных к сети) есть свои собственные локальные IP-адреса. А чтобы обмениваться данными с сервером в интернете, надо чтобы наш компьютер мог послать запрос к серверу и сервер мог прислать нам ответ. А куда ему присылать ответ, если наш IP-адрес неизвестен за рамками нашей локальной сети?

Представь, что ты пишешь бумажное письмо Дональду Трампу. Трамп – это публичная фигура, он такой один – это наш публичный сервер. А в качестве обратного адреса в письме вы указываете Машу. Маш много. Какой именно Маше нужно прислать ответ?

Поэтому ты отправляешь письмо своему знакомому из Вашингтона, тоже публичной фигуре, со строгим указанием выслать его Трампу. Твой знакомый получает письмо, шлет его Трампу, а в качестве обратного адреса указывает свой адрес в Вашингтоне.

Затем, получив ответ от Трампа, знакомый пересылает его тебе. Так же и с IP-пакетами…

Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть изменен на общедоступный публичный адрес.

Как раз NAT переводит приватные адреса в общедоступные. Это позволяет устройству с локальным IP-адресом обращаться к ресурсам за пределами его частной сети. NAT в сочетании с локальными IP-адресами оказался полезным методом сохранения общедоступных IPv4-адресов.

В мире живет 8 миллиардов человек, а сетевых устройств уже в разы больше: телефоны, ноутбуки, смарт-часы, сервера, любые умные устройства. А IP-адресов всего 4 миллиарда. Раньше казалось, что это много, но с быстрым ростом интернета всем стало понятно, что этого недостаточно.

Тут нам на помощь приходит NAT: один публичный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет локальный IPv4-адрес. NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей.

5.2 Подсети в NAT

Локальные сети обычно проектируются с использованием частных IP-адресов. Это адреса из приватных подсетей 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Эти IP-адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, они не маршрутизируются в интернете.

Роутеры с поддержкой NAT могут быть настроены с одним или несколькими действительными общедоступными IPv4-адресами. Эти общедоступные адреса называются пулом NAT.

Когда устройство из внутренней сети отправляет трафик из сети наружу, то роутер с поддержкой NAT переводит внутренний IP-адрес устройства на публичный IP-адрес из пула NAT. Для внешних устройств весь трафик, входящий и выходящий из сети, выглядит имеющим общедоступный IP-адрес.

Маршрутизатор NAT обычно работает на границе Stub-сети. Stub-сеть – это термин из теории сетей: тупиковая сеть, которая имеет одно соединение с соседней сетью, один вход и выход из сети.

Подсети в NAT

Когда устройство внутри Stub-сети хочет связываться с устройством за пределами своей сети, пакет пересылается роутеру и он выполняет NAT-процесс, переводя внутренний частный адрес устройства на публичный, внешний, маршрутизируемый адрес.

5.3 Терминология NAT

Если углубиться в теорию сетей, то NAT — это внутренняя сеть, которая представляет собой набор подсетей, подлежащих переводу. Внешняя сеть относится ко всем другим сетям.

При использовании NAT, IP адреса имеют разные обозначения, основанные на том, находятся ли они в частной сети или в общедоступной сети (в интернете) и является ли трафик входящим или исходящим.

NAT включает в себя четыре типа адресов:

  • Внутренний локальный адрес (Inside local address);
  • Внутренний глобальный адрес (Inside global address);
  • Внешний местный адрес (Outside local address);
  • Внешний глобальный адрес (Outside global address).

При определении того, какой тип адреса используется, важно помнить, что терминология NAT всегда применяется с точки зрения устройства с транслированным адресом:

  • Внутренний адрес (Inside address) – адрес устройства, которое транслируется NAT;
  • Внешний адрес (Outside address) – адрес устройства назначения;
  • Локальный адрес (Local address) – это любой адрес, который отображается во внутренней части сети;
  • Глобальный адрес (Global address) – это любой адрес, который отображается во внешней части сети.

Рассмотрим это на примере схемы.

Подсети в NAT 2

Компьютер на рисунке слева имеет внутренний локальный (Inside local) адрес 192.168.1.5 и с его точки зрения веб-сервер имеет внешний (outside) адрес 208.141.17.4. Когда с компьютера отправляются пакеты данных на глобальный адрес веб-сервера, внутренний локальный (Inside local) адрес ПК транслируется в 208.141.16.5 (inside global). Адрес внешнего устройства обычно не переводится, поскольку он является общедоступным адресом IPv4.

Стоит заметить, что компьютер имеет как бы два адреса: локальный и глобальный адреса, тогда как веб-сервер имеет одинаковый публичный IP-адрес. С его точки зрения трафик, исходящий из компьютера, поступает из внутреннего глобального адреса 208.141.16.5. Роутер с NAT является точкой разделения между внутренней и внешней сетями, и между локальными и глобальными адресами.

Термины inside и outside объединены с терминами local и global, чтобы ссылаться на конкретные адреса. На рисунке роутер настроен на предоставление NAT и имеет пул общедоступных адресов для назначения внутренним хостам.

5.4 Путь прохождения пакета

Если ты уже устал, то переходи к следующей лекции. Если тебе все еще интересно, то добро пожаловать дальше в кротовую нору.

На рисунке ниже показано, как трафик отправляется с внутреннего компьютера на внешний веб-сервер через маршрутизатор с поддержкой NAT, высылается и переводится в обратную сторону.

Подсети в NAT 3
NAT-таблица маршрутизатора
ПК Веб-сервер
Inside Global Inside Local Outside Local Outside Global
208.141.17.4 192.168.1.5 208.141.16.5 208.141.16.5

Внутренний локальный адрес (Inside local address) – адрес источника, видимый из внутренней сети. На рисунке адрес 192.168.1.5 присвоен компьютеру – это и есть его внутренний локальный адрес.

Внутренний глобальный адрес (Inside global address) – адрес источника, видимый из внешней сети. На рисунке, когда трафик с компа отправляется на веб-сервер по адресу 208.141.17.4, роутер переводит внутренний локальный адрес (local address) на внутренний глобальный адрес (Inside global address). В этом случае роутер изменяет адрес источника IPv4 с 192.168.1.5 на 208.141.16.5.

Внешний глобальный адрес (Outside global address) – адрес адресата, видимый из внешней сети. Это глобально маршрутизируемый IP-адрес, назначенный хосту в интернете. На схеме веб-сервер доступен по адресу 208.141.17.4. Чаще всего внешние локальные и внешние глобальные адреса одинаковы.

Внешний локальный адрес (Outside local address) – адрес получателя, видимый из внутренней сети. В этом примере комп отправляет трафик на веб-сервер по адресу 208.141.17.4

Теперь давай рассмотрим весь путь прохождения пакета. Комп с адресом 192.168.1.5 пытается установить связь с веб-сервером 208.141.17.4. Когда пакет прибывает в маршрутизатор с поддержкой NAT, он считывает IP-адрес назначения пакета, чтобы определить, соответствует ли пакет критериям, указанным для перевода. В этом примере исходный адрес соответствует критериям и переводится с 192.168.1.5 (Inside local address) на 208.141.16.5 (Inside global address).

Роутер добавляет это сопоставление локального в глобальный адрес в таблицу NAT и отправляет пакет с переведенным адресом источника в пункт назначения. Веб-сервер отвечает пакетом, адресованным внутреннему глобальному адресу ПК (208.141.16.5).

Роутер получает пакет с адресом назначения 208.141.16.5 и проверяет таблицу NAT, в которой находит запись для этого сопоставления. Он использует эту информацию и переводит обратно внутренний глобальный адрес (208.141.16.5) на внутренний локальный адрес (192.168.1.5), пакет перенаправляется в сторону ПК.

5.5 Преимущества и недостатки NAT

Сервис NAT – это очень мощное решение, которое используется повсеместно. NAT предоставляет множество преимуществ, в том числе:

  • NAT сохраняет зарегистрированную схему адресации, обеспечивая гибкую работу локальных сетей. При NAT внутренние хосты могут совместно использовать один публичный IP-адрес для всех внешних коммуникаций. В этом типе конфигурации требуется очень мало внешних адресов для поддержки многих внутренних хостов.
  • NAT повышает гибкость соединений с интернетом. Многочисленные пулы, пулы резервного копирования и пулы балансировки нагрузки могут быть реализованы для обеспечения надежных общедоступных сетевых подключений.
  • NAT обеспечивает согласованность для внутренних схем адресации сети. В сети, не использующей частные IP-адреса и NAT, изменение общей схемы IP-адресов требует переадресации всех хостов в существующей сети. Стоимость переадресации хостов может быть значительной. NAT позволяет существующей частной адресной схеме IPv4 оставаться, позволяя легко изменять новую схему общедоступной адресации. Это означает, что организация может менять провайдеров и не нужно менять ни одного из своих внутренних клиентов.
  • NAT обеспечивает сетевую безопасность. Поскольку частные сети не рекламируют свои адреса или внутреннюю топологию, они остаются достаточно надежными при использовании в сочетании с NAT для получения контролируемого внешнего доступа. Однако нужно понимать, что NAT не заменяет фаерволы

Но у NAT есть некоторые недостатки. Тот факт, что хосты в интернете, по-видимому, напрямую взаимодействуют с устройством с поддержкой NAT, а не с фактическим хостом внутри частной сети, создает ряд проблем:

  • Один из недостатков использования NAT связан с производительностью сети, особенно для протоколов реального времени, таких как VoIP. NAT увеличивает задержки переключения, потому что перевод каждого IP-адреса в заголовках пакетов требует времени.
  • Другим недостатком использования NAT является то, что сквозная адресация теряется. Многие интернет-протоколы и приложения зависят от сквозной адресации от источника до места назначения. Некоторые приложения не работают с NAT. Приложения, которые используют физические адреса, а не квалифицированное доменное имя, не доходят до адресатов, которые транслируются через NAT-маршрутизатор. Иногда этого можно избежать, реализуя статические сопоставления NAT.
  • Также теряется сквозная трассировка IPv4. Сложнее трассировать пакеты, которые подвергаются многочисленным изменениям адресов пакетов в течение нескольких NAT-переходов, что затрудняет поиск и устранение неполадок.
  • Использование NAT также затрудняет протоколы туннелирования, такие как IPsec, поскольку NAT изменяет значения в заголовках, которые мешают проверкам целостности, выполняемым IPsec и другими протоколами туннелирования.
  • Службы, требующие инициирования TCP-соединений из внешней сети, или stateless протоколы, например, использующие UDP, могут быть нарушены. Если маршрутизатор NAT не настроен для поддержки таких протоколов, входящие пакеты не могут достичь своего адресата.
Комментарии (16)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Мая Уровень 82
19 октября 2025
а можете какой-нибудь хороший учебник порекоменовать по устройству сети?
Alex Уровень 35 Expert
22 октября 2024
могу ошибаться, но NAT-таблица не бьется с тем что было на схемах и в описании. В описании все понятно, но в таблице как будто все перепутали. Почему в таблице Inside Global это 208.141.17.4, хотя это удаленный хост веб-сервер? В общем понятно все кроме таблицы, лучше бы ее вообще не прикладывали.
Олег Уровень 106 Expert
2 сентября 2024
Вообще иначе теперь смотришь на базовые вещи, о которых не задумывался. Побольше бы таких лекций!
Unholy intromen Уровень 1
31 марта 2024
кайфовая лекция, наконец то нормально объяснили эту тему
Олег Уровень 79 Expert
10 января 2024
Странно и не однозначно. Комп с IP 192.168.1.15 однозначно не законнектится с девайсом с IP 208.141.16.5 У этого роутера, модема (называйте как хотите) должен быть ещё внутренний IP который находится в том же диапазоне, как правило 192.168.1.1. Почему в статье про это нет ни слова? Дальше то понятно... Вообщем с помощью NAT подменяют внутренний IP на внешний, что б выйти в мир, а потом наоборот, что б донести ответ назад отправителю. Но вот вариант с письмом Трампу тоже вполне наглядно...
Maria Уровень 41
3 октября 2023
Очень сложно и непонятно
Anonymous #3268884 Уровень 24
13 августа 2023
вот я смотрю на первую картинку и думаю: как это в подсети 192.168.1.0 с маской /24 у компа вдруг адрес 192.168.2.5, как такое может быть? Это художник накосячил, или я чего-то не понимаю?
Mikhail Уровень 41
20 июля 2023
Мне статья не понравилась. Outside local только больше путает, чем помогает. А вообще, большинство компаний используют PAT(динамический NAT с преобразованием портов).
Олег Уровень 111 Expert
19 июля 2023
На картинке со Stub сетью два роутера в одной сети имеют одинаковый адрес. Так и должно быть или это опечатка?
Gans Electro Уровень 39
27 августа 2024
Не должно
Gans Electro Уровень 39
27 августа 2024
Хотя нет, так можно сделать. Все дело в том что это роутер, он может соединять сети. Два роутера стоят в одной "большой сети". Но сами они могут управлять своими маленькими локальными сетями. IP может даваться на каждый отдельный порт
Олег Уровень 111 Expert
6 сентября 2024
Принято, что два роутера в одной сети не могут иметь одинаковый IP-адрес — это опечатка или ошибка на схеме. Каждый узел в сети, будь то компьютер или роутер, должен иметь уникальный IP-адрес, чтобы избежать конфликтов адресов и обеспечить корректную маршрутизацию пакетов. Если на схеме указаны два устройства с одинаковыми IP-адресами, это нарушает базовые правила работы сетевых протоколов. Для нормальной работы сети нужно, чтобы каждый роутер и каждое устройство имели свои уникальные IP-адреса в пределах одной сети. Возможно, автор хотел показать какую-то специфическую ситуацию, но в реальных сетях такое поведение приведёт к ошибкам.
Gans Electro Уровень 39
6 сентября 2024
Кажется мы друг друга не поняли. Я работал сетевым инженером и думал в этом ключе. Там не одинаковые IP адреса. Написано 192.128.1.0/24 это означает маску подсети (/24), то есть эти два маршрутизатора могут иметь IP в диапазоне от 192.128.1.0 до 192.128.1.255. Если бы не стоял /24 то можно было бы сказать что у них одинаковый IP. Вообще эти IP нарисованы не под маршрутизаторами, а под проводами. Это означает что вся сеть между R1 и маршрутизаторами имеет диапазон 192.128.1.0/24
Олег Уровень 111 Expert
6 сентября 2024
Спасибо за разъяснение ☺️
LastOFUS Уровень 32
17 декабря 2022
Если разные приватные ip адреса могут использовать один и тот же глобальный адрес, то каким образом пакет доставляется обратно ?
Владимир Уровень 108
2 марта 2023
так маршрутизатор с NAT и определяет на входе получателя