Итак, на роутер D-Link DIR-620 была установлена прошивка dd-wrt (с поддержкой swap, это важно), подключены флешка для хранения настроек и установленных программ и внешний жесткий диск в качестве NAS и хранилища закачек для torrent-клиента. Дело за малым – установить и настроить сам клиент. Я выбирал между консольными клиентами rtorrent и transmission, в результате остановился на последнем. Популярные Deluge отпал сразу – тратить скромные ресурсы роутера на обслуживание еще и интерпретатора питона нет смысла. Про rtorrent попались сообщения о наличии в нем утечек памяти, что не есть хорошо. Кроме того, его нужно запускать при помощи screen или dtach, т.к. режима демона он не имеет. А это опять трата лишних ресурсов. Сам-собой остался transmission, умеющий работать в виде демона и достаточно стабильный. Кроме того, помимо нескольких GUI-фронтэндов у него есть встроенный веб-интерфейс – бери и пользуйся, без лишних телодвижений.
Установка transmission на dd-wrt
Установка торрент-клиента transmission (daemon) на роутер под управление dd-wrt проста до неприличия – достаточно, подключившись например по ssh к роутеру, выполнить следующие команды:
ipkg-opt update
– обновит список пакетов, доступных для установки;ipkg-opt list | grep transmission
– выбираем, какую версию клиента ставить (есть сборка клиент + утилиты для создания и редактирования торрентов + демон, есть отдельно демон);ipk-opt install transmission
– я установил пакет, включающий, помимо демона, утилиты для работы с торрент-файлами.
Всё предельно просто, теперь нужно немного настроить transmission-daemon, дописать его в автозагрузку – и можно начинать пользоваться. О настройке дальше и идет речь.
Итак, первым шагом, который необходимо предпринять, будет создание рабочей директории для демона, в ней же будет храниться и файл настроек. Умолчальная рабочая директория находится в памяти роутера и при перезагрузке будет уничтожена. Я создал директорию на подключенной к роутеру флешке: mkdir /opt/etc/transmission
.
Теперь можно запустить transmission-daemon с ключем, указывающим на новую рабочую директорию (а также прописать его в автозагрузку через веб-интерфейс dd-wrt: Administration -> Commands -> Startup). Запускаем следующим образом: /opt/bin/transmission-daemon -g /opt/etc/transmission
. Демон создаст файл настроек settings.json, который и нужно будет отредактировать (об этом ниже).
Включение retracker.local в dd-wrt
Полезным шагом для ускорения загрузки торрент-раздач станет включение retracker.local – торрент-трекера, находящегося внутри локальной сети провайдера (если конечно провайдер предоставляет подобный функционал). После его включения торрент-клиент сможет получать от локального трекера списки внутрилокальных пиров и при их наличии скачивать файлы на скоростях локальной сети.
Чтобы включить retracker.local и вообще все локальные ресурсы в dd-wrt (или openwrt) в случае некоторых провайдеров (например – InterZet) – нужно отключить опцию rebind_protection в настройках роутера (Services -> Services -> No DNS Rebind переключить в Disable). После этого DNSMasq перестанет блокировать DNS-имена в локальной сети.
Еще один вариант – можно в окно ввода Additional DNSMasq Options добавить адреса нужных локальных ресурсов при помощи опции rebind_domain.
Настройки transmission-daemon – settings.json
Некторые настройки можно сделать через веб-интефейс, заодно убедившись в работоспособности демона. В него можно попасть, введя ip_роутера:порт/transmission в браузере. В дальнейшем адрес веб-интерфейса можно поменять в том же /opt/etc/transmission/settings.json. Он доступен только для чтения, так что проще всего снять копию, изменить к ней права доступа на нужные, а затем, остановив демон (killall transmission-daemon
), переписать изменнённый файл поверх оригинального. Мой файл настроек для transmission выглядит так:
JSON-парсер transmission не поддерживает разбор комментариев (или я не нашел, как их обозначить в понятном ему виде), так что я прокомментирую некоторые строки своего settings.json ниже.
- “ratio-limit”: 2.5000 – прекращать раздачу при достижении указанного рейтинга;
- “cache-size-mb”: 4 – объем памяти (Мб), выделяемый демону под кэшировние данных о торрентах (на роутере лучше много не давать – просто не из чего);
- “lpd-enabled”: true – включает локальный поиск пиров;
- “umask”: 0 – выставляет для загружаемых папок и файлов права на чтение и запись для всех (права выставляются в десятеричной системе, так что нужно восьмеричное представление перевести в десятеричное);
- “peer-congestion-algorithm”: “lp”, включает использование специальной версии протокола TCP, предназанченной для обмена пирами, в этом случает трафик обмена пирами будет иметь пониженный приоритет по отношению к обычному трафику – обмен пирами не будет замедлять загрузку страниц и т.п.;
- “pex-enabled”: true включает обмен пирами с уже подключенными пирами, т.е. обмен списками пиров происходит между самими пирами, без участия трекера;
- “watch-dir” и “watch-dir-enabled”: true – позволяют указать директорию слежения, найденные в ней torrent-файлы будут автоматически довалены в очередь загрузки;
- “script-torrent-done-enabled”: false и “script-torrent-done-filename” – позволяют задать выполнение произвольного скрипта после завершения загрузки, например таким образом можно переименовывать или перемещать загруженные файлы;
- “rpc-enabled”: true – включает/выключает интерфейс удаленного управления демоном (в том числе и встроенный веб-интерфейс!);
- “rpc-authentication-required”: false и “rpc-password” + “rpc-username” – нужна ли авторизация для использования удаленного управления и логин-пароль если нужна;
- “rpc-port”: 9071 – порт, на котором доступен интерфейс удаленного управления;
- “rpc-url”: “/transmission/” – путь к интерфейсу (тогда веб-интерфейс будет расположен по адресу ip_роутера:9071/transmission/)
- “rpc-whitelist-enabled”: true – включение доступа к удаленному управлению только для ip из указанного ниже списка;
- “rpc-whitelist”: “192.168.0.1*” – список ip-адресов, с которых будет возможен доступ к удаленному управлению демоном, можно указать маску;
- “blocklist-enabled”: true – использовать ли черные списки “плохих” пиров (например различные копираст-конторы и т.п.);
- “blocklist-url”: “http://update.transmissionbt.com/level1” – адрес для загрузки черных списков.
Ограничения скоростей раздачи-загрузки, планировщик ограничений и условия для прекращения сидирования проще настраивать через веб-интерфейс. В общем-то и в файле настроек назначения почти всех опций понятны из их названий, а если что-то осталось неясным – можно уточнить в веб-документации к transmission.
Судя из параметра script-torrent-done-filename и его описания, как я понимаю, можно каким то образом на автомате делать переименование закачаных файлов из Ya_tut_idu_i_kury_v286.avi в Я тут иду и курю.avi ?
Можно. Достаточно сделать скрипт/программу, которые будут этим заниматься, а путь к ним указать как раз в опции script-torrent-done-filename.
А вы мы могли бы это как то обсудить? Вы могли бы записать такой скрипт ?
Обсудить могу, а делать нет желания. Можно сделать шелл-скрипт с использованием awk/tr и mv (скорее всего будет достаточно awk), можно то же самое реализовать на perl (если есть желание его на роутер ставить).
Общая идея мне видится такой: получить часть имени файла до расширения, затем преобразовать её согласно указанных правил, дальше склеить с расширением и переименовать файл. Как потом указать transmission, что нужно раздавать переименованный файл – не знаю.
В целом, на мой взгляд, подобные действия довольно бессмысленны.