Синхронизация буфера обмена между разными сетями
Почти ни один инструмент для буфера обмена или обмена файлами так не умеет, и причина в том, что устройства находят друг друга криком по локальной сети. Широковещание не выходит за пределы подсети, поэтому телефон на мобильном интернете невидим для ноутбука в домашней сети Wi-Fi, что бы вы ни меняли. Чтобы синхронизировать между сетями, нужен инструмент, который вместо этого встречается посередине, по известному адресу — так и работает буфер обмена в браузере.
Откуда взялось ограничение «одна и та же Wi-Fi»
AirDrop, LocalSend, KDE Connect и первый Snapdrop внутри устроены одинаково. Когда вы их открываете, каждое устройство рассылает сообщение об обнаружении на все адреса своего сегмента сети — mDNS, широковещание UDP или Bluetooth, смотря какой инструмент, — и слушает ответы. Кто откликнулся, тот и появляется в списке.
Именно этот подход избавляет их от учётных записей и настройки: никому не нужно объяснять, где кто находится. И ровно он же останавливает их на границе сети. Маршрутизаторы не пропускают широковещательный трафик между подсетями, поэтому два устройства в разных сетях друг друга просто не слышат. Чинить нечего, порт открывать не нужно, никакой настройки вы не пропустили — механизм работает ровно так, как задуман.
На это натыкаются три обычные ситуации, и ни одна из них не поломка:
- Телефон на мобильном интернете, ноутбук в Wi-Fi. Разные сети, даже когда устройства лежат вплотную.
- Офисная или университетская сеть Wi-Fi с изоляцией клиентов. Устройства в одной сети, но намеренно отгорожены друг от друга, и в гостевых и корпоративных сетях это мера безопасности.
- Действительно далеко — дом и работа или два разных города.
Что работает вместо этого
Другой путь — оба устройства соединяются наружу с одним и тем же известным адресом, и там их знакомят. Ни одному не нужно искать другое, поэтому нет никакой разницы, стоят они в одной комнате или на противоположных концах света. Плата за это в том, что теперь посередине есть нечто, знающее, что эти двое разговаривают, — и главным становится вопрос, что это нечто видит.
| Инструмент | Между сетями | Как устройства находят друг друга | Системный буфер обмена |
|---|---|---|---|
| RealtimeClipboard | Да | Короткий ключ, введённый на обоих | Да |
| PairDrop | Да | Код связывания из 6 цифр | Текст приходит сообщением |
| Синхронизация Windows | Да | Учётная запись Microsoft | Да, только между Windows |
| Универсальный буфер обмена Apple | Нет | Bluetooth + Handoff, в радиусе действия | Да, только устройства Apple |
| KDE Connect | Нет | Локальное обнаружение | Да |
| LocalSend / Snapdrop | Нет | Локальное обнаружение | Нет |
| AirDrop | Нет | Bluetooth + прямое соединение по Wi-Fi | Нет |
Все три, что работают между сетями, просят что-то взамен. Синхронизация Windows требует учётной записи Microsoft на обеих машинах и говорит только с другими компьютерами на Windows. PairDrop обходится без учётной записи и работает на любой платформе, но присылает текст сообщением, а не кладёт его в ваш буфер обмена. Третий путь — буфер обмена в браузере, и о нём вся остальная часть этой страницы.
Синхронизация без учётной записи, между любыми двумя сетями
- Откройте буфер обмена на первом устройстве. Он выдаст короткий ключ.
- Введите этот ключ на втором устройстве или отсканируйте QR-код.
- Скопируйте что-нибудь на любом из двух.
- Перейдите на другое и вставьте. Оно уже в системном буфере обмена.
Обнаружение заменяет именно ключ. Оба устройства соединяются наружу с одним и тем же ретранслятором и просят комнату, которой принадлежит этот ключ, — и находят друг друга, при этом ни одному не нужно знать, где другое. Домашняя сеть Wi-Fi и мобильный интернет, ноутбук и телефон, работа и дом — всё это один и тот же случай.
Что видит сервер посередине
Об этом стоит сказать конкретно, потому что «это идёт через сервер» и есть настоящая цена работы между сетями, а её обычно оставляют в тумане.
Текст шифруется в вашем браузере алгоритмом AES-GCM до
отправки. Ретранслятор адресуется по SHA-256(ключ), а не по
самому ключу, поэтому он может доставить ваши сообщения в нужную
комнату, ни разу не получив ключа, которым их читают. На диске он не
хранит ничего: сообщения живут ровно столько, сколько нужно, чтобы их
переслать. Файлы обходят его целиком и идут напрямую между двумя
браузерами по WebRTC.
Видит он вот что: какая-то комната была активна в какой-то момент, и IP-адреса двух соединений. Ему никогда не достаются ни ваш ключ, ни ваш текст, ни имена ваших файлов, ни то, кто вы такой. Идентификатор комнаты растягивается теми же 250 000 итерациями, что и ключ шифрования, так что дёшево вывести из него ваш ключ не выйдет — цифры показывает модель угроз. Код под лицензией MIT, а ретранслятор — небольшой сервис на Python, который читается за один присест; и если верить кому-то на слово не хочется, можно поднять свой и направить приложение на него.
Что стоит знать, прежде чем на это полагаться
- Ключ и есть пароль
- Кто его узнал, тот прочитает эту сессию, пока она открыта. Относитесь к нему как к паролю.
- Автоматический захват требует Chromium
- Firefox и Safari умеют отправлять и принимать вставленный текст, но сами буфер обмена не читают.
- Чтение в фоне невозможно
- Ни один браузер не читает буфер обмена, пока его вкладка в фоне. Вы переключаетесь на вкладку, и она забирает то, что вы скопировали.
- Файлы ограничены 5 МБ
- Для чего-то большего правильный выбор — отдельный инструмент для передачи файлов.
Частые вопросы
Можно ли синхронизировать буфер обмена между устройствами в разных сетях Wi-Fi?
Да, но не инструментами, которые полагаются на локальное обнаружение. AirDrop, LocalSend, KDE Connect и Snapdrop находят устройства широковещанием по локальной сети, а оно не проходит через маршрутизатор. Буфер обмена в браузере работает иначе: оба устройства соединяются наружу с одним и тем же ретранслятором по общему ключу, и то, в каких они сетях, перестаёт иметь значение.
Почему телефон не видит ноутбук на мобильном интернете?
Потому что они в двух разных сетях. Локальное обнаружение достаёт только до устройств того же сегмента сети, а телефон на сотовой связи находится в совершенно отдельном от ноутбука в Wi-Fi, даже если они лежат рядом. Включить на телефоне Wi-Fi и подключиться к той же сети — для тех инструментов это и есть решение; во всех остальных случаях нужен инструмент, который на обнаружение не полагается вовсе.
Работает ли это в гостевой или офисной сети Wi-Fi?
Инструменты с локальным обнаружением обычно нет. В гостевых и корпоративных сетях часто включена изоляция клиентов: она не даёт устройствам одной сети общаться напрямую — намеренно, как мера безопасности. Буферу обмена в браузере это не мешает, потому что каждое устройство лишь открывает обычное исходящее соединение по HTTPS, а не пытается дотянуться до другого устройства.
Видит ли сервер то, что я копирую?
Нет. Текст шифруется в браузере до отправки, а ретранслятор адресуется хешем вашего ключа, а не самим ключом, поэтому он может переслать сообщение, но не может его расшифровать. На диск он ничего не пишет. Файлы через него вообще не проходят — они идут напрямую между двумя браузерами по WebRTC.
Поможет ли VPN заставить локальные инструменты работать между сетями?
Иногда, и возни с этим больше, чем кажется. Ячеистая VPN вроде Tailscale или ZeroTier помещает оба устройства в одну виртуальную сеть, и локальное обнаружение может ожить — но некоторые инструменты рассчитывают на широковещательный трафик, который такие VPN по умолчанию не пересылают, так что всё зависит от инструмента. К тому же придётся ставить и настраивать программу на обоих устройствах, а именно этого большинство и хотело избежать.