10 лет назад 10 ноября 2008 в 19:41 52

Работа с BitTorrent в Linux

Автор: Сергей “grinder” Яремчук

Для пользователя linux умение работать с bittorrent – больше необходимость, чем развлечение. и дело здесь даже не в поиске контента, который не достанешь в свободном доступе. все прозаичнее.

Первоначальная нацеленность этой сети на распространение больших файлов и неполная децентрализация пришлись по вкусу распространителям свободного ПО. Большая часть OpenSource-проектов вместо привычного HTTP/FTP выкладывает первоначально именно torrent-файлы. Это спасает серверы от перегрузок из-за наплыва пользователей, который не редок при анонсе продуктов. Чуть позже, когда интерес будет уже не так велик, файлы появляются и в “традиционном” виде. Да и кроме легальной передачи файлов использование своего BitTorrent-трекера позволяет вести статистику загрузок, что тоже немаловажно для софтовых проектов.

В LINUX БЕЗОПАСНЕЙ

Помимо явных плюсов, которые имеют распределенные системы, не стоит забывать и о минусах. Разветвленная P2P-сеть – это мечта любого хакера, тем более что защитить клиентские ресурсы, разбросанные по всему интернету, на порядок сложнее, чем отдельный сервер. Существует несколько вероятных атак в P2P-сетях, рассмотрим лишь самые простые.

В клиентских программах периодически находятся ошибки и уязвимости, в том числе и критические, то есть позволяющие при определенных условиях получить управление компьютером или выполнить зловредный код на удаленной системе. Большое количество объектов, работающих в P2P-сетях, делает очень затратным шифрование информации об участниках, а значит, данные можно перехватить. IP-адрес и объект для атаки узнать легко, достаточно открыть вкладку “Пиры” в своем клиенте и просмотреть список. Если версия клиента “подходит” для атаки, то почему бы ее не реализовать? Кроме того, используемый клиент часто дает понять, под какой операционной системой работает пользователь. Учитывая, что далеко не каждый юзер на домашнем компьютере устанавливает обновления безопасности, а также пользуется межсетевым экраном и антивирусом, объектом атаки может стать и ОС. Нужно ли говорить, что большинство атак ориентированы именно на Windows – наиболее популярную сегодня ОС. Обладая полной информацией, хакер может фальсифицировать серверы и узлы. Именно поэтому сетевые “черви” в P2P-сетях – постоянные гости. Еще один популярнейший вариант – распространение в сети зараженной вирусом программы.

ПРОБЛЕМЫ ВЫБОРА

Учитывая популярность протокола, в комплекте любого современного дистрибутива уже есть BitTorrent-клиент. Для дистрибутивов, в которых в качестве рабочего окружения выбран KDE, это, как правило, KTorrent, а в последних релизах со средой Gnome очень популярен Transmission. Если установленный клиент по каким-то причинам не подходит, достаточно просто поискать в репозитарии альтернативу. В дистрибутивах, использующих APT, вроде Ubuntu или Debian, команда такая:

$ sudo apt-cache search torrent

В ответ получаем увесистый список клиентов на все вкусы, начиная с консольных и заканчивая имеющими веб-интерфейс. Напомню, что закачку торрент-файлов поддерживает и веб-браузер Opera, правда, возможности по настройкам у него минимальные. В официальном репозитарии дистрибутивов Ubuntu и Debian его нет, но на странице deb.opera.com можно найти ссылки на репозитарии проекта.

Для установки Opera достаточно подключить нужный. Например, для (K)Ubuntu 8.04 и Debian “Lenny” записываем в etc/apt/source.list:

deb http://deb.opera.com/opera/ lenny non-free

Импортируем GPG ключи:

$ sudo gpg -keyserver subkeys.pgp.net -recv-key 6A423791

$ sudo gpg -fingerprint 6A423791

$ sudo gpg -armor -export 6A423791| sudo apt-key add –

Теперь достаточно открыть в Opera torrent-файл.

Популярный проект BitTorrent (www.bittorrent.com) предлагает неприхотливую в работе клиентскую программу и для Linux. Собственно, все ее функции заключаются в возможности соединения с трекером и загрузки файла. На сайте кроме исходных текстов доступны rpm– и deb-пакеты, что упрощает установку. Но, к сожалению, эта версия уже почти год не развивается. Последнее обновление клиента 5.2.0 зафиксировано сентябрем 2007, притом что вариант для Windows имеет номер 6.1.

Есть этот клиент в репозитариях Ubuntu и некоторых других дистрибутивов, но релиз там еще более старый.

$ sudo apt-cache show bittorrent | grep -i version

Version: 3.4.2-11ubuntu5

Поэтому использовать его, наверное, не стоит.

КЛИЕНТ KTORRENT

В дистрибутивах с KDE, как правило, после установки встречаем именно этот BitTorrent-клиент. На сайте проекта (ktorrent.org) и в репозитариях дистрибутивов предлагаются две его версии. Версия 2.2.6 предназначена для использования в KDE 3 (очевидно, это последний релиз второй ветки) и версия KTorrent 3.1, написанная уже на библиотеках Qt 4 для новой среды KDE 4. Для установки второй версии в Ubuntu следует ввести:

$ sudo apt-get install ktorrent-kde4

KTorrent имеет все востребованные функции для удобной работы в BitTorrent, тем более что его интерфейс полностью локализован. Есть, правда, огрехи в переводе вроде “Статистика сокрости” и “выделениt места”, но общее впечатление о программе они не портят.

По умолчанию окно содержит две вкладки: “Загрузки” и “Раздачи”, но при выполнении большинства действий вроде поиска файлов открываются и другие, в которых выводится результат работы. Кроме этого в панели задач появляется значок, из меню которого можно управлять основными настройками и вызывать окно программы. Кнопка “Группы” открывает дерево торрентов, разбитое по группам: “Активные”, “Загрузки”, “Передано” и так далее. Нажатие на кнопку “Статус” откроет окно со сведениями, в котором можно получить информацию о загруженных и доступных частях, средних скоростях загрузки и отдачи. Здесь же можно указать коэффициент ограничения отдачи и при необходимости время действия этого ограничения. Так что все достаточно понятно и удобно.

В KTorrent реализованы все возможности по управлению скоростью приема/передачи, чтобы даже во время закачки можно было комфортно бродить по веб-сайтам в браузере, а также чтобы не вступать в противоречия с правилами конкретного трекера. Глобально ограничение выставляется в окне “Параметры” во вкладке “Настройка” – “Настроить KTorrent” – “Загрузки”. По умолчанию большинство значений установлено в “0”, то есть ограничения отсутствуют. При необходимости здесь указываем максимальное число закачек, сидеров, максимум соединений на одну загрузку и в целом, скорости приема и передачи, коэффициент отдачи и другие параметры. Активный клиент по окончании закачки, как обычно, продолжает раздачу. Впрочем, для некоторых пользователей это накладно в плане трафика. Поэтому если необходимости в раздаче нет, снимаем флажок “Продолжать раздачу по завершению загрузки”. Но это не все. Перейдя в меню “Планировщик”, получаем возможность установки ограничений по скорости и количеству раздач в зависимости от времени.

Доступно пять вариантов, из них два предустановленные (“Норма” и “Выключить”) и в трех указываются пользовательские настройки. Кроме этого ограничения максимальной скорости приема и передачи, а также приоритет можно выставить в параметрах отдельного задания, вызвав контекстное меню.

Есть еще одна особенность, из-за которой стоит обратить внимание на KTorrent – он умеет докачивать файлы, закачка которых начата другой программой. Для этого нужно лишь открыть torrent-файл и указать на каталог, в котором сохранен недокачанный файл. Программа проанализирует то, что уже есть, и начнет докачку. Это очень удобно, когда приходится работать в двух системах: Linux и Windows.

В начале загрузки торрента проверяется наличие свободного места под закачиваемый файл. Если места нет, появляется запрос на продолжение загрузки. Это поведение можно отрегулировать в настройках при помощи команды “Начинать загрузку при нехватке места” в меню “Загрузки”. Другие настройки в меню “Дополнительно” позволяют сразу зарезервировать место под весь файл, чтобы потом не было сюрпризов и во избежание фрагментации на переполненном диске.

По умолчанию нешифрованные соединения разрешены, а шифрование не активно. Если трекер поддерживает шифрованные соединения, это поведение можно изменить в поле “Шифрование”, которое находится в меню “Общие”. Безопасности никогда много не бывает. Для активации шифрования достаточно установить флажок “Использовать шифрование протокола”, а если снять флажок “Разрешить нешифрованные соединения”, то работа будет производиться только по защищенным каналам.

Для поиска торрентов задействуется браузер Konqueror (через KParts) – в списке “Поисковик” уже находится шесть популярных сайтов BitTorrent. Результат выводится в главном окне KTorrent. Если это неудобно, в настройках программы можно указать любой внешний браузер, в котором будут выводиться данные поиска, и отредактировать список поисковых ресурсов.

Чтобы создать свой торрент-файл надо всего лишь открыть меню “Файл” – “Новый” и указать файл или каталог. В настройках можно указать вид DHT (Distributed Hash Table – распределенная хэш-таблица) – приватный торрент или децентрализованный.

Но это не все. После установки KTorrent обеспечивает все необходимые среднестатистическому пользователю функции, но большая часть его возможностей реализована за счет подключаемых модулей. Причем некоторые стандартные функции, вроде импорта торрент-файлов, UDP трекеров, UPnP и некоторые другие, почему-то также реализованы за счет модулей (они активированы по умолчанию). Для активации любого модуля достаточно нажать кнопку “Включить”, после чего появится еще одна вкладка для настроек параметров его работы. При помощи дополнительных модулей можно: находить пиры в локальной сети при помощи сервиса Zeroconf, включать автоматическое сканирование каталогов на предмет наличия новых торрентов, создавать черный список IP-адресов, обнаруживать и добавлять в список закачки торрент-ссылки в RSS-потоке, управлять KTorrent при помощи веб-браузера. Последнее позволяет, подключившись удаленно к компьютеру, управлять запущенными закачками, ограничивать скорость закачки/отдачи, добавлять новые торренты. По умолчанию используется порт 8084, для доступа к веб-интерфейсу необходимо ввести в настройках логин и пароль. Для работы нужен интерпретатор PHP, напротив поля “Путь к PHP” должен гореть зеленый значок.

СТРОИМ СВОЙ ТРЕКЕР

Одним из достоинств протокола BitTorrent является использование трекера – специального веб-сервера, осуществляющего координацию клиентов. Трекер сам не участвует в обмене данными, он только соединяет клиентов друг с другом. Для обмена используется протокол HTTP, информация в котором зашифрована. Но наличие трекера является и недостатком BitTorrent. Если он по какой-либо причине станет недоступным, клиенты не смогут найти друг друга. Трекеры могут быть открытыми и приватными. Последние имеют ограниченный доступ и часто используются организациями и частными лицами для раздачи “своих” файлов и подсчета статистики.

Трекеры могут быть реализованы в виде специального сервера, модуля для веб-сервера (например, mod_bt для Apache), плагина или движка сайта.

Самым простым приложением для организации своего трекера является кроcсплатформенный клиент Vuze (ранее Azureus, azureus.sourceforge.net, vuse.com). Помимо того что Vuze является очень удобным торрент-клиентом со всеми необходимыми функциями и возможностями, он имеет встроенный легко настраиваемый трекер.

В репозитариях дистрибутивов Vuze/Azureus обычно присутствует. Например, в Ubuntu он находится в репозитарии universe. Так как Vuze написан на Java, для работы требуется виртуальная Java-машина. При установке из репозитария будет добавлено все необходимое, нужные пакеты указаны в качестве зависимостей:

$ sudo apt-cache depends azureus

Depends: libcommons-cli-java, liblog4j1.2-java, libseda-java, libswt3.2-gtk-java, openjdk-6-jre | icedtea-java7-jre | sun-java6-jre | sun-java5-jre

Ставим:

$ sudo apt-get install azureus

Если в репозитарии дистрибутива пакета Vuze/Azureus нет или версия там давно не обновлялась, то качаем все нужное со страницы Download сайта проекта. Здесь есть ссылки как на файл с программой, так и на JRE. Установка тоже трудностей вызвать не должна:

$ tar xjvf Vuze_3.1.1.0_linux.tar.bz2

$ cd vuze

И запускаем:

$./vuze

Перевод интерфейса Vuze несколько неудачен, поэтому если возникли проблемы с его освоением, то можно рекомендовать альтернативный перевод, который находится на сайте on.freedom-vrn.ru. Там же есть инструкции по его установке. В Vuze реализовано три режима интерфейса, которые выбирает пользователь в зависимости от своей подготовки и задач. Поэтому некоторые элементы интерфейса могут быть скрыты. Так, в режиме “Новичок” вкладка “Настройки сервера” отсутствует. Если это вас не устраивает, перейдите в “Инструменты” – “Настройки” – “Режим” и установите “Средний” или “Дополнительный”. В последнем будут доступны некоторые сетевые настройки.

По умолчанию трекер не активирован. Чтобы его включить, переходим в меню “Настройки” во вкладку “Сервер”, устанавливаем флажок “Включить” в поле “Поддержка HTTP раздачи”. Далее указываем номер входящего порта (по умолчанию 8080), входящий TCP-порт (значение 49152 – 65535). В поле “Потребительские источники” указывается, откуда будут получаться файлы. Здесь можно выбрать пять вариантов, если планируется приватный трекер, то следует оставить только “От трекера”. Если активирован режим “Дополнительный”, будет доступно еще одно поле – “Сети”, в котором можно установить типы сетей, которые будут использованы для передачи. Кроме IP возможна работа в анонимных сетях I2P и Tor.

Если же доступ в интернет осуществляется через прокси-сервер, настройки последнего указываем в одноименном подменю. Для работы через анонимные сети понадобится SOCKS прокси, настройки которого задаются здесь же.

По умолчанию шифрование отключено. Если клиенты поддерживают шифрование, то активировать его поддержку можно в подменю “Шифрование траффика” (именно траффика). Устанавливаем флажок “Требовать шифрованного транспорта” и в списке “Минимальный уровень шифрации” устанавливаем минимальный поддерживаемый уровень (RC4 или plain). Три флажка внизу позволяют изменить поведение трекера при подключении клиентов, не поддерживающих шифрование. Используя их можно разрешить входящие и исходящие соединения по нешифрованному каналу или блокировать все входящие нешифрованные подключения. Для шифрованных соединений требуется сертификат. Самоподписанный сертификат можно создать, нажав кнопку “Создать” в меню “Безопасность”. После чего заполняем поля в появившемся окне.

В подменю “Сервер” – “Дополнительные сетевые настройки” обязательно указываем IP-адреса или интерфейсы, на которых будут приниматься подключения. Здесь же устанавливается максимальное число исходящих соединений (по умолчанию 24), поддержка Ipv6 и некоторые другие настройки. Практически аналогичные настройки находятся в “Трекеры” – “Сервер”. Здесь опять указываем при необходимости привязку к IP-адресу, выбираем HTTP– и HTTPS-порты (по умолчанию 6969 и 7000 соответственно, есть возможность указать резервные). Чтобы доступ к трекеру или торрентам был возможен только по паролю, устанавливаем флажки “Включить пароль в сети трекера” и “Включить пароль на торренты”. Логин и пароль для доступа в поле чуть ниже. Теперь переходим в меню “Общая раздача” и выбираем тип ресурса (приватный, децентрализованный и т. д.) и протокол (HTTP, HTTPS, UDP или DHT).

Создаем торрент: нажимаем “Файл” – “Создать торрент”, в появившемся окне выбираем “Использовать трекер программы Vuze”, режим – один файл или папка. Нажав “Далее”, переходим к следующему шагу, где указываем собственно на файл. На последнем шаге выбираем, что делать с созданным торрентом: открыть для раздачи, частный торрент или разрешена децентрализованная раздача. После нажатия на кнопку “Готово” торрент-файл будет создан, и информация о нем появится в главном окне программы. В поле “Статус” будет записано “Раздача”.

Все – сервер готов. Для проверки можно подключиться к нему, используя веб-браузер, в котором надо набрать http://IP-адрес:6969/. Если трекер частный, то вводим пароль для доступа. Выбираем торрент и приступаем к закачке.

Клиент Transmission

Очень простой и легкий клиент, имеющий GTK+ интерфейс, часто встречающийся в дистрибутивах с рабочим столом GNOME. Пользователю предоставляется только панель управления со списком торрентов и значок в панели задач. Но первые впечатления обманчивы. Как и в KTorrent, поддерживается установка скорости закачки/отдачи глобально и каждому торренту, установка приоритетов. Доступна полная статистика по отдельному торренту, глобальная статистика за текущую сессию и в целом. Проверка целостности файла или отдельных частей. Возможен поиск среди торрентов. Поддерживается шифрование соединений между пирами, кэширование пиров. Создать свой torrent-файл очень просто. Совместим со многими клиентами. Установив отдельный пакет (в Ubuntu transmission-cli), получаем еще ряд удобных консольных утилит для работы с сетью BitTorrent.