BlockLink: виртуальные сети для приватного общения

BlockLink - виртуальные сети для каждого чата
Каждый чат в BlockChat получает свою изолированную виртуальную сеть

🚀 Анонс новой технологии

Мы представляем BlockLink — технологию, которая навсегда решает проблему NAT в P2P-мессенджерах. Просто, надежно и безопасно.

Проблема, о которой молчат

В предыдущей статье мы подробно разобрали, как разные P2P-мессенджеры пытаются обойти NAT. Кто-то использует UDP hole punching, кто-то полагается на сложные onion-сети, а кто-то предлагает пользователям вручную настраивать роутер. У каждого подхода есть недостатки:

  • UDP hole punching — не работает с симметричным NAT (а это 30-40% современных роутеров)
  • Tor/onion-маршрутизация — огромные задержки, сообщение может идти минутами
  • Ручной проброс портов — требует технических знаний, не все готовы лезть в настройки роутера
  • Центральные серверы — убивают суть P2P, создают единую точку отказа

Мы задались вопросом: а можно ли создать решение, которое работает всегда, не требует от пользователя никаких действий и при этом сохраняет все преимущества P2P? Ответ: BlockLink.

Что такое BlockLink?

BlockLink — это технология создания изолированных виртуальных сетей для каждого чата. Представьте, что для каждого разговора вы и ваш собеседник оказываетесь в одной локальной сети, со своими IP-адресами, маршрутизацией и возможностью прямого соединения. При этом:

  • Вам не нужно настраивать роутер
  • Не нужно разбираться в IP-адресах
  • Не нужно беспокоиться о NAT — он просто перестает существовать как проблема

Как это работает?

Шаг 1. Подключение к серверу BlockChat ID

При запуске BlockChat ваше приложение автоматически подключается к нашему сигнальному серверу через WebSocket. Сервер запоминает ваш публичный IP и держит соединение открытым. Это единственный централизованный элемент во всей системе.

Шаг 2. Создание виртуальной сети для чата

Когда вы создаете новый чат, сервер генерирует для него уникальную виртуальную сеть. Вам автоматически назначается виртуальный IP-адрес из диапазона 10.10.0.0/16. Например, вы становитесь 10.10.1.1.

Техническая деталь

Каждый чат получает свой собственный /24 подсеть (256 адресов). Даже если в чате всего два человека, у них есть своя изолированная сеть, не пересекающаяся с другими чатами. Это повышает безопасность и упрощает маршрутизацию.

Шаг 3. Присоединение к чату

Ваш друг вводит 6-значный код чата. Сервер добавляет его в ту же виртуальную сеть и назначает следующий свободный IP (например, 10.10.1.2). Теперь вы оба "видите" друг друга как устройства в одной локальной сети.

Шаг 4. Прямое P2P-соединение

Приложение автоматически устанавливает прямое TCP-соединение между виртуальными IP. Все сообщения идут напрямую от 10.10.1.1 к 10.10.1.2, минуя наши серверы. Скорость максимальная, задержки минимальные.

Шаг 5. Резервный канал (если P2P не работает)

В редких случаях (симметричный NAT, строгие корпоративные файрволы) прямое соединение может не установиться. Тогда сервер автоматически становится ретранслятором. Важно: сообщения по-прежнему зашифрованы E2E, сервер видит только зашифрованный трафик. Мы сообщим пользователю, если сообщения будут идти не через P2P

Почему это работает?

Секрет BlockLink в том, что мы не пытаемся пробить NAT. Мы просто создаем среду, в которой NAT не имеет значения. Виртуальные IP-адреса назначаются сервером, а реальная маршрутизация происходит через:

  • Прямое P2P — когда возможно установить соединение напрямую
  • Ретрансляцию — когда прямое соединение блокируется

При этом для приложения и для пользователя разница незаметна. Вы просто отправляете сообщение на виртуальный IP собеседника, а BlockLink сам решает, как его доставить.

Технические детали (для любопытных)

Виртуальные адаптеры

BlockLink использует TUN/TAP адаптеры для создания виртуальных сетевых интерфейсов. На Windows это делается через Wintun, на Linux — через tun-драйвер, на macOS — через utun. Пользователь даже не замечает, что у него появился новый сетевой адаптер.

Маршрутизация

Для каждого чата создается отдельная таблица маршрутизации. Все пакеты, идущие на IP этого чата, направляются в виртуальный адаптер. Оттуда они попадают в P2P-туннель к собеседнику.

Шифрование

Даже если трафик идет через ретранслятор, он зашифрован поверх P2P-туннеля. Сервер не может расшифровать сообщения, только переслать зашифрованные пакеты.

BlockLink vs другие решения

Характеристика BlockLink UDP hole punching Tor Ручной проброс
Работает с любым NAT ✅ Да (с ретрансляцией) ❌ Нет ✅ Да ✅ Да
Не требует настроек ✅ Да ✅ Да ✅ Да ❌ Нет
Высокая скорость ✅ Да (P2P) ✅ Да ❌ Нет ✅ Да
Приватность ✅ E2E шифрование ✅ E2E шифрование ✅ Высокая ✅ E2E шифрование
Простота для пользователя ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐

Что дальше?

BlockLink уже работает в тестовой версии BlockChat, и мы активно его развиваем. В ближайших планах:

1. Групповые чаты

Виртуальная сеть идеально подходит для группового общения. Представьте: вы создаете чат, и все участники получают виртуальные IP 10.10.1.1, 10.10.1.2, 10.10.1.3... Сообщения можно рассылать multicast'ом или строить mesh-сеть между всеми участниками.

2. Mesh-сети без интернета

BlockLink может работать не только через интернет, но и через Wi-Fi Direct или Bluetooth. Представьте: вы в походе, нет связи, но вы и ваш друг можете общаться через прямое соединение устройств, как в одной локальной сети.

3. Интеграция с Blockchain ID

Виртуальные IP можно привязать к Blockchain ID. Тогда адрес 10.10.1.1 будет навсегда закреплен за вашим ID в рамках этого чата, что упрощает организацию постоянных каналов связи.

Заключение

BlockLink — это не просто очередной способ обхода NAT. Это новый взгляд на организацию P2P-коммуникаций. Вместо того чтобы бороться с ограничениями сети, мы создаем свою виртуальную сеть, в которой этих ограничений просто нет. Просто, элегантно и эффективно.

Мы верим, что за такими технологиями будущее. Не нужно выбирать между простотой и приватностью — с BlockLink у вас есть и то, и другое.

К списку статей