Итак, на роутер 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, что нужно раздавать переименованный файл — не знаю.
В целом, на мой взгляд, подобные действия довольно бессмысленны.