Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Пробивка отверстий UDP - это широко используемый метод, используемый в приложениях трансляции сетевых адресов (NAT) для поддержки потоков пакетов протокола дейтаграмм пользователя (UDP), которые проходят через NAT. Методы обхода NAT обычно требуются для сетевых приложений клиент-клиент в Интернете, в которых задействованы узлы, подключенные в частных сетях , особенно при развертывании одноранговой сети , прямого клиент-клиент (DCC) и передачи голоса по Интернет-протоколу (VoIP). . [1]

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

Обзор [ править ]

Пробивка отверстий UDP - это метод установления двунаправленных UDP-соединений между узлами Интернета в частных сетях с использованием трансляторов сетевых адресов. Этот метод не применим во всех сценариях или со всеми типами NAT, поскольку рабочие характеристики NAT не стандартизированы.

Хосты с сетевым подключением внутри частной сети, подключенной через NAT к Интернету, обычно используют Утилиты обхода сеанса для NAT (STUN) или интерактивное установление подключения (ICE) для определения общедоступного адреса NAT, который требуется его узлам связи. В этом процессе другой хост в общедоступной сети используется для установления сопоставления портов и другого состояния порта UDP, которое считается допустимым для прямой связи между хостами приложений. Так как состояние UDP обычно истекает через короткие промежутки времени в диапазоне от десятков секунд до нескольких минут, [2] и порт UDP закрывается в процессе, пробивка отверстий UDP использует передачу периодического поддержания активности пакетов, каждый из которых обновляет счетчики времени жизни в конечном автомате UDP NAT.

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

При несколько более сложном подходе оба хоста начнут отправлять друг другу сообщения, используя несколько попыток. В ограниченном конусном NAT первый пакет от другого хоста будет заблокирован. После этого устройство NAT имеет запись об отправке пакета на другую машину и пропускает любые пакеты, приходящие с этого IP-адреса и номера порта. Этот метод широко используется в одноранговом программном обеспечении и телефонии по протоколу передачи голоса по Интернет-протоколу . Его также можно использовать для создания виртуальных частных сетей, работающих через UDP. Этот же метод иногда применяется к протоколу управления передачей.(TCP), хотя и с меньшим успехом, потому что потоки TCP-соединений контролируются ОС хоста, а не приложением, а порядковые номера выбираются случайным образом; таким образом, любое устройство NAT, которое выполняет проверку порядкового номера, не будет рассматривать пакеты как связанные с существующим соединением и отбрасывать их.

Flow [ править ]

Пусть A и B - два хоста, каждый в своей частной сети; N A и N B - два устройства NAT с глобально доступными IP-адресами EIP A и EIP B соответственно; S - это общедоступный сервер с хорошо известным глобально доступным IP-адресом.

  1. A и B каждый начинают диалог UDP с S; нац устройство N A и N B создать UDP состояние перевода и назначить временные номера внешнего порта EP A и EP B .
  2. S проверяет пакеты UDP, чтобы определить порт источника, используемый N A и N B (внешние порты NAT EP A и EP B ).
  3. S передает EIP A : EP A в B и EIP B : EP B в A.
  4. А посылает пакет на ОПЗ B : EP B .
  5. N A проверяет пакет A и создает следующий кортеж в его таблице преобразования: (Source-IP-A, EP A , EIP B , EP B ).
  6. В посылает пакет на ОПЗ A : EP A .
  7. N B проверяет пакет B и создает следующий кортеж в его таблице преобразования: (Source-IP-B, EP B , EIP A , EP A ).
  8. В зависимости от состояния таблицы трансляции N A, когда приходит первый пакет B (т.е. был ли кортеж (Source-IP-A, EP A , EIP B , EP B ) к моменту прибытия первого пакета B) , Первый пакет B отбрасывается (нет записи в таблице трансляции) или передается (запись в таблице трансляции была сделана).
  9. В зависимости от состояния таблицы трансляции N B, когда приходит первый пакет A (т.е. был ли создан кортеж (Source-IP-B, EP B , EIP A , EP A ) к моменту прибытия первого пакета A) , Первый пакет A отбрасывается (нет записи в таблице трансляции) или передается (запись в таблице трансляции была сделана).
  10. В худшем случае второй пакет от A достигает B; в худшем случае второй пакет от B достигает A. Дыры в NAT «пробиты», и оба хоста могут напрямую связываться.
  • Если оба хоста имеют ограниченный конусный NAT или симметричный NAT , внешние порты NAT будут отличаться от портов, используемых с S. На некоторых маршрутизаторах внешние порты выбираются последовательно, что позволяет установить диалог, угадывая ближайшие порты.

См. Также [ править ]

Ссылки [ править ]

  1. ^ «Пробивка отверстий UDP, состояние одноранговой (P2P) связи через трансляторы сетевых адресов (NAT)» . ietf.org. 2008-03-01 . Проверено 22 июня 2016 .
  2. ^ "Простая безопасность в CPE шлюза IPv6" . ietf.org. 2011-01-01 . Проверено 22 июня 2016 .

Внешние ссылки [ править ]

  • Одноранговая связь через трансляторы сетевых адресов , PDF  - содержит подробное объяснение процесса пробивки отверстий.
  • STUNT  - простой обход UDP через NAT и TCP тоже
  • Трансляция сетевых адресов и одноранговые приложения (NATP2P)