diff --git a/public/uk/i2p-domain-registration.gmi b/public/uk/i2p-domain-registration.gmi new file mode 100644 index 0000000..eeff3dc --- /dev/null +++ b/public/uk/i2p-domain-registration.gmi @@ -0,0 +1,101 @@ +# Реєстрація домену в мережі I2P + +Останнім часом, захопився дослідженням мережі I2P, зокрема: + +=> setup-i2pd-with-i2p-network-connection-over-yggdrasil.gmi встановлення роутера i2pd з підключенням до мережі I2P через Yggdrasil +=> anonymous-torrents-with-i2psnark-over-i2pd.gmi обміном файлами через технологію BitTorrent +=> http://hc3fycfadz7fkapp62fqi6llioe46fvis6wuswfobl5ghc2u7snq.b32.i2p опублікував в ній сайт спільноти +=> m3u8-stream-proxy-with-ffmpeg-in-icecast.gmi налаштував ретрансляцію радіо eQtv +=> i2p-capsule-in-gemini-space-with-agate.gmi а також успішно інтегрував свій блог, що реалізує протокол Gemini + +На цьому, думав завершити свій експеримент з налаштуванням інфраструктури, але довгий час залишалось питання стосовно доменів: усі відомі мені ресурси мали короткі адреси, які я знайшов у списку notbob.i2p, але цей сайт не відображає перманентні B32. Від того, про мої сервіси ніхто окрім мене не знає, від того крутити їх онлайн - сенсу мало. Трохи полиставши документацію, віднайшов деяку інформацію і організував перший домен для одного зі своїх проєктів у списку, що виявилось тривіально просто. Нижче опишу свій скромний досвід, можливо, він стане в нагоді початківцям. + +## Набір утиліт i2pd-tools + +Для адміністрування доменів I2P, нам знадобиться утиліта i2pd-tools: +=> https://github.com/PurpleI2P/i2pd-tools + +В її репозиторії є детальна інструкція: +=> https://github.com/PurpleI2P/i2pd-tools?tab=readme-ov-file#i2pd-tools README.md#i2pd-tools + +Збірка з початкового коду, на момент написання матеріалу, виглядає наступним чином: + +``` bash +git clone https://github.com/PurpleI2P/i2pd-tools.git && cd i2pd-tools +git submodule init && git submodule update +git submodule update --init +git pull --recurse-submodules +make +``` + +Розглянемо декілька варіантів реєстрації доменів та відповідні утиліти з набору i2pd-tools. + +## Майнинг семантичного префіксу для домена B32 + +Однією з опцій створення домену - може бути майнинг семантичного префіксу для хешу B32 (актуально для EDDSA-SHA512-ED25519). Цей спосіб вартий уваги до розгляду наступних опцій реєстрації, адже згенерувавши візуально зрозумілий префікс, такий сервіс буде простіше знайти в історії браузеру. До того ж це буде канонічний, перманентний ідентифікатор I2P, що згідно оригінальної парадигми, належатиме тільки вам. + +Для цієї мети, в i2pd-tools, використовується утиліта vain: + +``` bash +./vain domain -o mydomain.dat +``` +* domain - бажаний префікс для адреси типу domain1ad...2u7adq.b32.i2p: чим більша його довжина - тим складнішою буде процедура видобутку +=> https://github.com/PurpleI2P/i2pd-tools?tab=readme-ov-file#time-to-generate-on-a-270ghz-processor README.md#time-to-generate-on-a-270ghz-processor +* mydomain.dat - шлях до файлу, куди буде записано знайдений ключ (тунелю) + +Додатково можна вказати: +* -t (--threads) - кількість паралельних потоків для майнингу +* -r (--reg) - якщо потрібно генерувати по регулярному виразу замість статичного рядка + +## Централізовані короткі домени + +В цілому, класична технологія DNS в мережі I2P відсутня в принципі. Можливо є засоби інтеграції, але вони так чи інакше пов'язані з централізацією. Короткі домени в I2P - є також частково централізованими, але таких "центрів" як мінімум два: +=> http://stats.i2p stats.i2p - від команди роутера Java +=> http://reg.i2p reg.i2p - від команди роутера C++ + +Працюють вони за іншим принципом, аніж класичні DNS, але при тому так само виконують свою функцію надання семантичних адрес безкоштовно, хоч і з певними умовами стосовно цензури і терміну дії (умов пролонгації). + +Умови реєстраторів переписувати не буду, актуальну версію можна почитати на їх сайтах. Якщо коротко, то для реєстрації такого формату, адреса повинна бути не зайнята а ваш сервіс - доступним онлайн. В іншому випадку адресу буде звільнено для інших користувачів. + +Працює така реєстрація за принципом автоматизованого створення реєстрів hosts.txt (http://reg.i2p/hosts.txt) що по суті являють собою індекс псевдонімів для хешу вашого тунелю (домену B32). Коли додається новий домен, він підписується приватним ключем власника тунелю, перевіряється системою реєстратора і за виконання умов - поширюється між іншими роутерами I2P, що підтримують цього реєстратора. + +### Короткий домен другого рівня (2LD) з i2pd-tools/regaddr + +Передбачається, що у вас є умовний сайт з ключем тунелю domain.dat, щоб згенерувати для нього підписаний запит на реєстрацію, виконуємо: + +``` bash +./regaddr domain.dat domain.i2p > domain.txt +``` +* domain.i2p - бажана адреса для domain.dat + +### Короткий домен третього рівня (3LD) з i2pd-tools/regaddr_3ld + +Тут майже те само що й для 2LD, але нам потрібно підписати піддомен третього рівня ключем власника домену другого рівня. Виконується така операція вже в три кроки, утилітою regaddr_3ld: + +``` bash +./regaddr_3ld step1 sub_domain.dat sub.domain.i2p > step1.txt +./regaddr_3ld step2 step1.txt domain.dat domain.i2p > step2.txt +./regaddr_3ld step3 step2.txt sub_domain.dat > step3.txt +``` +* sub.domain.i2p - бажана адреса для sub_domain.dat + +### Реєстрація + +Згенерувавши підписи, переходимо на сайти обраних реєстраторів: + +=> http://reg.i2p/add +=> http://stats.i2p/i2p/addkey.html + +Якщо ви користуєтесь роутером i2pd і бачите помилку: +> 403 Denied - Inproxy access denied. You must run I2P to access this site +- переключіть ваш роутер в режим проксі HTTP замість SOCKS +=> https://github.com/PurpleI2P/i2pd/issues/507 + +Заповнюємо форму, вказавши наш вміст файлів domain.txt і step3.txt відповідно до типу домену і слідуємо інструкціям. Звичайно, потрібно почекати декілька днів, поки заявку буде оброблено, а інші роутери мережі оновлять локальні реєстри. Щоб не чекати самому, можна скористатись посиланнями API, що надаються при реєстрації, для миттєвого оновлення вашого локального реєстру. + +На прикладі реєстратора stats.i2p, статус домену можна перевірити на сторінці нових хостів: +=> http://stats.i2p/cgi-bin/newhosts.cgi + +## Посилання + +=> https://devzone.org.ua/post/reyestratsiia-domenu-v-merezi-i2p Веб-версія цього матеріалу з коментарями на DevZone \ No newline at end of file diff --git a/public/uk/index.gmi b/public/uk/index.gmi index 44fbcdc..d4c3edd 100644 --- a/public/uk/index.gmi +++ b/public/uk/index.gmi @@ -9,6 +9,7 @@ ### Нотатки +=> i2p-domain-registration.gmi 2025-10-31 Реєстрація домену в мережі I2P => anonymous-torrents-with-i2psnark-over-i2pd.gmi 2025-10-24 Анонімний піринг BitTorrent з I2PSnark та i2pd => m3u8-stream-proxy-with-ffmpeg-in-icecast.gmi 2025-10-20 Проксування потоку m3u8 засобами ffmpeg в Icecast => i2p-capsule-in-gemini-space-with-agate.gmi 2025-10-09 Публікація капсули Gemini в I2P на прикладі сервера Agate