Принцип работы nat кратко

Обновлено: 04.07.2024

Содержание

Методология

Оригинальное использование преобразования сетевых адресов состоит в отображении каждого адреса одного адресного пространства в соответствующий адрес в другом пространстве, например, в случае, когда предприятие изменило провайдера Интернет-услуг и не имеет средств на то, чтобы объявить об этом публике. Преобразование сетевых адресов все чаще используется еще начиная с 1990-х, когда началось истощение обозримого глобального IP-адресного пространства. Вместе с ним используется и IP-маскировка, которая представляет собой метод, скрывающий все IP-адресное пространство, которое, как правило, состоит из IP-адресов частной сети и IP-адреса в другой, как правило, общественной сети. Этот механизм реализован в маршрутизаторе, который использует таблицы перевода с сохранением состояния для отображения "скрытые" адреса в один IP-адрес и переадресует исходящие IP-пакеты на выход. В обратном канале связи, ответы отображаются в обратном исходному IP-адресу порядке. Данный метод позволяет осуществлять связь через маршрутизатор только тогда, когда разговор происходит в замаскированной сети, так как это создает таблицы перевода. Например, веб-браузер в замаскированной сети может просматривать веб-сайт за пределами, но веб-браузер снаружи не может просматривать веб-сайт, размещенный в сети, которая замаскирована. Тем не менее, большинство устройств NAT сегодня позволяют сетевому администратору конфигурировать записи таблицы перевода для постоянного пользования. Эта функция часто упоминается как "статический NAT" или перенаправление портов, позволяющее отобразить трафик, исходящий в "внешней" сети на сеть замаскированную [2] .

Термин NAT стал практически синонимом IP маскировки.

Так как преобразование сетевых адресов изменяет информацию адреса IP в пакеты, она имеет серьезные последствия для качества подключения к Интернету и требует пристального внимания к деталям процесса реализации.

Основной тип преобразования сетевых ресурсов

Простейший тип преобразования сетевых ресурсов (NAT) обеспечивает трансляцию IP-адресов один-к-одному. RFC 2663 относится к этому типу NAT в качестве основного NAT; его часто также называют NAT один-к-одному. В этом типе NAT, только IP-адреса, IP-заголовка контрольной суммы и любых высших контрольных сумм уровня, которые включают в себя измененный IP-адрес. Основные NAT можно использовать для соединения двух IP-сетей, у которых несовместимы адресации.

Назначение NAT

  1. Вывод в интернет внутренней сети через пул внешних адресов; один внешний адрес;
  2. Для подмены внешнего IP-адреса другим (перенаправление трафика);
  3. Для балансировки нагрузки между одинаковыми серверами с разными IP-адресам;
  4. Для объединения двух локальных сетей с пересекающейся внутренней адресацией.

Концепции трансляции адресов NAT

Существует 3 базовых концепции трансляции адресов: статическая (Static Network Address Translation), динамическая (Dynamic Address Translation), маскарадная(NAPT, NAT Overload, PAT).

Статический NAT

132806-NON - Static NAT ос.jpg

Динамический NAT

Dynamicnat1 ос.jpg

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

Практический пример действия NAT

Адресация в закрытой сети и трансляция сетевых адресов (NAT) — это два взаимосвязанных метода, которые способствуют резкому сокращению потребности в использовании открытых IP-адресов. В основе этих методов лежит простой принцип. Хостам закрытой сети присваиваются адреса, которые не используются в общедоступной сети (Internet). При возникновении необходимости организовать обмен данными между хостом в закрытой сети и хостом в открытой сети первый посылает запрос в сетевой шлюз, который преобразует закрытый IP-адрес в открытый IP-адрес. Благодаря этому уменьшается потребность в использовании открытых IP-адресов, поскольку не приходится присваивать открытый IP-адрес каждому хосту, для которого необходимо обеспечить работу в Internet. Вместо этого присваивается один (или несколько) адресов устройству NAT, которое обеспечивает доступ к Internet.

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


Как показано на рис. 2, хост посылает запрос по адресу www.cisco.com из закрытой сети. Он имеет адрес закрытой сети, поэтому должен обратиться к устройству NAT, чтобы выйти в Internet. В данном случае функции устройства NAT (т.е. трансляцию сетевых адресов) выполняет маршрутизатор. А компьютер просто применяет к адресу получателя маску сети с помощью операции "И" и определяет, что пакет предназначен для другой сети и передает его в шлюз, предусмотренный по умолчанию (маршрутизатор с поддержкой NAT). При поступлении в маршрутизатор пакет имеет следующие поля [3] .


Теперь маршрутизатор с поддержкой NAT принимает пакет и заменяет в нем адрес отправителя своим открытым IP-адресом (в данном примере 70.14.1.1), а также вводит другой номер порта, чтобы иметь возможность отличить пакет, переданный в ответ отправителю (по адресу 192.168.1.10), от других пакетов, например, передаваемых в ответ на компьютер с адресом 192.168.1.200. Маршрутизатор вносит сведения о выполненных им преобразованиях в таблицу трансляции и отправляет пакет на Web-сервер. К этому времени заголовок пакета содержит данные, приведенные ниже.

Преобразуется и IP-адрес этого компьютера (192.168.1.200), и после преобразования заголовок пакета содержит данные, перечисленные ниже.

После выполнения всех этих действий устройство NAT формирует таблицу трансляции, которая приведена в табл. 1.

Таблица 1. Таблица трансляции NAT
IP-адрес отправителя
Порт отправителя
Оттранслированный IP-адрес
Оттранслированный номер порта
192.168.1.10
44000
70.14.1.1
60000
192.168.1.200
55555
70.14.1.1
50600

Трансляция сетевых адресов может выполняться маршрутизатором, но чаще всего этот процесс осуществляется в специализированном устройстве, который принято называть прокси-сервером. Прокси-сервер выполняет основные функции трансляции сетевых адресов NAT, а также обеспечивает выполнение целого ряда других процессов. В частности, прокси-сервер обеспечивает хеширование информационного наполнения (записывает файлы, как правило, Web-страницы, к которым часто происходит доступ на своем жестком диске, чтобы при получении повторного запроса к этим данным с другого хоста не приходилось снова выполнять их загрузку из Internet), преобразование пакетов других протоколов (таких как IPX/SPX) в пакеты IP и фильтрацию пакетов (принимает или отбрасывает пакеты с учетом таких критериев, как IP-адрес отправителя или номер порта). Но независимо от того, каким устройством осуществляется трансляция сетевых адресов, метод NAT применяется более эффективно при использовании пула IP-адресов, а не отдельного адреса, поскольку при наличии нескольких IP-адресов устройству NAT не приходится слишком часто выполнять трансляцию номеров портов [4] .

Хотя метод NAT может применяться при использовании любой структуры IР адресов (включая открытые адреса), обычно лучше использовать пространство адресов, зарезервированное для закрытой сети. Причина этого очень проста — если в закрытой сети применяются открытые адреса, то общедоступный ресурс, обозначенный этим адресом (а также все другие ресурсы, обозначенные применяемой маской), станут недоступными из закрытой сети. Например, если организация использует в своей внутренней сети адрес 207.46.230.0/24, то ее сотрудники не смогут обратиться к любому компьютеру в Internet, находящемуся в сети 207.46.230.0 (которая принадлежит Microsoft), поскольку хост локальной сети будет рассматривать такой адрес получателя в пакете как локальный адрес и не отправит пакет в устройство NAT.

В связи с этим, для каждого класса сети (от А до С) определен блок адресов, предназначенный для использования в закрытой сети. Именно эти адреса, перечисленные ниже, должны использоваться в сочетании со средствами NAT.

  • 10.0.0,0.
  • 172.16.0.0 до 172.31.0.0 (16 сетей).
  • 192.168.0.0 до 192.168.255.0 (256 сетей).

Метод адресации в закрытой сети определен в документе RFC 1918, а метод NAT — в документе RFC 3022.

Трансляция сетевых адресов по английский Network Address Translation (NAT) это технология замены ip адресов и портов в заголовке ip пакета. Чаще всего nat используется, чтобы заменить ip адрес внутренней сети на ip адрес из внешней сети. Это делается, чтобы преодолеть нехватку адресов IPv4.

p, blockquote 1,0,0,0,0 -->


p, blockquote 2,0,0,0,0 -->

Внутренние и внешние IP адреса

Внешние ip адреса это обычные адреса, которые можно применять в интернет. Они должны быть уникальными во всём мире, их нельзя использовать просто так. Нужно получать разрешение у корпорации ICANN, у одного из ее региональных регистраторов.

p, blockquote 3,0,0,0,0 -->

Проблема с внешними адресами в протоколе ipv4 в том, что их не хватает для современного масштаба интернет. Адресов ipv4 примерно 4 млрд., а сейчас устройств в интернете гораздо больше.

p, blockquote 4,0,0,0,0 -->

Внутренние IP адреса это три специальных, диапазонов ip адресов, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 которые можно использовать для создания внутренних или частных сетей. Диапазоны определены в документе RFC 1918. Эти адреса не могут использоваться в интернет, зато их можно применять в своей сети без обращения в ICANN. Разные частные сети, могут использовать одни и те же диапазоны внутренних ip адресов.

p, blockquote 5,0,0,0,0 -->

Пример использования NAT

Как работает технология NAT для преобразования внутренних адресов во внешние? Предположим, у нас есть сеть организации в которой используются внутренние адреса из диапазона 192.168.1.0. Есть Интернет в котором такие адреса использовать нельзя и внутренняя сеть подключаемая к интернет через устройство NAT.

p, blockquote 6,0,0,0,0 -->

Устройство nat

p, blockquote 7,0,0,0,0 -->

Устройство NAT имеет один внешний ipv4 адрес 184.86.48.128 и когда компьютеры из внутренней сети хотят подключиться к интернету, устройство NAT преобразует ip адреса из внутренней сети в ip адрес внешней сети.

p, blockquote 8,0,0,0,0 -->

Типы NAT

Есть достаточно много разных вариантов технологии NAT. Мы рассмотрим 3 типа, которые используются чаще всего. Однако, кроме них есть и другие возможные варианты.

p, blockquote 9,0,0,0,0 -->

Статический NAT

Первый тип это статическое отображение ip адресов один к одному. В этом случае, нам нужно иметь столько же внешних адресов, сколько и компьютеров во внутренней сети. т.е. 4 компьютера и 4 ip адреса в нашем случае. И у нас фиксированное отображение внутренних адресов во внешние ip адреса.

p, blockquote 10,0,0,0,0 -->

Статический nat

p, blockquote 11,0,0,0,0 -->

Такая схеме используетя редко и она возможна, когда Вы подключаете сеть организации не к интернет, а к какой-то другой организации, где тоже используются внутренние ip адреса и возможен конфликт ip адресов.

p, blockquote 12,0,1,0,0 -->

Динамический NAT

Второй вариант это динамическое преобразование, когда набор внутренних ip адресов отображается на группу внешних ip адресов. В случае динамического NAT у нас есть несколько внешних ip адресов, которые поочередно используются разными компьютерами из внутренней сети. Например сначала компьютер 1 использует первый адрес, а компьютер 3 второй адрес.

p, blockquote 13,0,0,0,0 -->

Динамический nat

p, blockquote 14,0,0,0,0 -->

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

p, blockquote 15,0,0,0,0 -->

Один ко многим (masquerading)

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

p, blockquote 16,0,0,0,0 -->

Рассмотрим, как работает вариант NAT one-to-many, потому что с его помощью, можно подключать к интернет большие сети организаций, используя один внешний ip адрес (184.86.48.128). Именно это позволяет частично смягчить проблему нехватки адресов ipv4.

p, blockquote 17,0,0,0,0 -->

masquerading

p, blockquote 18,0,0,0,0 -->

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

p, blockquote 19,0,0,0,0 -->

Таблица nat

p, blockquote 20,0,0,0,0 -->

Работа NAT

Как работает nat в режиме masquerading? Предположим, что первый компьютер решил зайти на сайт. Он отправляет пакет, в ip адресе указывается ip адрес компьютера из внутренней сети (192.168.1.2), в поле порт указывается динамический порт, выданный браузеру операционной системой (57160). И пакет предназначен для 80 порта адреса Веб-сайта.

p, blockquote 21,0,0,0,0 -->

Работа nat

p, blockquote 22,0,0,0,0 -->

Но, так как адреса из внутренней сети не могут использоваться в интернет, то устройству nat нужно заменить ip адрес из внутренней сети в заголовке пакета в адресе отправителя (192.168.1.1), на ip адрес из внешней сети (184.86.48.128).

p, blockquote 23,0,0,0,0 -->

Как это делает устройство nat? После того, как устройство nat получило пакет, оно записывает внутренний ip адрес и внутренний порт в таблицу и генерирует пару внешний адрес и внешний порт для замены в пакете. Так как у нас всего лишь один внешний адрес, то именно он записывается в поле внешний ip. Внешний порт генерируется случайным образом. Устройство нат сгенерировало адрес пота 48202.

p, blockquote 24,0,0,0,0 -->

Работа nat

p, blockquote 25,1,0,0,0 -->

На следующем этапе происходит трансляция, т.е. замена ip адреса и порта. IP адрес и порт отправителя удаляются из пакета и на их место записываются новые данные из таблицы nat. Внешний ip адрес устройства nat и внешний порт, которое устройство nat сгенерировало случайным образом.

p, blockquote 26,0,0,0,0 -->

Работа nat

p, blockquote 27,0,0,0,0 -->

В таком виде пакет передается на веб сервер. Когда приходит ответ от веб-сервера, там в качестве получателя, указывается ip адрес устройства nat и порт на этом устройстве.

p, blockquote 28,0,0,0,0 -->

указывается ip адрес устройства nat

p, blockquote 29,0,0,0,0 -->

Но в реальности эти данные предназначены не для устройства nat, а для компьютера внутренней сети. Поэтому устройство нат должно понять к какому компьютеру во внутренней сети предназначены данные. Затем изменить ip адрес и порт, передать данные нужному компьютеру. Это делается, с помощью таблицы nat.

p, blockquote 30,0,0,0,0 -->

В таблице nat ищется запись в которой внешний ip адрес и внешний порт, такие же как в поступившем пакете. Пока у нас в таблице одна запись, поэтому устройство nat берет из этой записи внутренний ip адрес интересующего нас компьютера и его порт. Устройство nat сново производит замену ip адреса и порта в пакете и в в таком виде передает пакет во внутреннюю сеть.

p, blockquote 31,0,0,0,0 -->

передает пакет во внутреннюю сеть

p, blockquote 32,0,0,0,0 -->

p, blockquote 33,0,0,0,0 -->

ip адрес устройства nat

p, blockquote 34,0,0,0,0 -->

Адрес и порт из внутренней сети меняются на адрес и порт из внешней сети. И в таком виде пакет передается в интернет.

p, blockquote 35,0,0,0,0 -->

Адрес и порт из внутренней сети меняются на адрес и порт из внешней сети

p, blockquote 36,0,0,0,0 -->

Когда приходит ответ от веб-сервера, снова выполняется поиск пары внешний ip адрес и внешний порт. В таблице nat ищется соответствующие им внутренний ip адрес и внутренний порт. Производится замена в заголовке пакета и пакет передается во внутреннюю сеть. Можете посмотреть видео, если что-то было не ясно.

p, blockquote 37,0,0,0,0 -->

p, blockquote 38,0,0,1,0 -->

Преимущества NAT

Эта технология долго позволяла справляться с нехваткой адресов ipv4. Вы можете подключить к интернет сеть крупной организации, где много компьютеров, с помощью всего лишь одного внешнего адреса ipv4.

p, blockquote 39,0,0,0,0 -->

Эту технологию легко развернуть и использовать, Вам нужно всего лишь одно устройство nat и адреса для внутренней сети. Вы можете свободно использовать из диапазона частных адресов не обращаясь в ICANN.

p, blockquote 40,0,0,0,0 -->

Дополнительное преимущество в безопасности, технология nat скрывает внутреннюю структуру сети от внешнего мира. Для внешнего мира есть всего один адрес ipv4, а что установлено внутри сети, с внутренними адресами, никто не видит.

p, blockquote 41,0,0,0,0 -->

Недостатки NAT

Однако nat обладает рядом существенных недостатков. Первый теоретический недостаток, заключается в том, что нарушение фундаментального принципа построения ip-сетей, в которых каждый компьютер должен иметь возможность соединяться с любым другим компьютером.

p, blockquote 42,0,0,0,0 -->

Следствие этого теоретического недостатка, является ряд практических. Например нет возможности подключиться из внешнего мира к компьютерам во внутренней сети. Из внешнего мира виден всего лишь один ip адрес и невозможно понять, что в реальности за этим ip адресом находится большое количество других устройств.

p, blockquote 43,0,0,0,0 -->

Некоторые протоколы, которые разрабатывались в ранние годы создания интернет, и рассчитаны на то, что каждое устройство может соединиться с каждым, в случае с nat работают плохо. Например, плохо работает протокол FTP, который использует два соединения, одно для управления, другое для передачи данных. Соединение для передачи данных обычно устанавливается сервером, если клиент находится за устройством nat, то сервер FTP не может установить с ним соединение для передачи данных.

p, blockquote 44,0,0,0,0 -->

Плохо работают протоколы, которые не устанавливают соединения. Для которых нет возможности сохранить запись в таблице nat на всё время жизни соединения.

p, blockquote 45,0,0,0,0 -->

Дополнительный недостаток в том, что нет единого стандарта nat, а есть много разных вариантов, которые поддерживаются разными производителями оборудования и их ПО, все это вносит путаницу и приводит к несовместимости.

p, blockquote 46,0,0,0,0 -->

Решение проблем с NAT

Как можно решить проблемы с nat? Если Вы хотите иметь возможность попасть из внешнего мира во внутреннюю сеть, то для этого можно использовать статическое отображение, которое мы уже рассматривали выше.

p, blockquote 47,0,0,0,0 -->

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

p, blockquote 48,0,0,0,0 -->

Также можно использовать статическое отображение для портов. Например, порт 80 на устройстве nat отображается во внутренний адрес сервера и порт 80. Порт 25, который используется для электронной почты отображается во внутренний адрес почтового сервера и порт 25. В этом случае у нас есть один ip адрес, но разные его порты отображаются в разные пары, ip адрес и порт, во внутренней сети.

p, blockquote 49,0,0,0,0 -->

Есть технология NAT Traversal, которая позволяет устанавливать соединения с компьютерами во внутренней сети без интернет. Она определена в стандарте RFC 3489. Есть и другие варианты такой технологии. Такая технология часто используется в приложениях для передачи видео и голоса, например Skype.

p, blockquote 50,0,0,0,0 -->

Итоги

Рассмотрели технологию трансляции сетевых адресов NAT, она используется, чтобы в заголовке ip пакета преобразовать ip адрес внутренней или частно сети в ip адрес внешней сети, которая может использоваться в интернет. Технология nat реализуется с помощью маршрутизаторов, межсетевых экранов и другие сетевые устройства.

На данный момент в интернете больше всего распространены IP адреса в формате четвертой версии интернет протокола — IPv4. Но данная технология позволяет создавать лишь 4.3 миллиарда айпи на всех пользователей всемирной паутины.

Хотя нам и кажется, что это много — их уже критически не хватает, надо было придумывать, что-то новое, и еще до появления IPv6 был создан механизм преобразования сетевых адресов — NAT.


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

Что такое НАТ — NAT

NAT — это специальный механизм, реализованный в сетях TCP/IP, который позволяет изменять айпи адреса пересылаемых пакетов, т.е. тех внутренних IP, которые присылаются на сетевой шлюз — в глобальные для дальнейшей отправки во внешний интернет. Также, такие пакеты называют транзитными.

Реализуется через маршрутизатор, на программном уровне или настраивается самим провайдером. Полностью расшифровывается, как Network Address Translation и переводится на русский, как Преобразование Сетевых Адресов.

Простыми словами, работает это так. При создании сетей обычно используются частные IP вида: 10/8, 172.16/12, 192.168/16. Обмен пакетами между этими айпи внутри такой сети происходит напрямую. Но, чтобы выйти в глобальную паутину, такой IP должен быть преобразован в глобальный/публичный — именно этим и занимается NAT.


Именно НАТ позволяет вам из частной сети общаться с внешними ip адресами, за ее пределами. А между прочем, даже ваш роутер и подсоединенные к нему ПК, ноутбук, телевизор, смартфон и т.д. — это уже локальная частная сеть.

Интересно! Вот таким вот простыми способом, была решена проблема нехватки уникальных айпи IPv4 для каждого устройства. Т.е. в своей сети — свой IP, а во всемирной паутине — публичный, другой IP.

Типы NAT

1. Статический, Static NAT

Берется один IP-адрес из внутренней сети и преобразовывается во внешний/публичный и все запросы, которые будут на него посылаться извне, будут пересылаться именно на этот внутренний айпи. Т.е. для всемирной паутины он будет выглядеть полностью, как белый/публичный IP.

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

Работает это так:

  1. Есть во внутренней сети айпи 172.15.4.3, он обращается ко внешнему серверу на 198.2.6.2, отправляет пакет данных вначале естественно на шлюз.
  2. Шлюз 172.15.4.1, на котором настроен NAT преобразует его в белый/внешний 198.1.12.8.
  3. По глобальном интернете пакеты передаются по этому IP-адресу и обратно приходят к нему же.
  4. На маршрутизаторе с НАТ есть указание, все пакеты данных, которые приходят на 198.1.12.8 перенаправлять на 172.15.4.3.


Вот и все. Если у вас несколько роутеров, то такую процедуру можно проделать со всеми ними.

2. Динамический, Dynamic NAT

Если вы имеете определенное количество белых/внешних IP, например, ваш поставщик интернета предоставил вам сеть 199.49.101.0/28 — с 16 айпи. Надеюсь помните, что первый и конечный адреса всегда заняты, подробнее в статье про IPv4. Еще два мы возьмем для оборудования на функционирование маршрутизации. И остается их 12, которые можно применять для NAT и пускать посредством них свои устройства.

Тут все практически также, как и со статичным НАТ, также 1 внутренний айпи привязан к 1 внешнему, но с той лишь разницей, что адреса теперь будут выдаваться динамически каждому нуждающемуся пользователю во внутренней сети, а не одному определенному узлу.

Все бы хорошо, но если, например, адресов 12, а пользователей 300? Те, кто успел, те и смогут их использовать.

3. NAT Overload

Этот вид еще имеет другие названия такие как: Many-to-One NAT, Port Address Translation (PAT) и IP Masquerading.

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

Важно! Надеюсь вы помните, что порт пишется сразу после айпи через двоеточие, например: 176.57.209.9:443. И такая связка называется — сокет.


Как это будет выглядеть, когда NAT подменяет один IP на другой? Так, например, с двух устройств с внутренними адресами 173.52.6.7 и 173.52.4.5, которые должны заменяться на: 198.50.100.9 и 198.50.100.11 будет выполнен запрос на какой-либо сервер в интернете — это будет смотреться так:

  • Устройство 1 — отправитель: IP — 173.52.6.7, порт: 21784; получатель: IP — 192.16.5.3, порт: 80
  • Устройство 2 — отправитель: IP — 173.52.4.5, порт: 32714; получатель: IP — 192.16.5.3, порт: 80

Что происходит дальше? NAT берет IP-пакет первого узла, вынимает его TCP сегмент, при этом узнавая порт. У этого айпи внешний адрес 198.50.100.9 — на него он меняется при выходе в глобальный интернет. Далее происходит выбор порта, к примеру, 11837 и все данные уровня приложений упаковываются в новый TCP сегмент. Порт адресата естественно остается — 80, а вот того, кто отправляет заменяется с 21784 на 11837. TCP сегмент вставляется в новый IP-пакет со сменой самого адреса на 198.50.100.9. Такая же процедура происходит и со вторым хостом только отбирается следующий незанятый PORT.

Теперь данные отправляемые в интернет будут выглядеть так:

  • Устройство 1 — отправитель: IP — 198.50.100.9, порт: 11837; получатель: IP — 192.16.5.3, порт: 80
  • Устройство 2 — отправитель: IP — 198.50.100.11, порт: 27289; получатель: IP — 192.16.5.3, порт: 80

В NAT-таблицу записываются значения отправителя и получателя:

  • Локальный сокет отправителя 1: 173.52.6.7:21784; сокет получателя: 192.16.5.3:80
  • Глобальный сокет отправителя 1: 198.50.100.9:11837; сокет получателя: 192.16.5.3:80
  • Локальный сокет отправителя 2: 173.52.4.5:32714; сокет получателя: 192.16.5.3:80
  • Локальный сокет отправителя 2: 198.50.100.11:27289; сокет получателя: 192.16.5.3:80

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

Преимущества NAT

  • Под одним внешним IPv4 адресом может сидеть в глобальной паутине множество пользователей одновременно.
  • Скрывает ваш настоящий внутренний IP в частной сети и показывает лишь внешний. Так, все устройства из вне видят только ваш общедоступный айпи.
  • В определенной степени выполняет функции файрвола, не позволяя соединениям извне достигать основного компьютера. Т.е. если на устройство с НАТ извне приходит пакет, который не ожидался — то он категорически не будет допущен.
  • Роутер с поддержкой НАТ может быть настроен сразу с несколькими внешними/белыми IP, это еще называется — пул НАТ.

Недостатки NAT

  • Невысокая скорость передачи данных для протоколов реального времени, например, для VoIP. Т.к. когда НАТ переделывает заголовки у каждого IPv4 адреса — происходят задержки.
  • Проблемы с идентификацией, т.к. под одним IP может находится сразу несколько человек.
  • Для пиринговых сетей нужна дополнительная настройка маршрутизации, т.к. приложению еще нужно и принимать соединения.
  • Если много пользователей с одним айпи зайдут на какой-либо сервис — это может вызывать подозрение на Do S-атаку.

В заключение

Надеюсь вам стало чуточку понятнее, что это такое. Старался написать все, как можно понятнее без заумных терминов и других определений. Надеюсь вам понравилось и до встречи на страницах данного портала.

Одной из проблем в развитии сетей является ограниченное количество существующих IPv4 адресов — их около 4,3 миллиарда. С повсеместным распространением интернета и взрывообразным ростом количества пользователей, стало очевидно, что этого недостаточно. Возникла потребность в инструменте, способном решить эту проблему (по крайней мере до момента, когда будут внедрены IPv6) — и одним из таких инструментов стала технология NAT (Network Address Translation).

Что такое NAT


При проектировании сетей обычно применяются частные IP-адреса 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Их используют внутри сети площадки или организации для поддержания локального взаимодействия между устройствами, а не для маршрутизации во всемирной сети. Чтобы устройство с адресом IPv4 могло обратиться к другим устройствам или ресурсам через интернет, его частный адрес должен быть преобразован в публичный и общедоступный. Такое преобразование — это главное, что делает NAT, специальный механизм преобразования приватных адресов в общедоступные.

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

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

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

В соответствии с принятой терминологией NAT внутренняя сеть понимается как набор сетей, которые подлежат терминологии. Под внешней понимают все другие сети.

Чтобы определить, что такое NAT-адрес, нужно учитывать его нахождение в частной сети или в интернете, а также тип трафика (входящий или исходящий). В зависимости от этих факторов устанавливаются следующие четыре обозначения:

  • Inside local address (внутренний локальный) — видимый во внутренней сети адрес источника, собственный локальный адрес устройства.
  • Inside global address (внутренний глобальный) — видимый из внешней сети адрес источника. При передаче трафика, например, с локального компьютера на веб-сервер, его Inside local address преобразуется маршрутизатором во внутренний глобальный адрес.
  • Outside local address (внешний локальный) — видимый из внешней сети адрес получателя. Присвоенный хосту глобально маршрутизируемый адрес IPv4.
  • Outside global address (внешний глобальный) — видимый из внутренней сети адрес получателя. Часто совпадает с локальным внешним адресом.

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

Типы NAT

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

Рассмотрим подробнее, что такое каждый из этих типов NAT.

Статический NAT

Static NAT Type — это то, что хорошо подходит для веб-серверов, а также для устройств, которым необходим доступный из интернета согласованный адрес. Реализация статистического NAT требует наличия числа общедоступных адресов, достаточного для удовлетворения общего числа одновременных пользовательских сеансов.

Пример статической NAT таблицы:

Static NAT Table

Inside Local Address

Inside Global Adress

Динамический NAT

Пример динамической NAT таблицы:

Dinamic NAT Table

Inside Local Address

Inside Global Adress

Port Address Translation (PAT)

Это наиболее распространенный тип NAT. При использовании Port Address Translation NAT подключение осуществляет трансляцию нескольких приватных адресов на один или несколько общедоступных. Этот принцип используется в большинстве маршрутизаторов, которые устанавливаются дома у частных абонентов. Адрес назначается провайдером маршрутизатором. При этом одновременный доступ к интернету могут получать несколько домашних пользователей.

Применение PAT позволяет сопоставлять несколько адресов с одним или несколькими. Это возможно благодаря отслеживанию каждого приватного адреса по номеру порта. После начала сеанса TCP/IP устройство генерирует номер порта источника TCP или UDP, что позволяет идентифицировать сеанс. При получении пакета от клиента NAT-маршрутизатором, он однозначно идентифицирует перевод NAT, используя номер собственного исходного порта. Схема PAT гарантирует использование разных портов TCP устройствами для каждого сеанса. При поступлении ответа от сервера при этом типе NAT номер порта источника уже используется как номер порта получателя. Это позволяет маршрутизатору однозначно правильно передавать пакеты.

Часто на маршрутизаторе порты клиента изменяются, поскольку ранее назначенные порты могут закрепляться за другими работающими сеансами. В процессе NAT сессии PAT стремится сохранить исходный порт источника. Если же этот порт уже занят, выполняется назначение первого из доступных номеров. Поиск свободного номера начинается с начала группы портов 0–511, 512–1023 или 1024–65535. В случае если свободных портов не остается и имеется больше одного внешнего адреса в пуле адресов, PAT переходит на новый адрес для поиска исходного порта источника.

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

Понимая, как работает NAT, можно выделить комплекс серьезных преимуществ, которые предоставляет этот механизм при организации сетей. В том числе к основным плюсам относятся такие свойства Network Address Translation:

Особенностью NAT является организация прямого взаимодействия хостов в интернете с устройством, поддерживающим Network Address Translation, а не с фактическим хостом в локальной сети.

Тут выявляются некоторые недостатки механизма, в том числе:

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

В то же время NAT остается эффективным и удобным механизмом, применяемым для организации работы сетей с использованием адресов IPv4.

Читайте также: