Почему мешает 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.