Ресид I2P

Ресид - служебный сервер в сети I2P, предоставляющий актуальную базу пиров при первом запуске роутера i2pd, посредством API.

Подобно BitCoin DNS, инициализация осуществляется путём запроса пиров с «официальных» серверов, указанных в коде роутера или опциональных:

i2pd.conf
[reseed]
# urls = https://reseed.i2p-projekt.de/,https://i2p.mooo.com/netDb/,https://netdb.i2p2.no/
# yggurls = http://[324:71e:281a:9ed3::ace]:7070/,http://[301:65b9:c7cd:9a36::1]:18801/,http://[320:8936:ec1a:31f1::216]/,http://[316:f9e0:f22e:a74f::216]/
  • в текущей версии i2pd, наличие слэша в конце строки URL - обязательно

либо указывается путь к локальному файлу:

i2pd.conf
[reseed]
file = /path/to/i2pseeds.su3

Pyseeder

pyseeder - утилита, позволяющая генерировать API дамп i2pseeds.su3, используя собранную в процессе работы роутера i2pd базу netDb (обычно расположена в /var/lib/i2pd/netDb)

Поскольку в сети I2P ограниченное количество ресидов Yggdrasil, при наличии такой возможности, будет полезно организовать дополнительный сервер.
Для этого, достаточно сгенерировать сетевой дамп в директорию Веб-сервера, например Nginx:

$ YOUR_PASSWORD="Pa55w0rd"
$ echo $YOUR_PASSWORD | pyseeder reseed --netdb /path/to/netDb --private-key data/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id user@mail.i2p
  • где output/i2pseeds.su3 - условно может быть /var/www/myhost/i2pseeds.su3

База netDb содержит пиры всех адресных типов, перед выполнением команды pyseeder reseed для ресида Yggdrasil полезно отфильтровать (в приоритете) только локальные узлы.
Делается это скриптом y2r.sh , предварительно указав актуальные пути:

  • netdb
  • outdb
  • temp
  • success
  • padding
  • sed -i "s/>[0-9]\{1,1000\}</>$yggaddr</" /srv/pyseeder/output/seed.html

Также, перед публикацией сервера, потребуется скопировать лэндинг-файл seed.html в /var/www/myhost/seed.html (или /var/www/myhost/index.html) - в котором скрипт y2r.sh будет обновлять счётчик пиров.

Команду pyseeder reseed и файл y2r.sh удобно последовательно собрать в один общий скрипт и выполнять его по расписанию crontab:

cron.sh
#!/bin/bash
cd /path/to/pyseeder
# фильтруем NetDb
yggdrasil/y2r.sh
# генерируем i2pseeds.su3
. venv/bin/activate
#YOUR_PASSWORD="Pa55w0rd"
#echo $YOUR_PASSWORD | pyseeder reseed --netdb /path/to/netDb --private-key /path/to/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id noreply@localhost
pyseeder reseed --no-encryption --netdb /path/to/netDb --private-key /path/to/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id noreply@localhost
deactivate
  • в примере, пароль сертификата не используется, вместо этого используется аргумент --no-encryption

Пример конфигурации файла Nginx есть в репозитории и может иметь следующий вид:

/etc/nginx/sites-available/default
limit_req_zone $binary_remote_addr zone=reseed:512k rate=10r/m;
server {
	root /var/www/myhost;
	listen [302:68d0:f0d5:b88d::9216]:80;
	index seed.html;
        location /i2pseeds.su3 {
		limit_req zone=reseed burst=5;
		if ($http_user_agent !~* "Wget/1.11.4" ) { return 403; }		
        }
	location /user_at_mail.i2p.crt {
                limit_req zone=reseed;
        }
}

Проверить работоспособность API можно командой:

pyseeder transport.pull --urls http://[302:68d0:f0d5:b88d::9216]/ --outfile /path/to/i2pseeds.su3
Только авторизованные участники могут оставлять комментарии.
i2p/reseed.txt · Последнее изменение: 2025/10/05 23:00 — p.s.
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki