| « Как компьютер я собирал, или почему крашатся программы... | Не бландинки на дороге или как мужики дорогу барышне уступали.. » |
Ставим консольный bittorrent клиент(rTorrent) на Linux.
Дошли руки до перепечатки небольшой инструкции, которую написал давным давно(05-Май-2006 22:34). Здесь, инструкция перепечатана в первозданном виде, с небольшим удалением неактуальных коментариев. Все это, еще тогда, было адаптировано под ISP Volia(к стати интересное совпадение - сегодня есть большая вероятность, что я отключусь от ISP Volia), для обмена трафиком внутри районного сегмента, в последствии все это было прикрыто, а очень жаль. Но инструкция всеже может быть в некотором роде полезной, поскольку данный клиент я использую и по сей день, но уже в пределах “ОГО!".
Инструкция объясняет, как можно поставить торент клиент, в домашний каталог пользователя, не проставляя при этом пакетов в системе. Мне лично это удобно, остальное мне не важно. Версии софта на данный момент далеко улетели вперед, но схема сборки осталась той же.
Итак, инструкция:
===========================================================================================
Сидел я как-то на работе, размышлял о смысле жизни…, случилось так, что, параллельно, просматривал форум одного трекера UA-IX. Решил попробовать подключиться к файлообменной жизни украинского сегмента сети Internet. Все бы хорошо, да работа обязывает к тому, что, на рабочей станции, одну часть дня работает WIN XP, другую часть работает Linux. Да и у нас не принято оставлять не выключенным писюк, в конце рабочего дня.
Посему решено! Клиента ставим на сервер. Да и серверу пофиг, что там у него запущено и клиент работать может круглосуточно используя unlimited канал ночью, а днем, спокойно пусть работают юзеры и смотрят свои любимые порносайты =).
Решено - сделано. После некоторых поисков по сети было найдено несколько клиентов. Часть из них не захотела собираться, требуя какие-то модули языка Python, на сервере была ОС старенькая, модулей не хватало, доставлять самому было лень. Еще часть клиентов требовала X Window System, такой подход отпадал сразу, потому что на сервер иксы ставят только идиоты, ну или в очень редких случаях по жестокой необходимости. Клиенты на разных языках типа perl, php, python – отпали сразу тоже, потому что языки программирования, по моему мнению, использованы не по назначению. Я сторонник бинарных файлов сделанных командами make, под моим чутким руководством. =)
Выбрал клиент rTorrent. Поскольку на сервере не было установлении ни одной лишней программы, поэтому пришлось потрудиться немного больше.
Вся эта схема чуть позже была перенесена домой, для раздач на волевском трекере.
Итак, для начала нужно скачать нужные программы.
Идем на сайт http://libtorrent.rakshasa.no/ и качаем libtorrent-0.8.5.tar.gz и rtorrent-0.4.5.tar.gz. Скажу сразу, качать желательно стабильные релизы данных программ, я поначалу было собрал libtorrent-0.9.0.tar.gz и rtorrent-0.5.0.tar.gz, эта «сладкая парочка» почему-то не хотела подключать пира на входящее соединение, поэтому пришлось все переделать.
Для нормальной работы и компиляции вышеприведенных программ необходимо наличие пакетов libsigc++ и curl. Идем на http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.0/ и забираем там последнюю версию libsigc++. На http://curl.haxx.se/download.html нужно забрать последнюю версию curl. Curl собирается в том случае если его нету у вас в ОС, хотя почему бы и не собрать новую версию персонально для клиента.
Теперь, когда все готово, в системе нужно создать юзера у меня это был юзер torrent - который принадлежит группе torrent:
groupadd torrent –g 5555
|
Ставим пароль для юзера. Отмечу, что, GID может у вас быть каким угодно, главное чтобы он не пересекался с другими юзерами в системе.
Логинимся на нашу машинку юзером вновь созданным и развиваем бурную деятельность.
Версии всех программ, которых я использовал, приведены на момент сборки, не факт что они сейчас не стали новее.
Вышли новые версии libtorrent и rTorrent, 0.9.3 и 0.5.3 соответственно, пока не пробовал, но версия 0.5.1 клиента работает нормально - проверено. Новые версии должны собираться без ошибок. С 0.5.1 именно так и было. В новых версиях добавилось немного приятного функционала - рекомендую.
Для начала нужно собрать curl:
tar -xjf curl-7.15.3.tar.bz2
|
В домашнем каталоге нашего юзера создается подкаталог usr, в который мы и производим установку всех нужных программ.
Если curl и его библиотеки не установлены в системе, то имеет смысл сделать следующее:
mkdir ~/bin
|
Таким образом мы линкуем файлы из $HOME/usr/bin в стандартный путь для исполняемых файлов. Также следует проверить переменную PATH на наличие пути $HOME/bin, если он отсутствует, делаем:
echo -ne "\nPATH=$PATH:$HOME/bin\nexport PATH\n" >> ~/.bash_profile
|
или
echo -ne "\nPATH=$PATH:$HOME/bin\nexport PATH\n" >> ~/.bashrc
|
В зависимости от того, какой файл является профилем.
Далее собираем библиотеки libsigc++:
tar -xjf libsigc++-2.0.17.tar.bz2
|
Собираем libtorrent:
tar -xzf libtorrent-0.8.5.tar.gz
|
Кофигурим библиотеки, указывая пути к curl и libsigc++, перенос строки в виде ‘\’ можно убрать и все сделать одной большой строчкой.
PKG_CONFIG_PATH="$HOME/usr/lib/pkgconfig/" \
|
Не используем -openssl – потому что шифровать трафик нам не нужно.
При сборке libtorrent-0.8.5 у меня возникла ошибка следующего характера:
-L/home/torrent/usr/lib -lsigc-2.0
|
Сие безобразие появляется скорее всего потому, что, конфигуратор, где-то, не может подцепить библиотеки GNU линковщика, не смотря на то что указываем его использование.
Дабы не лопатить все Makefile файлы руками, во всех подкаталогах, сделал такой тривиальный скриптик:
for i in `grep -r -e "no\/lib" * | sed -e '/config\./d; s|:.*||'`; do
|
Он исправляет все ошибки в файлах. Далее:
make
|
Ну и собственно собираем сам клиент:
tar -xzf rtorrent-0.4.5.tar.gz
|
Еще раз делаем линки на исполняемые файлы в стандартный каталог:
cd ~/bin/
|
Клиент готов, почти, теперь приступим к его конфигурированию.
Отредактируем файл ~/.rtorrent.rc, который мы скопировали шагом выше.
Не буду приводить полный файл, приведу лишь те опции, что нас интересуют.
Файл конфигурации клиента читается только при старте, по сути, это конфигурация клиента по умолчанию, потом ее можно изменять как угодно, но только лишь на время запуска клиента.
Итак, опции:
|
Пожалуй все, теперь нужно сделать скриптик, для того чтобы торент клиент стартовал при загрузке системы под скринами(screen), потом можно логиниться на машинку, аттачить скрины и смотреть состояние клиента. Доку по скринам читать как обычно man screen =).
Собственно скриптик (torrentd - ИСПРАВЛЕНЫЙ):
Самая первая версия скрипта не корректно завершала работу клиента, он не сообщал трекеру состояние трафика.
|
Данный скрипт адаптирован под систему инициализации Red Hat подобных систем.
Далее, не забываем сделать:
chkconfig --add torrentd
|
Далее, во избежание, потери трафика, нужно настроить подобающим образом файрволл.
У меня конфигурация файрволла довольно сложная, поэтому обращу внимание на доку по iptables: http://www.opennet.ru/docs/RUS/iptables/
Конфиг файрволла, у меня построен на переменных, поэтому приведу все как есть в текущих настройках.
Все политики в дефолтном состоянии сброшены в состояние DROP.
Ниже приведенный конфиг пакетного фильтра приведен исключительно для работы конкретного юзера, и не может быть использован для работы системы в целом, для этого нужно почитать доку и добавить несколько десятков правил (в моем случае).
|
Если кому лень разбираться в цепочках и правилах, может быть нет времени, или лень читать доку, то можно использовать следующий вариант конфигурирования пакетного фильтра:
|
В обеих случаях конфигурации пакетного фильтра, для юзера torrent, открыты протоколы UDP и ICMP, это сделано прежде всего для того, чтобы можно было проверить работу правил, во первых. Во вторых от имени данного юзера можно было запустить либо traceoroute или ping.
Вот собственно и все описание.
Если кто найдет ошибки, или неточности – больно не бейте, отмыльте в ПМ, постараюсь все исправить.
За неправильное конфигурирование пакетного фильтра iptables, да и других фильтров, ответственности не несу – внимательно читайте доку.
Дурацкие вопросы, принимаются с удовольствием и тут же отправляются по назначению в /dev/null
Данная дока ни на что не претендует и не дает точных указаний для конфигурирования чего-либо, а направляет лишь на путь истинный, указывая направление для деятельности.
Спасибо всем кто дочитал до конца, верю – это было не так легко сделать.
–
WBR
inittab VY15-UANIC
PS: За второй вариант конфигурации пакетного фильтра, на 100% не могу быть уверенным на счет правильности, так как не проверял на приктике. Первый же у меня прекрасно работает.
===========================================================================================
Минимум правил можно конечно оставить, в контексте более глобального обмена трафиком, чтобы видеть статистику сколько трафика было отдано/принятно по портам, но если задаться целью статистики, то данные правила лучше убрать и в цепочке mangle сделать новые и полноценные правила для статистики клиента.