Пробивка отверстий ICMP - ICMP hole punching

Поддержание доступа с помощью пробивки отверстий ICMP
Обеспечение доступа с помощью пробивки отверстий ICMP.

Пробивка отверстий ICMP это техника, используемая в транслятор сетевых адресов (NAT) приложения для обслуживания Протокол управляющих сообщений Интернета (ICMP) потоки пакетов, проходящие через NAT. Обход NAT методы обычно требуются для сетевых приложений клиент-клиент на Интернет с участием хостов, подключенных в частные сети, особенно в пиринговый и Голос по интернет-протоколу (VoIP) развертывания.

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

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

Обзор

В настоящее время единственный метод перфорации ICMP или перфорации без участия третьих лиц (автономное прохождение NAT) был разработан Сами Камкар 22 января 2010 г. и выпущен в виде программного обеспечения с открытым исходным кодом pwnat,[2] Позже этот метод был опубликован в IEEE. Согласно статье:[3]

Предлагаемый метод предполагает, что клиент каким-то образом узнал текущий внешний (глобально маршрутизируемый) IP-адрес NAT сервера. Ключевой идеей, позволяющей серверу узнавать IP-адрес клиента, является периодическая отправка сервером сообщения на фиксированный адрес. известный IP-адрес. Самый простой подход использует сообщения ICMPECHO REQUEST для нераспределенного IP-адреса, например 1.2.3.4. Поскольку 1.2.3.4 не распределяется, ICMP REQUEST не будет маршрутизироваться маршрутизаторами без маршрута по умолчанию; сообщения ICMP DESTINATION UNREACHABLE, которые могут быть созданы этими маршрутизаторами, могут просто игнорироваться сервером в результате сообщений, отправленных на 1.2.3.4. NAT включит маршрутизацию ответов в ответ на этот запрос. Затем подключающийся клиент подделает такой ответ. В частности, клиент передает ICMP-сообщение с указанием TL_EXPIRED. Такое сообщение может законно передаваться любым интернет-маршрутизатором, и нельзя ожидать, что адрес отправителя будет соответствовать целевому IP-адресу сервера. Сервер прослушивает (поддельные) ответы ICMP и при получении инициирует соединение с IP-адресом отправителя, указанным в ответе ICMP.

Смотрите также

Рекомендации

  1. ^ Muller, A .; Evans, N .; Grothoff, C .; Камкар, С. (2010). «Автономное прохождение NAT». 2010 Десятая международная конференция IEEE по одноранговой сети (P2P). IEEE. С. 1–4. Дои:10.1109 / P2P.2010.5569996. ISBN  978-1-4244-7140-9.
  2. ^ "Программа для обхода NAT pwnat". 2010-01-22. Получено 2011-05-19.
  3. ^ "Полная статья об автономном прохождении NAT" (PDF). 2010-08-25. Получено 2011-05-19.