Как передать файлы напрямую через интернет — P2P без облака на DashBeam

без облака: P2P-передача на DashBeam


Быстрый ответ
Передать файлы напрямую через интернет без облака можно через P2P-клиент DashBeam: он соединяет два устройства напрямую по протоколу QUIC, шифрует трафик TLS 1.3 и не грузит файл на промежуточный сервер. Установи приложение на оба устройства, отправитель получает «тикет», получатель вставляет его — передача стартует без аккаунтов и лимитов на размер. Если прямое соединение не пробилось через NAT, DashBeam на пару секунд подключит зашифрованный релей — но сами данные релей прочитать не может.

1. Диагноз

Знакомая ситуация. Нужно скинуть коллеге дамп базы на 40 гигабайт. WeTransfer орёт про лимит. Google Drive синхронизируется час, потом падает по квоте. Email режет вложение на середине. А файл лежит на соседнем столе — в буквальном смысле, коллега сидит в трёх метрах.

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

Дальше разберём это на DashBeam — open-source клиенте (бывший AltSendme), который построен поверх P2P-стека Iroh. Разберём почему облачные сервисы упираются в потолок, как поднять P2P-передачу за пять минут, что делать если соединение не пробивается через NAT, и чем этот подход отличается от croc, Magic Wormhole и LocalSend.

Уйдёт минут десять на первую отправку. Дальше — секунды. Нужен только сам DashBeam на обоих устройствах и файл, который надоело ждать.

Компонент Актуальная версия / требование
DashBeam 0.6.0 (релиз «Paired Devices»)
Windows x64, портативная версия или установщик MSI/EXE
macOS Universal (Intel + Apple Silicon), от 10.15
Linux deb / rpm / AppImage, amd64
Android arm64 / armv7 / universal APK
Web-клиент app.dashbeam.net, без установки, throughput ниже нативного
Транспорт QUIC + TLS 1.3 (через Iroh)

На момент публикации актуальна версия 0.6.0. Перед установкой проверь свежие релизы на GitHub — проект развивается быстро, релизы выходят почти каждый месяц.

2. Причины

Почему вообще облако не решает задачу «просто передать файл»? Смотри по пунктам.

  • Лимиты размера. Бесплатный WeTransfer режет на 2-5 ГБ, почта — на 25 МБ вложения. Дамп базы, архив с логами или видео с камер туда просто не влезают.
  • Двойное время передачи. Файл сначала грузится на сервер, потом скачивается получателем. Это два прохода по сети вместо одного — а если у тебя асимметричный канал, аплоад всегда медленнее даунлоада.
  • Данные проходят через чужой сервер. Даже с шифрованием «в облаке» файл физически лежит на диске третьей стороны, пусть и временно. Для внутренних логов, конфигов с секретами или клиентских данных это лишний риск.
  • Нужен аккаунт. Регистрация, подтверждение почты, ограничение на количество отправок в день — лишние шаги там, где нужно было просто скинуть файл.
  • Нет возобновления при обрыве. Оборвался аплоад на 90% — начинай сначала. При передаче больших архивов через нестабильный канал это выматывает.
  • Файлообменники живут недолго. Ссылка сгорает через сутки-неделю, сервис закрывается, домен продают. P2P-передача такой проблемы не знает в принципе — потому что она не оставляет файл на сервере вообще.

Ну и запросы у вас — сказал бы облачный сервис, если бы умел говорить, и повис на middleware балансировщика.

3. Рецепт

Подготовка

Зависимости минимальные — собственно, это одна из причин почему DashBeam выбран для примера, а не что-то с сервером и Docker-Compose на пять контейнеров.

  • Два устройства с доступом в интернет (или в одну локальную сеть — тогда ещё быстрее)
  • Права на установку приложения (админ на Windows/Linux, обычные права на macOS/Android)
  • Открытый исходящий трафик — входящие порты пробрасывать не нужно, ниже объясню почему

Шаг 1. Установи DashBeam на отправляющее устройство

Зайди на GitHub-релизы проекта, скачай сборку под свою ОС. Для Windows — MSI или портативный ZIP, для macOS — Universal DMG, для Linux — deb/rpm/AppImage под твой дистрибутив.


# Linux (Debian/Ubuntu) - пример установки .deb пакета
sudo dpkg -i AltSendme_0.6.0_amd64.deb
sudo apt-get install -f

Результат: в списке приложений появляется DashBeam, при первом запуске генерируется криптографический ключ устройства (Ed25519) — он и определяет «личность» твоего эндпоинта в сети Iroh.

Шаг 2. Установи DashBeam на принимающее устройство

Та же процедура на втором устройстве — неважно, macOS это, Android или Linux. DashBeam кросс-платформенный, отправить можно с телефона на сервер и наоборот.


# macOS - установка через смонтированный DMG
hdiutil attach DashBeam_universal.dmg
cp -R "/Volumes/DashBeam/DashBeam.app" /Applications/
hdiutil detach "/Volumes/DashBeam"

Результат: приложение доступно на обоих концах передачи. Аккаунт не нужен — ты уже готов слать файлы.

Шаг 3. Отправь файл

В интерфейсе DashBeam перетащи файл или папку в окно отправки. Приложение считает хэш содержимого по BLAKE3 и сгенерирует «тикет» — строку, в которой зашит endpoint id отправителя, адреса для подключения и хэш блоба.

Тикет можно передать любым способом: скопировать текстом, показать QR-код для сканирования камерой, отправить через системное меню «Поделиться». Дальше выбираешь один из трёх маршрутов:

  • Разослать тикет вручную (чат, почта, любой мессенджер)
  • Отправить на устройство, которое уже в паре (без копирования тикета вообще)
  • Отправить на устройство, найденное рядом через Nearby (mDNS в локальной сети)

Шаг 4. Прими файл на втором устройстве

Вставь полученный тикет в поле приёма (или прими всплывающий инвайт, если устройства уже в паре). DashBeam покажет предпросмотр — что именно летит и сколько весит — и только после подтверждения начнёт качать.


# Пример структуры тикета (сокращённо, реальный длиннее)
blobtxxxxxxxxx-nodeid-relayurl-hash

Результат: файл или папка появляются в системной папке загрузок DashBeam, целостность подтверждена сверкой BLAKE3-хэша.

Шаг 5. Настрой постоянную пару устройств (опционально, но экономит время)

Если гоняешь файлы между одним и тем же ноутбуком и телефоном регулярно — зайди в Settings → Devices на обоих устройствах и введи код пары один раз. Дальше отправка — это просто «Send» рядом с именем устройства, без копирования тикетов вообще.

Из жизни
Спаренное устройство держит связь даже после смены сети — телефон ушёл из офисного Wi-Fi в мобильный интернет, а десктоп его всё равно видит. Работает через тот же контрольный канал, что и обычная передача, просто с сохранением состояния.

Как это устроено внутри

Iroh, на котором построен DashBeam, старается соединить устройства напрямую — и только если это невозможно, подключает релей как временный мост. Схема ниже — без деталей протокола, просто путь пакета.

Отправитель создаёт тикет

Публикация blob по хэшу BLAKE3

Получатель вставляет тикет

Попытка QUIC hole punching

Прямое соединение доступно

NAT блокирует напрямую

Подключение через relay сервер

Передача данных peer-to-peer

Ключевой момент: даже когда релей в пути, он видит только зашифрованный QUIC-трафик. Ключи шифрования выводятся из тикета, известного только отправителю и получателю — релей их не получает и расшифровать содержимое не может.

Порты и сетевые требования

Направление Протокол Назначение Нужен проброс?
Исходящий UDP (динамический) QUIC-соединение между устройствами Нет
Исходящий TCP/443 Подключение к relay-серверу для сигналинга Нет
Входящий UDP (эфемерный, при hole punching) Приём прямого соединения от пира Обычно нет — пробивается автоматически

Вот тут важно: DashBeam не требует настраивать проброс портов на роутере в подавляющем большинстве случаев. Hole punching делает свою работу автоматически — примерно так же, как это устроено в WireGuard или Tailscale. Если ты в корпоративной сети с жёстким firewall, который режет весь UDP — тогда остаётся только relay-фолбэк, и скорость упадёт до пропускной способности релея.

Безопасность

  • Шифрование по умолчанию. Каждая передача идёт через QUIC поверх TLS 1.3 — ключи привязаны к конкретному тикету, переиспользовать их нельзя.
  • Криптографическая аутентификация. Тикет содержит endpoint id отправителя — получатель физически не может подключиться не к тому устройству.
  • Один тикет — одна передача. Тикеты для парных инвайтов не переиспользуются между отправками, каждая генерирует новый.
  • Ключи в системном хранилище. Секретный ключ устройства лежит в Keychain на macOS, Credential Manager на Windows, Secret Service на Linux — не в текстовом файле рядом с приложением.
  • Никакой телеметрии. Разработчики прямо заявляют — статистика передач не собирается.
Предупреждение
Тикет — это фактически ключ доступа к конкретной передаче. Не публикуй его в открытых каналах вроде публичных Telegram-чатов или форумов — кто угодно с этим тикетом сможет скачать тот же файл, пока сессия отправки активна.

4. Проверка

После передачи убедись, что всё дошло целым, а не «вроде похоже на оригинал».


# Проверка контрольной суммы полученного файла (Linux/macOS)
b3sum received_file.tar.gz
# Сравни с хэшем, который показывал DashBeam при отправке

# Windows PowerShell - проверка через встроенный certutil (SHA256, если BLAKE3 недоступен локально)
certutil -hashfile received_file.tar.gz SHA256

Дополнительно в самом приложении: открой историю передач (появилась в 0.6.0) и проверь статус — «completed» означает что хэш совпал автоматически, приложение не покажет файл как принятый, если целостность не подтвердилась.

5. Осложнения

Ошибка / симптом Причина Решение
Список Nearby-устройств пустой mDNS заблокирован гостевым Wi-Fi или VPN Отключи VPN на время передачи или используй ручной тикет вместо автообнаружения
Скорость передачи низкая, не насыщает канал Соединение упало на relay-фолбэк, hole punching не прошёл Проверь что UDP не режется firewall’ом провайдера или корпоративной сетью
Получатель не видит инвайт от парного устройства Приложение на принимающей стороне закрыто, а не свёрнуто в трей Оставь DashBeam запущенным в фоне (Settings → General → Startup & background)
Тикет не принимается, ошибка подключения Тикет скопирован не полностью или сессия отправителя уже завершена Запроси свежий тикет у отправителя, скопируй строку целиком
Передача обрывается на середине большого файла Нестабильное соединение, устройство ушло в сон Отключи режим сна на время передачи, DashBeam возобновит с места обрыва при переподключении

Всё не так плохо как кажется. Всё намного проще — в девяти случаях из десяти проблема лечится либо свежим тикетом, либо выключенным на минуту VPN.

6. Альтернативы

Инструмент Платформы Особенность Когда выбрать вместо DashBeam
croc CLI (Windows/macOS/Linux) Простая передача по кодовому слову, только терминал Нужен только CLI, GUI не важен, привычнее к консольным утилитам
Magic Wormhole CLI, Python Классика P2P-передачи по короткому коду Уже есть Python-окружение, нужна максимально простая утилита без GUI
LocalSend Desktop + mobile Работает только в локальной сети Передача строго внутри одной Wi-Fi сети, интернет не нужен
PairDrop Web/PWA + Android + CLI WebRTC в браузере, ничего не устанавливать Нужно передать файл человеку, который не хочет ставить приложение

DashBeam выбран как основной вариант в этой статье по трём причинам: единственный из перечисленных умеет и десктоп, и мобильные, и веб, и CLI одновременно; передачи возобновляются после обрыва (у Magic Wormhole и LocalSend — нет); и нет искусственного потолка по размеру файла, в отличие от PairDrop, который упирается в память браузера.

7. Профилактика

  • Обновляй клиент регулярно. Проект активный, релизы выходят почти ежемесячно — патчи безопасности приходят с обновлениями, а не отдельными хотфиксами.
  • Не держи Nearby-обнаружение включённым по умолчанию везде. В Settings → Network переключи видимость на «Paired only», если работаешь в публичных сетях — это не даёт случайным устройствам рядом видеть тебя в списке.
  • Сверяй хэш для критичных файлов. Для дампов баз, бэкапов конфигов и всего что пойдёт в продакшн — не полагайся только на «зелёную галочку» в интерфейсе, прогоняй b3sum вручную.
  • Держи фоновый режим включённым только на доверенных устройствах. Постоянно активный трей-процесс на общем компьютере — лишняя точка входа, если к машине есть физический доступ у посторонних.

8. FAQ

Почему передача файлов не работает после настройки DashBeam?

Чаще всего дело в UDP, который режет firewall — без него не проходит ни hole punching, ни фолбэк на relay. Проверь настройки сети и попробуй передачу через мобильный интернет для диагностики: если там работает, а на основной сети нет — проблема в корпоративном или роутерном firewall.

Как проверить что P2P-передача работает правильно?

Сверь BLAKE3-хэш полученного файла с тем, что показывало приложение при отправке. В истории передач статус «completed» означает автоматическую проверку целостности — если хэш не совпал, файл помечается как повреждённый, а не как принятый.

Что делать если тикет не принимается на другом устройстве?

Скопируй строку тикета целиком — оборванный тикет не парсится. Если тикет верный, но сессия отправителя уже закрыта (приложение закрыли до завершения передачи), запроси у него новый тикет — старый уже нерабочий.

Чем DashBeam отличается от WeTransfer?

WeTransfer грузит файл на сервер сервиса, а потом получатель качает его оттуда — с лимитом размера и сроком жизни ссылки. DashBeam соединяет устройства напрямую, без промежуточного хранения файла на чужом сервере, без лимитов и без регистрации.

9. Прогноз

Ты поставил DashBeam на оба устройства, прогнал первую передачу, свёл пару и убедился что hole punching пробивает твою сеть без плясок с портами. Дальше отправка большого файла — это тридцать секунд вместо получаса ожидания аплоада в облако.

Дамп базы, архив логов, видео с камер — всё летит напрямую, шифруется по дороге и не оседает на чужом диске. Если после всех шагов передача всё ещё упирается в relay и не разгоняется — пиши в комментарии, разберёмся с конкретным случаем.


Ссылки по теме:
DashBeam на GitHub
Iroh — P2P-стек, на котором построен DashBeam
croc — CLI-альтернатива
Magic Wormhole
LocalSend
PairDrop

Андрей А.
Author: Андрей А.

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх