Перейти к основному содержимому
Все термины

Обход NAT и hole punching

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

Почему мешает NAT

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

Насколько сложна задача, зависит от роутера. RFC 4787 описывает, как NAT сопоставляет и фильтрует UDP-трафик: если роутер использует один и тот же публичный порт для любого адресата, прямой путь обычно легко найти; если он выбирает новый порт для каждого адресата (такой NAT часто называют симметричным), это гораздо сложнее.

Как работает hole punching

Обход NAT объединяет приёмы, которые всё-таки находят прямой путь. Сначала каждая сторона узнаёт, как она выглядит снаружи, обычно спрашивая STUN-сервер. Затем стороны обмениваются этими адресами-кандидатами через координирующий сервер и одновременно отправляют пакеты друг другу. Каждый роутер сначала видит исходящий пакет и считает ответ частью этого потока, поэтому путь открывается в обе стороны. Эти приёмы разобраны в RFC 5128.

Роутер можно попросить и напрямую: UPnP IGD, NAT-PMP и его преемник, Port Control Protocol (RFC 6887), позволяют приложению запросить проброс порта. Некоторые корпоративные межсетевые экраны и операторский NAT (CGNAT) побеждают любые приёмы. Если не срабатывает ничего, сессия переходит на ретранслятор, который пересылает трафик между сторонами.

Как подключается Vexaro Desk

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

Установщик добавляет правило брандмауэра Windows, чтобы работали прямые подключения и подключения по локальной сети; портативная версия добавить его не может, поэтому её сессии чаще идут через ретранслятор. Прямые подключения можно отключить в настройках, а окно сессии показывает, идёт ли сессия напрямую или через ретранслятор. Прямые сессии защищены сквозным шифрованием. Если сеть вынуждает использовать ретранслируемое соединение, трафик остаётся зашифрованным при передаче через ретрансляторы, которыми управляет Vexaro.

Приёмы обхода NAT

Приёмы обхода NAT
ПриёмЧто делаетОграничения
Проброс портов (UPnP IGD, NAT-PMP, PCP)3Просит роутер перенаправить порт приложениюРаботает, только если роутер это поддерживает и сеть это разрешает
STUN4Сообщает устройству его публичный адрес и порт, как их видно снаружиНаходит адреса; трафик сессии не передаёт
Одновременный hole punching2Обе стороны отправляют первыми, и каждый роутер принимает пакеты другой стороны как ответыЧасто не срабатывает против симметричного NAT и строгих межсетевых экранов
Перебор множества портов1,2Повышает шанс совпадения через симметричный NATСовпадение всё равно не гарантировано
RelayПересылает трафик, когда прямого пути нетРаботает, когда обе стороны могут до него достучаться, но добавляет задержку и расходует трафик оператора

Как помочь прямым соединениям

  1. Устанавливайте клиент, а не запускайте портативную версию, чтобы правило брандмауэра Windows было на месте.
  2. Разрешите исходящий UDP: сессии Vexaro Desk работают поверх UDP, и прямые, и через ретранслятор.
  3. Используйте IPv6, если он есть в вашей сети: без трансляции адресов прямой путь найти проще.

Часто задаваемые вопросы

Что такое NAT и почему он мешает прямым соединениям?
NAT позволяет множеству частных устройств делить один публичный адрес, а роутер пропускает только пакеты, которые отвечают на соединение, начатое изнутри. Поэтому попытка подключиться снаружи отбрасывается, если путь заранее не открыт.
Что такое hole punching?
Оба компьютера узнают свои публичные адреса, обмениваются ими через координирующий сервер и одновременно отправляют друг другу пакеты. Каждый роутер принимает пакеты другой стороны как ответы на свои, и открывается прямой путь.
Всегда ли hole punching срабатывает?
Нет. Симметричный NAT, строгие межсетевые экраны и операторский NAT могут ему помешать. Поэтому инструменты удалённого доступа держат ретранслятор как запасной путь; Vexaro Desk подключается напрямую везде, где это позволяет сеть, а если не позволяет, то через собственный аутентифицированный ретранслятор.
Шифруются ли сессии Vexaro Desk через ретранслятор?
Да. Прямые сессии защищены сквозным шифрованием. Если сеть вынуждает использовать ретранслируемое соединение, трафик остаётся зашифрованным при передаче через ретрансляторы, которыми управляет Vexaro.

Посмотрите в Vexaro Desk

Vexaro Desk объединяет в одной консоли доступ с участием пользователя и без него, обход NAT, адаптивный движок кодеков и управление. Продукт на этапе раннего доступа, и вы можете создать бесплатный аккаунт, чтобы попробовать.