NAT traversal

Обход трансляции сетевых адресов (англ. NAT traversal, NAT-T) — это способ установления и поддержания соединения по IP-протоколу через сетевые устройства, выполняющие трансляцию сетевых адресов (NAT). Обычно установить соединение с компьютером, находящимся за динамическим NAT (так называемая «маскарадинг»), невозможно. Возможность обхода NAT-брандмауэра (без взаимодействия с администратором устройства NAT) полезна для множества сетевых приложений, например, для однорангового обмена или интернет-телефонии[1], поскольку в большинстве случаев для этого требуется участие третьей стороны (с публичным IP-адресом) только на этапе установления соединения.

Трансляция сетевых адресов

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

Трансляция сетевых адресов непригодна для размещения серверов во внутренней сети, поскольку устройство NAT без специальной настройки не может определить, на какое внутреннее устройство адресован входящий дейтаграмм. Эта проблема не возникает при доступе с внутреннего компьютера к внешним веб-сайтам или почтовым серверам. Однако P2P-обмен файлами, VoIP-cервисы и игровые приставки требуют обратной достижимости клиентов из Интернета, аналогично публичным серверам. Входящие дейтаграммы не могут быть просто перенаправлены на нужное внутреннее устройство без дополнительной настройки. Кроме того, многие такие сервисы передают IP-адреса и номера портов внутри дейтаграм, что может требовать использования глубокой инспекции пакетов.

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

Методы обхода NAT обычно обходят инструменты безопасности, применяемые в соответствующей сети. Корпоративные специалисты по безопасности предпочитают техники, предполагающие явно разрешённое взаимодействие NAT-устройства и брандмауэров, что позволяет реализовать контроль и принудительно применять политики безопасности на границе NAT. Среди стандартов IETF, использующих такой подход, можно отметить Realm-Specific IP (RSIP) и взаимодействие с промежуточными устройствами (MIDCOM).

Техники

Доступные техники обхода NAT включают:

  • Socket Secure (SOCKS) — технология, созданная в начале 1990-х годов, использующая прокси-серверы для пересылки трафика между сетями или системами.
  • Traversal Using Relays around NAT (TURN) — специализированный протокол ретрансляции, созданный для обхода NAT.
  • NAT hole punching — общая техника, использующая особенности работы NAT-устройств с некоторыми протоколами (например, UDP, TCP или ICMP), чтобы открыть ранее блокированные пакеты.
  • STUN — стандартизированный набор методов и сетевых протоколов для внедрения NAT hole punching. Изначально разработан для UDP, позже расширен для TCP.
  • ICE — комплексный протокол, использующий STUN и/или TURN для обхода NAT при выборе оптимального маршрута. Заполняет те пробелы и недостатки, которые не решались спецификацией STUN.
  • UPnP IGDP поддерживается многими маломощными NAT-устройствами в небольших офисах. Позволяет устройствам в сети запрашивать у маршрутизатора открытие необходимых портов.
  • NAT-PMP — протокол, предложенный Apple в качестве альтернативы IGDP.
  • PCP — преемник NAT-PMP.
  • Шлюз прикладного уровня (ALG) — компонент брандмауэра или NAT-устройства, предоставляющий фильтры для обхода NAT[2]. Многие считают, что этот подход создаёт больше проблем, чем решает[3].

Симметричный NAT

Недавний рост числа симметричных NAT-устройств снизил эффективность обхода NAT во многих практических сценариях, например, при мобильных и публичных Wi-Fi-подключениях. Техники hole punching, такие как STUN и ICE, не способны преодолевать симметричный NAT без помощи ретранслятора (TURN). Техники, основанные на прогнозировании следующего открываемого NAT портов, были предложены Ютакой Такедой (Panasonic Communications Research Laboratory) в 2003 году[4] и исследователями из университета Васэда в 2008 году[5]. Технически эффективны лишь в ситуациях, когда NAT использует известные детерминированные алгоритмы выбора порта. Такое предсказуемое (но не статичное) выделение портов встречается редко в крупных NAT-устройствах, например, в 4G LTE-сетях, поэтому техники предсказания порта не эффективны в мобильных широкополосных сетях.

IPsec

Для работы IPsec требуется разрешить несколько протоколов, чтобы обеспечить прохождение сквозь брандмауэры и NAT:

  • IKE — порт UDP 500
  • ESP — протокол IP номер 50
  • AH — протокол IP номер 51
  • Передача IPsec через NAT — порт UDP 4500, когда используется NAT traversal

Многие маршрутизаторы поддерживают функцию, часто называемую IPsec Passthrough.

В Windows XP NAT traversal включён по умолчанию, однако в Windows XP Service Pack 2 функция выключена по умолчанию, если VPN-сервер также находится за NAT, из-за редкой и спорной уязвимости[6]. Обновления IPsec NAT-T доступны для Windows 2000, Windows NT 4.0 и Windows 98.

Обход NAT для IPsec может быть использован для включения оппортунистического шифрования между системами. NAT traversal позволяет системам за NAT по требованию устанавливать и принимать защищённые соединения.

Hosted NAT traversal

Hosted NAT traversal (HNT) — набор механизмов, применяемых поставщиками услуг и включающих средства для ретрансляции и блокировки трафика. IETF не рекомендует использовать ретрансляцию через Интернет, предлагая из соображений безопасности ICE как альтернативу[7].

RFC-документы IETF

  • RFC 1579 — Использование FTP с брандмауэрами
  • RFC 2663 — Терминология и концепции транслятора сетевых адресов (NAT)
  • RFC 2709 — Модель безопасности с IPsec в тоннельном режиме для NAT-доменов
  • RFC 2993 — Архитектурные последствия NAT
  • RFC 3022 — Традиционный транслятор сетевых адресов (Traditional NAT)
  • RFC 3027 — Проблемы взаимодействия протоколов с NAT
  • RFC 3235 — Руководство по проектированию приложений, работающих с NAT
  • RFC 3715 — IPsec: взаимодействие с NAT
  • RFC 3947 — NAT traversal для IKE
  • RFC 5128 — Состояние коммуникаций peer-to-peer (P2P) через NAT
  • RFC 5245 — Interactive Connectivity Establishment (ICE): протокол NAT-Т для протоколов Offer/Answer

Примечания

Литература