LINUX.ORG.RU

Как натянуть торрент между двумя машинами в VPN?

 


0

2

Есть VPN, состоящий из ноута с малюсеньким SSD в злой тоталитарной стране, в которой за торренты приходят письма счастья от провайдера, и сидбокса с HDD на несколько терабайт в святой Россиюшке, в которой до такого ещё не догадались. На обоих узлах в качестве клиента юзается Transmission. Чтобы скачать торрент, я качаю его на сидбокс и оттуда тащу через VPN с помощью scp.

Проблема в том, что с таким подходом задержка между началом загрузки на сидбокс и окончанием загрузки на ноут удваивается, и это не считая того, что я не сразу реагирую на окончание загрузки на сидбоксе и могу добавить ещё пару часов человеческого фактора.

Собсна, хочу сделать так, чтобы можно было сразу после добавления раздачи на сидбокс добавить такую же раздачу на ноут, причём единственным доступным пиром должен быть сидбокс в VPN. Как это сделать с минимальным объёмом лишних телодвижений? Трансмиссия так умеет? Что-то типа подъёма трекера для VPN на сидбоксе?


Это в целом несложно сделать, если умеешь программировать, а есть ли готовые инструменты - не знаю.

На сервере поднимаешь трекер (на его впн-адресе). В скачиваемые на сервер торрент-файлы (для качалки) добавляешь этот трекер для анонсов. На ноуте из торрент-файла удаляешь все трекеры, которые там были, оставляешь только свой собственный. На клиенте отключаешь DHT и что там ещё может помочь ему найти пиры в обход трекера.

Надо только убедиться (либо можно пропатчить трекер), что туда анонсится именно впн-адрес сервера, а не публичный. На всякий случай можно на ноуте зафайрволить публичный адрес сервера.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

Если тебе нужно, чтобы сидбокс хранил все торренты, а на ноуте были только избирательно, то проще просто rsync по таймеру запускать на заданную директорию. Например, у тебя есть директория, в которой лежат все скачанные и скачиваемые торренты. Берешь список поддиректорий первого уровня, добавляешь в исключения rsync на ноуте и запускаешь rsynс по таймеру. Получается, что у тебя синхронизироваться будет только вновь появившаяся директория с новым торрентом, которая еще не попала в исключения rsync. И так дальше. При необходимости просто обновляешь блеклист rsync на ноуте.

Yorween
()
Ответ на: комментарий от Yorween

А rsync точно решает проблему с двойной задержкой? Я же хочу, чтобы торрентовые куски файлов могли качаться с сидбокса на ноут сразу же после того, как попадают на сидбокс. А rsync как будто помрёт, когда увидит, что файлы меняются.

tsmx
() автор топика
Ответ на: комментарий от tsmx

«Проблема» не исчезает ни с помощью твоего решения, ни моего. Время получения на ноуте торрента сокращается. ЕЯПП, transmission файлы, которые еще в процессе скачивавания (не целые), именует с постфиксом .part. Их тоже исключи в rsync, тогда он будет пофайлово синхронизировать уже готовое к употреблению.

Это, конечно, не поможет в случае торрентов, которые состоят из одного большого файла. По этому поводу можно покопаться в этих решениях https://stackoverflow.com/questions/43966336/force-rsync-to-compare-local-files-byte-by-byte-instead-of-checksum/43967482

Yorween
()
Последнее исправление: Yorween (всего исправлений: 1)
Ответ на: комментарий от Yorween

Почитал, звучит слишком костыльно. Ну не вставляется сюда rsync, как ни крути. Опять же как будто имеем кучу оверхеда на передачу блоков, которых на самом деле нет.

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

tsmx
() автор топика

Торрент-клиенты поддерживают листы блокировки ip-адресов. Сделайте такой лист, в котором все диапазоны, кроме адреса вашего сервера, будут заблокированы.

ValdikSS ★★★★★
()

Просто подключи диски сидбокса к ноуту, через nfs, samba, или sshfs. Зачем торент клиент на обоих компах?

theurs ★★
()
Ответ на: комментарий от theurs

Может он качает видео с битрейтом под 40-50Мбит. Такое видео просто так по сети не воспроизведешь без постоянного кеширования. Проще скачать. Плюс автономность.

anonymous
()

коробки такой нету - я бы копал в сторону LDP и блокировки всех других адресов.

vtVitus ★★★★★
()

Я бы в данных условиях сделал так:

  1. на сидбоксе оставил бы торрент суто для раздач популярного и поднятие рейтинга
  2. на сидбоксе поднял бы сервер Wireguard
  3. на клиенте поднял бы в docker стек с двумя контейнерами - wireguard и transmission
  4. контейнер wireguard настроил бы на авто коннект к сидбоксу
  5. контейнер transmission настроил бы на использование сети контейнера wireguard (network_mode: "service:wireguard")
  6. контейнер transmission настроил бы на использование volume для торрентов любой удобной локальной директории на клиенте (в том числе, watch-dir)

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

ololoid ★★★★
()

вариант А: syncthing/resiliosync между дирами с торрент-барахлом у тебя и на сид-бюоксе. можно снаружи, они оба сильно шыфрованы и слегка защищены от дпи. можно и внутре впн-канала. это сколь помню один из стандартных вариантов на коммерческих сидбоксах.

вариант Б: засунуть всё общение торрента с миром внутрь твоего впн, сиречъ впн будет выступать прокси-каналом (сейчас это кстати очень модно использовать впн или тор для прокси). делается средствами фаервола системы или встроенным в трансмиссию прокси-килентом.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)

Сделай шару на ноуте, в сидбоксе её примонтируй, и качай торренты сразу в эту шару. Можно временный каталог торрента сделать локальным, пока файл качается то пишется локально, а в качестве каталога с завершёнными торрентами указать шару. Когда торрент скачается - перенесётся в неё. Можно ещё настроить, чтобы законченные торренты останавливались, чтобы не нагружать ВПН раздачей. Ещё многие торрент клиенты могут после завершения скачивания запускать скрипт, например тот же rsynс можно так запускать.

BityjPixel
()

А что если rsync’ом синхронизировать целевые файлы? Только нужно пропускать нулевые блоки внутри файлов, если торрент-клиент их создает, возможно для этого придется включить компрессию

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.