главная страница поиск карта сайта написать письмо
   
  История
  Документация
  Пресс-центр
  Предложения
  О Форуме
 логин
 пароль
Работа NAT в IPv4
/ Документация / Теория / Работа NAT в IPv4

Общие принципы работы NAT

Клиентам сети, находящимся с внутренней стороны устройства NAT, назначаются частные IP-адреса; обычно это делается через службу DHCP (Dynamic Host Configuration Protocol — протокол динамической настройки узлов) или путем статической настройки, выполняемой администратором. В ходе сеанса связи с узлом, находящимся снаружи этой частной сети, обычно происходит следующее.

На стороне клиента

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

Исходящий пакет в устройстве NAT

Устройство NAT перехватывает исходящий пакет и производит сопоставление порта, используя IP-адрес назначения (адрес сервера), порт назначения, внешний IP-адрес устройства NAT, внешний порт, сетевой протокол, а также внутренние IP-адрес и порт клиента.

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

Затем устройство NAT «транслирует» пакет, преобразуя в пакете поля источника: частные, внутренние IP-адрес и порт клиента заменяются общими, внешними IP-адресом и портом устройства NAT.

Преобразованный пакет пересылается по внешней сети и в итоге попадает на заданный сервер.

На стороне сервера

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

Входящий пакет в устройстве NAT

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

Затем NAT отправляет пакет клиенту по внутренней сети. Однако если NAT не находит подходящего сопоставления портов, входящий пакет отвергается и соединение разрывается.

Благодаря устройству NAT клиент получает возможность передавать данные в глобальной среде Интернета, используя лишь частный IP-адрес; ни от приложения, ни от клиента не требуется никаких дополнительных усилий. Приложению не приходится обращаться к каким-либо специальным API-интерфейсам, а клиенту не нужно выполнять дополнительную настройку. В данном случае механизм NAT оказывается прозрачным по отношению к клиенту и к серверному приложению — все работает просто и четко.

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

Что такое NAT Traversal?

NAT Traversal (прохождение NAT) — это набор возможностей, позволяющих сетевым приложениям определять, что они находятся «под защитой» устройства NAT, узнавать внешний IP-адрес и выполнять сопоставление портов для пересылки пакетов из внешнего порта NAT во внутренний порт, используемый приложением; все это выполняется автоматически, так что пользователю не приходится вручную настраивать сопоставления портов или какие-либо другие параметры.

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

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

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

Поддержка NAT Traversal в шлюзах Интернета

Поддержка NAT Traversal в шлюзах Интернета реализована в виде поддержки спецификации IGD (Internet Gateway Device), определенной Рабочим комитетом по шлюзам Интернета в рамках Форума UPnP. Производители шлюзов должны иметь в виду, что API-интерфейсы NAT Traversal, включенные в Windows, исходят из следующих предположений о работе устройств IGD.

  • Устройства IGD объявляют в каждый момент времени только один внешний интерфейс. Хотя с технической точки зрения допустимо объявление нескольких внешних интерфейсов, API-функции NAT Traversal будут использовать только первый из них.
  • IGD поддерживают сопоставления портов, обеспечивающие пересылку пакетов с любого удаленного IP-адреса внутренним клиентам.
  • IGD поддерживают сопоставления портов, в которых в качестве клиента указан широковещательный адрес.
  • IGD поддерживают различные номера для внешнего порта NAT и внутреннего порта клиента.
  • IGD генерируют объявления с номером версии 1.
  • Статические сопоставления портов действуют неограниченно долго, невзирая на перезагрузки, изменения IP-адресов и присутствие клиента на сервере.

На момент написания данного документа уже несколько ведущих производителей объявили о планах начать в 2001 г. поставки поддерживающих эти спецификации UPnP шлюзовых устройств Интернета, совместимых с API-интерфейсами Windows NAT Traversal. Это важное событие как для пользователей, так и для отрасли в целом.

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

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

Следует заметить, что средство общего доступа к подключению Интернета в Windows XP поддерживает версию 0.9 стандарта UPnP IGD. Ожидается, что версия 1.0 будет совместима с версией 0.9.

Недостатки NAT Traversal

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

  • NAT Traversal использует модель открытых доверительных отношений. Это означает, что все приложения в частной сети имеют доступ ко всем сопоставлениям портов, установленным в NAT. В результате значительно повышается гибкость администрирования (точек управления становится больше), однако приложения лишаются прав монопольного владения своими сопоставлениями.
  • Разрешение конфликтов является обязанностью приложений. Если приложение пытается сопоставить порт, уже сопоставленный другому клиенту, следует либо найти другой порт, либо соответственно изменить программный код.
  • NAT Traversal не решает проблемы Интернет-провайдеров, которые сами распределяют частные адреса и используют NAT для подключения клиентов. В этом случае NAT оказывается снаружи шлюза Интернета, фактически в сети провайдера. Средство NAT Traversal в домашней или небольшой офисной сети не сможет работать, если устройство NAT в клиентской сети защищено еще одним таким же устройством NAT. Поэтому Интернет-провайдерам не рекомендуется развертывать NAT в своих сетях.
  • Изначально приложение не имеет доступа к NAT Traversal — его необходимо изменить, чтобы можно было вызывать функции API, или сопроводить соответствующим сценарием. Впрочем, это вполне осуществимая задача для разработчика, особенно учитывая тот факт, что как только механизмы NAT Traversal интегрированы в приложение, оно приобретает способность работать с множеством различных шлюзов Интернета.
  • Приложения, закончив работу с сопоставлениями портов, должны выполнить после себя очистку. Статические сопоставления сохраняются неопределенно долго и наиболее всего подходят для служб, которые собираются прослушивать широко известные порты на протяжении всего существования приложения.
  • Шлюз Интернета, на котором установлены средства NAT, должен поддерживать спецификацию Universal Plug and Play Internet Gateway Device версии 0.9 или более поздней.

Заключение

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

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

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

Основные тезисы данного документа:

  • Производители шлюзов Интернета должны реализовывать технологию UPnP в своих устройствах, чтобы обеспечить поддержку NAT Traversal.
  • Разработчики сетевых приложений должны использовать API-интерфейсы Windows NAT Traversal для обнаружения NAT и предусмотреть в своих приложениях возможность прохождения NAT в случае необходимости.
  • Пользователи, желающие добиться наиболее эффективной работы приложений, должны выбирать для себя шлюзы Интернета, поддерживающие технологии UPnP и NAT Traversal.
  • Провайдеры широкополосного доступа (через DSL и кабельные модемы) должны организовать продажу и аренду шлюзов Интернета, поддерживающих UPnP NAT Traversal.

NAT Traversal будет существовать в той или иной форме до тех пор, пока с появлением IPv6 не отпадет необходимость в NAT.


Материал взят с Microsoft.com. © 2006 Корпорация Microsoft. Все права защищены. Оригинальная ссылка.


AREALIDEA Разработка сайта