Opentracker

Для организации трекера в сети Yggdrasil, подойдет любой сервер, с поддержкой IPv6, одним из таких является Opentracker - сервер с открытым исходным кодом, написанный на языке C.

Opentracker не требует базы данных, так как вся информация о пирах хранится в оперативной памяти.

Установка

Выполняем официальную инструкцию, предварительно раскомментировав строку -DWANT_V6 в файле Makefile, таким образом сервер будет оперировать исключительно IPv6

cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat  
cd libowfat  
make
cd ..
# LEGACY: cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker
git clone git://erdgeist.org/opentracker
cd opentracker
make

Настройки доступа

Opentracker работает на порту 6969, поэтому для входящих подключений добавим правило в iptables с помощью утилиты ufw

ufw allow 6969

В случае, если хотим обслуживать соединения исключительно в сети yggdrasil

ufw allow from 0200::/7 to any port 6969

Автозапуск

crontab

@reboot /path/opentracker -p 6969 -P 6969
  • -p 6969 - TCP/HTTP
  • -P 6969 - UDP
  • интерфейс для бинда указывается аргументом -i 200:xxxx:xxxx

systemd

/etc/systemd/system/opentracker.service
[Unit]
After=network.target
Wants=network.target

[Service]
Type=simple

# useradd -s /usr/sbin/nologin -Mr opentracker
User=opentracker
Group=opentracker

ExecStart=/usr/local/bin/opentracker -p 6969 -P 6969

# mkdir /var/log/opentracker && chown opentracker:opentracker /var/log/opentracker
StandardOutput=file:///var/log/opentracker/debug.log
StandardError=file:///var/log/opentracker/error.log

[Install]
WantedBy=multi-user.target
  • systemctl restart opentracker - запуск
  • systemctl enable opentracker - автозапуск при старте системы
  • systemctl status opentracker - текущий статус сервиса

Проксирование

Чтобы трекер отдавал хост_пира:порт_пира вместо хост_сервера:порт_пира, OpenTracker должен быть скомпилирован с флагом:

-DWANT_IP_FROM_PROXY
  • или раскоментировать строку FEATURES+=-DWANT_IP_FROM_PROXY в Makefile

По-умолчанию, OpenTracker отклоняет заголовок X-Forwarded-For с неизвестных хостов. Для добавления IP прокси-сервера в «белый список», необходимо создать файл конфигурации со следующим содержимым:

/path/to/opentracker.conf
# II
#      If opentracker lives behind one or multiple reverse proxies,
#      every http connection appears to come from these proxies. In order to
#      take the X-Forwarded-For address instead, compile opentracker with the
#      WANT_IP_FROM_PROXY option and set your proxy addresses or networkss here.
#
# access.proxy 10.0.1.23
# access.proxy 192.0.0.0/8
#

access.proxy 202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148
  • где 202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148 - адрес прокси
  • полная версия файла конфигурации доступна в opentracker.conf.sample

Файл конфигурации указывается аргументом -f:

/usr/local/bin/opentracker -i 202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148 -P 6969 -p 3001 \
                           -f /path/to/opentracker.conf
  • -P 6969 - UDP, не проксируется
  • -p 3001 - TCP, ожидает HTTP от прокси на соответствующем 6969

Проверить адреса пиров можно с помощью CLI утилиты btpeer.

Подключение

Для тестирования раздачи, а также приёма подключений в сети Yggdrasil, торрент-клиент необходимо настроить для прослушивания локального интерфейса или адреса, иначе пир будет идентифицирован по IP сети по-умолчанию (Интернет) и передавать этот адрес трекеру.

На примере qBittorrent, сделать это можно в Preferences - Advanced - Network interface или Optional IP address to bind to

При наличии фаервол, условием для проверки сидирования данных в сети Yggdrasil является открытие порта, определенного случайно или заданного явно в настройках BitTorrent клиента.

Также, при смене параметров интернет-подключения (VPN или proxy), важно перезапустить BitTorrent клиент.

Ссылки

Обсуждение

d4708, 2023/09/04 19:47
Как происходит раздача файлов без открытых портов на обычных треккерах? И почему нужно открывать клиентский порт в сети yggdrasil - иначе сидирование не работает

newbie, 2023/09/04 19:56
UPnP. Вероятно, не все приложения поддерживают этот протокол с IPv6.
d4708, 2023/09/04 20:23
Для удобства использую Transmission для интернет раздач и qBittorrent для Yggdrasil - так удобно балансировать ограничения трафика для разных сетей/интерфейсов.

Transmission раздает на закрытом порту, но qBittorrent отказывается, пока порт не открыть, UPnP/NAT-PMP включен..

newbie, 2023/09/04 20:30
Может, с этим связано: https://github.com/qbittorrent/qBittorrent/issues/11501
d4708, 2023/09/04 20:44, 2023/09/04 20:47
Возможно действительно проблема в клиенте, нужно еще проверить на Deluge (т.к. Transmission UI из коробки нет опции выбора интерфейса)

Спасибо!

d4708, 2023/09/05 17:46, 2023/09/05 17:49
Могу ошибаться, но опция UPnP в контексте сети Yggdrasil не имеет смысла, так как данные поступают на локальный интерфейс туннелированием и уже локально этот порт адресуется сервису (что собственно и есть способом обхода ограничений NAT и shared-IP). Единственным препятствием для пакета является локальный фаервол, если он работает в режиме запретить все что не разрешено явно.

Поэтому, включен UPnP или нет, условием является открытие порта локально. Все что между локальным пиром А и Б не имеет значения кроме прямого соединения или моста public peer.

d4708, 2023/09/04 19:54, 2023/09/04 20:45
Кто то может проверить настройки подключения клиента к opentracker через HTTP прокси посредством yggdrasil:

Вероятно проблема libtorrent или opentracker, так как оба сервера возвращают ошибку 'Address family not supported'

http://[200:1e2f:e608:eb3a:2bf:1e62:87ba:e2f7]/announce
http://[201:23b4:991a:634d:8359:4521:5576:15b7]:2023/announce

Только авторизованные участники могут оставлять комментарии.
yggdrasil/bittorrent/opentracker.txt · Последнее изменение: 2026/06/04 03:21 — p.s.
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki