I2P over Yggdrasil: анонімність у меш-мережах
I2P (Invisible Internet Protocol) – вільний інструмент для організації анонімних комунікацій через інтернет. Є одноранговою мережею, у якій кожен користувач за промовчанням є потенційною ланкою в анонімному ланцюжку інших учасників мережі. Трафік I2P зашифрований та не піддається аналізу. Поняття «сторожового» вузла в I2P, яке є у мережі Tor, немає: немає постійного вузла, через який здійснюється вихід у мережу. Взаємодія користувача з I2P на стороні домашнього провайдера ідентифікується як хаотичне підключення до випадкових хостів. Кількість підключень клієнта з білим IP в середньому варіюється біля позначки чотири тисячі. Окрім корисного навантаження, сюди входять обмін службовою інформацією з іншими роутерами мережі та транзитний трафік.
:extract_focal()/https%3A%2F%2Fhabrastorage.org%2Fgetpro%2Fhabr%2Fupload_files%2Fd78%2Fa28%2F6e0%2Fd78a286e0953824dc283fe310f22b9fd.jpg)
Передумови
Істотне слабке місце мережі I2P полягає у необхідності звернення до одного із стартових вузлів через звичайний інтернет при першому запуску. Пакет з початковим малюнком мережі у вигляді кількох випадкових роутерів та вузол, що його віддає, називаються ресидом. Стартові вузли тримають ентузіасти, їх список є в загальному доступі і нерідко зазнає змін через звичайні людські обставини. Пляшкова шийка полягає в можливості на стороні провайдера ідентифікувати більшість звернень до ресиду через моніторинг DNS-запитів, а також блокування доменів стартових вузлів, що ускладнить перший запуск для недосвідченого користувача, т.к. вимагатиме використання проксі або VPN.
:extract_focal()/https%3A%2F%2Fhabrastorage.org%2Fgetpro%2Fhabr%2Fupload_files%2F53b%2Fef4%2F6b3%2F53bef46b34403d44cb32bbcf2d782a29.jpg)
На відміну від звичайного інтернету, користувачі I2P без виділеної адреси мають гіршу якість використання прихованої мережі ніж абоненти з білим IP. Це з постійною необхідністю прямого повідомлення з іншими роутерами мережі. Кожен роутер публікує свою адресу, яка включає ключі шифрування, IP-адресу і порт для прийому повідомлень. Очевидно, що достукатися до вузла мережі за NAT-сервером – завдання не просто.
:extract_focal()/https%3A%2F%2Fhabrastorage.org%2Fgetpro%2Fhabr%2Fupload_files%2F656%2F7b3%2F4dd%2F6567b34dd245b3b29189b2b2a5e12d21.jpg)
Однак робота роутерів без виділеної адреси можлива: клієнту мережі за NAT-ом доводиться постійно підтримувати активне UDP-з'єднання, резервуючи на вихідному сервері провайдера порт, звернення на який буде передано клієнту. Цей сценарій дуже складний, особливо коли мова заходить про ініціалізацію з'єднання ззовні. Механіка роботи клієнта за NAT-ом – твір інженерної думки, який заслуговує на окрему статтю.
Коротко про Іггдрасіль
Yggdrasil Network – один із небагатьох працездатних протоколів меш-мереж. Основна концепція полягає в автоматичній маршрутизації у внутрішній IPv6 підмережі (200::/7) та абсолютній масштабованості. Yggdrasil є повністю одноранговою мережею: немає жодних «майстер-вузлів», яким делегується якась глобальна відповідальність. Є ідеологічним продовженням проекту CJDNS (Hyperboria).
Абстрактна ідея меш-сети на чільне місце ставить продуктивність, приватність і простоту використання: шифрування трафіку і низький поріг входження нових користувачів. Yggdrasil є інструментом анонімності, т.к. Найближчі до користувача вузли бачать його реальні мережеві інтерфейси в локальній мережі, або IP-адреса при підключенні до публічного бенкету через інтернет. Меш-мережі знаходять застосування в організації псевдолокальних мереж, поєднуючи віддалені комп'ютери в одну IPv6-мережу (за аналогією з Hamachi для гри в Minecraft та інші мультиплеєрні ігри). Також служить для організації інших внутрішньомережевих ресурсів на кшталт сайтів та VoIP-телефонії.
Перші спроби інтеграції
Невелике зауваження
I2P-роутер публікує свої адреси, у тому числі IPv6, якщо він увімкнений у конфізі і є фактично. Оскільки Yggdrasil надає користувачеві не локальний проксі, а повноцінний мережевий інтерфейс (використовуючи драйвер TUN від WireGuard), донедавна I2P-роутер публікував адресу IPv6 з підмережі Yggdrasil. Оскільки користувачів з увімкненим протоколом IPv6 у конфігурації I2P-роутера та встановленим Yggdrasil було більше, ніж один і навіть два, періодично можна було бачити, що клієнт I2P (роутер) повідомляється з іншими Yggdrasil-адресами.
Проте в наявності такі недоліки:
звернення до ресиду зрештою має здійснюватися через звичайний інтернет;
опублікована роутером адреса IPv6-Yggdrasil для переважної більшості користувачів I2P є невідомою та недоступною;
успішний запуск I2P-роутера на Yggdrasil-Only пристрої малоймовірний через можливу відсутність у ресиді або локальній базі роутера вузлів з адресою IPv6-Yggdrasil.
Початок повної сумісності
З версії 2.36.0 i2pd має кілька нових параметрів конфігурації, головний з яких meshnets.yggdrasil=true
. Цей параметр не залежить від конфігурації IPv4 та IPv6. Зокрема реальні мережеві інтерфейси можуть бути відключені. У такому разі I2P-роутер працюватиме в режимі Yggdrasil-Only.
Також організований спеціальний ресид, доступний з Yggdrasil і пакет, що віддає користувачеві, в першу чергу складається з відомих роутерів з адресою IPv6-Yggdrasil. При кожному запуску I2P-роутера, працюючого як Yggdrasil-Only, проводиться перевірка наявності у локальній базі доступних вузлів на транспортному рівні, тобто. наявність інших вузлів з IPv6-Yggdrasil. Якщо з якихось причин сумісних роутерів у локальній базі не було, відбувається повторне звернення до Yggdrasil-ресиду.
При сучасному використанні Yggdrasil здебільшого через оверлейні підключення до публічних бенкетів через інтернет, робота I2P-роутера в Yggdrasil можна порівняти зі зв'язкою “Tor-over-VPN”: подібний підхід повністю приховує факт використання прихованої мережі від домашнього провайдера. У випадку з I2P є ще одна специфічна перевага: користувачу не потрібно мати виділений IP-провайдера для безпроблемних зовнішніх звернень, т.к. IPv6-Yggdrasil є глобально доступним у рамках сегменту мережі Yggdrasil (фізично з'єднаної групи учасників, у тому числі через публічні бенкети в інтернеті).
Цілісність мережі
Описане рішення є чинником фрагментації I2P. Побудова тунелів прихованої мережі – дуже ємний і навіть ювелірний процес, в рамках якого, зокрема, відбувається узгодження транспортних можливостей вузлів. Формуючи «часник» – зашифроване повідомлення групі вузлів, які мають утворити тунель, – роутер перевіряє їхні адреси на сумісність. Наприклад, вузол з єдиною адресою IPv4 не отримає інструкцію, згідно з якою необхідно встановити контакт з адресою IPv6, т.к. це свідомо неможливо.
Щоб Yggdrasil-Only роутеру побудувати тунель до вузла з адресою зі звичайного інтернету, як мінімум буде підібраний транзитний роутер, який має два інтерфейси: IPv6-Yggdrasil і, наприклад, звичайний IPv4. У свою чергу, інші Yggdrasil-Only роутери можуть виступати транзитними ланками тунелю, але тільки для сполучення з вузлами сумісними по транспорту, тобто. також мають мережевий інтерфейс Yggdrasil. Чим більше в мережі I2P кількість роутерів з одночасно включеними IPv4, IPv6 та Yggdrasil інтерфейсами, тим зв'язніша мережа.
:extract_focal()/https%3A%2F%2Fhabrastorage.org%2Fgetpro%2Fhabr%2Fupload_files%2F059%2F1ae%2F850%2F0591ae850ffb2ad2de57793b5e2c05f9.jpg)
Перспектива
Приклад з Yggdrasil є приватним кроком у майбутнє, а не самоціллю. Описаний досвід успішної інтеграції прихованої мережі в меш-мережа є важливим концептуальним кроком, який за потреби дозволить інтегрувати мережу I2P в інші меш-мережі. Перспектива відкривається під час розгляду самоорганізованих сегментів меш-сети, наприклад, у багатоквартирних будинках без централізованого провайдера. У локальній мережі клієнт Yggdrasil автоматично знаходить інші вузли і повідомляється з ними, сам виступаючи за потреби транзитним. При підключенні хоча б одного вузла в такому сегменті до іншого сегменту мережі (наприклад, глобального через інтернет), мережі автоматично об'єднуються. Такий підхід до організації мережі став реальнішим, т.к. тепер має місце і друга сторона звичного інтернету – прихована.
Для більш детального ознайомлення зі згаданими технологіями, рекомендую статті: про I2P та про Yggdrasil .
Немає коментарів:
Дописати коментар
Pure Acetone: "Pin Tweet to IPFS https://chro…" - Mastodon
https://mastodon.social/deck/@pureacetone/111421706607809813