Представьте: вы и ваш друг хотите пообщаться в P2P-мессенджере. Вы запускаете приложение, создаете чат, даете другу код... Но соединение не устанавливается. Почему? Потому что за каждым из вас стоит роутер с NAT (Network Address Translation), который скрывает ваши реальные IP-адреса и блокирует входящие подключения. Эта проблема существует столько же, сколько сам интернет, и у каждого P2P-мессенджера есть свой способ её решения.
Суть проблемы NAT
Ваш компьютер в локальной сети имеет IP вида 192.168.1.10. Для внешнего мира ваш роутер показывает публичный IP 93.184.216.34. Когда друг пытается подключиться к вам по этому публичному IP, его пакет упирается в роутер, который не знает, какому устройству внутри сети его передать. И просто блокирует соединение.
Как разные P2P-мессенджеры решают проблему NAT
1. Tox — UDP hole punching
Tox — один из пионеров децентрализованных мессенджеров. Он использует технику UDP hole punching:
- Оба клиента подключаются к DHT-сети (распределенная хеш-таблица)
- Отправляют UDP-пакеты на публичные адреса друг друга
- Роутер, видя исходящий пакет, создает временное правило для входящих
- Соединение устанавливается через эту "дырку"
Плюсы: Не требует настроек, полностью децентрализовано.
Минусы: Не работает с симметричным NAT, требует UDP (не везде поддерживается).
2. Briar — Tor onion-маршрутизация
Briar использует сеть Tor для обхода NAT:
- Все соединения идут через скрытые сервисы Tor
- NAT не проблема, так как соединение инициируется изнутри
- Дополнительно: Bluetooth и Wi-Fi Direct для локального общения
Плюсы: Полная анонимность, NAT не проблема.
Минусы: Медленно (задержки Tor), сложная архитектура.
3. Session — onion-роутинг на LokiNet
Session построен на собственной сети LokiNet:
- Использует 5 нод для маршрутизации каждого сообщения
- Ноды выступают ретрансляторами, обходя NAT
- Никто не знает полный путь сообщения
Плюсы: Анонимность, нет единой точки отказа.
Минусы: Задержки, сложность сети.
4. RetroShare — проброс портов
RetroShare предлагает самый надежный, но сложный способ:
- Пользователь вручную настраивает проброс портов на роутере
- UPnP для автоматической настройки (если поддерживается)
- Прямые TCP-соединения
Плюсы: 100% надежность, максимальная скорость.
Минусы: Требует технических знаний, не у всех работает.
5. Radmin VPN — виртуальные локальные сети
Radmin VPN использует другой подход:
- Создает виртуальный сетевой адаптер на компьютере
- Все участники одной сети получают виртуальные IP
- Трафик идет напрямую P2P (по возможности) или через ретрансляторы
- Для пользователя это выглядит как локальная сеть
Плюсы: Просто для пользователя, работает автоматически.
Минусы: Требует центрального сервера для координации.
Как эту проблему решает BlockChat?
Проанализировав все существующие подходы, мы пришли к выводу: идеальное решение должно сочетать простоту Radmin VPN и децентрализацию P2P. И мы создали BlockLink.
Знакомьтесь: BlockLink
BlockLink — это наша технология создания виртуальных сетей для каждого чата. Она работает незаметно для пользователя, но при этом обеспечивает прямое P2P-соединение в 95% случаев.
Как работает BlockLink
Шаг 1. Знакомство на сервере BlockChat ID
Как и в других P2P-мессенджерах, у нас есть сигнальный сервер. При запуске приложение автоматически подключается к нему. Сервер запоминает ваш публичный IP и держит соединение открытым.
Шаг 2. Создание виртуальной сети для чата
Когда кто-то создает новый чат, сервер создает изолированную виртуальную сеть. Первому участнику назначается виртуальный IP (например, 10.10.1.1). Когда присоединяется второй — получает 10.10.1.2. И так далее.
Шаг 3. Прямое P2P через виртуальную сеть
Теперь оба участника "видят" друг друга в одной локальной сети. Приложение устанавливает прямое TCP-соединение между виртуальными IP. Сообщения идут напрямую, без участия сервера.
Шаг 4. Резервный канал (если P2P не работает)
Если прямое соединение невозможно (симметричный NAT, корпоративный файрвол), сервер автоматически становится ретранслятором. Сообщения идут через него, но остаются зашифрованными E2E.
Почему BlockLink лучше?
| Технология | Простота | Надежность | Скорость | Приватность |
|---|---|---|---|---|
| BlockLink | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| UDP hole punching | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Tor-маршрутизация | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Ручной проброс | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
Сравнение с другими решениями
Против Tox: Мы не полагаемся на UDP hole punching, который часто не работает в современных сетях. BlockLink использует TCP, который гарантированно доставит сообщение.
Против Briar/Session: Нам не нужны сложные onion-сети с огромными задержками. Мы используем прямое P2P, когда это возможно, и только в крайнем случае — ретрансляцию.
Против RetroShare: Пользователю не нужно лезть в настройки роутера. Все работает автоматически, как в Radmin VPN, но с фокусом на приватность.
Против Radmin VPN: Мы не создаем одну большую сеть для всех, а изолируем каждый чат в отдельную виртуальную сеть. Это повышает безопасность и упрощает маршрутизацию.
Хотите узнать подробности?
Мы написали отдельную статью, посвященную технологии BlockLink: как она работает изнутри, какие протоколы использует и что планируем добавить в будущем.
Заключение
Проблема NAT существует столько же, сколько сам интернет. За годы было придумано множество решений — от простого проброса портов до сложных распределенных сетей. BlockChat выбирает свой путь: мы создаем для каждого чата изолированную виртуальную сеть, в которой участники видят друг друга как в одной локальной сети. Это просто для пользователя, надежно технически и безопасно для переписки.
BlockLink уже работает в тестовой версии BlockChat, и мы активно дорабатываем его на основе тестов.