- PVSM.RU - https://www.pvsm.ru -
В прошлой статье [1] я рассказал, какие выкрутасы можно сделать одним только браузером. Нам потребуются эти знания далее
Жаркий август 2020 показал, что базовые меры — это слишком мало и неэффективно. Нужно что-то большее
Выбирая решение, я ставил перед собой несколько целей:
Решение должно быть открытым
Решение должно быть бесплатным — только так оно может стать массовым
Решение должно быть децентрализованным — не должно быть единой точки отказа
Бомж-VPN. Хотелось иметь возможность соединиться с любым узлом сети забесплатно
Бомж-хостинг. Следствие предыдущего пункта. Возможность выкатить тестовый ресурс забесплатно
VPN отвалился сразу: даже рабочий VPN умер. VPN требует централизованного внешнего сервера — единая точка отказа. Наконец, VPN платный — не назвал бы лично себя нищебродом, но это точно не массовый вариант
TOR я пока что не рассматривал. Это вполне жизнеспособное решение, но у меня отсутствует экспертиза. В комментарии вызываю пояснительную бригаду о сильных и слабых сторонах реальной эксплуатации TOR
Я начал осваивать I2P. Идея мне показалась симпатичной. Особенно интересно, что сеть не просто выдержит резкий рост числа пользователей — она от этого станет работать лишь надёжнее (но это не точно). На лурке очень вдохновляющее описание возможностей [2], а wiki спускает с небес на Землю [3] и даёт понять, что I2P — не серебряная пуля, и атаки по деанонимизации — реальность. Сложно и дорого, но реально. Для сравнения, без I2P — это как по паспорту представиться и приготовиться к обыску
Точно так же, как и в сети TOR, в сети I2P есть выходные ноды. Это значит, что через сеть I2P можно пролезть в обычный интернет. Однако следует понимать, что скорость работы оставляет желать лучшего — потоковое видео через I2P смотреть так себе идея
I2P не ограничивает себя каким-то протоколом. Вместо этого сеть предоставляет среду передачи данных. Я пробрасывал через сеть I2P соединение с базой данных. Туннели I2P позволяют пробросить любой ресурс, таким образом сделав его доступным для использования любыми программами. Если кто-то не знаком с туннелями — идея проста и состоит в том, чтобы для некоторого открытого порта на удалённом сервере открыть порт на своей машине, и в дальнейшем любой локальной программой подключаться к локальному порту, что точно умеет любая программа, а тонкостями переноса байтов на тот порт удалённой машины и обратно занимается уже туннелирующая программа (частный случай туннеля [4]).
Следствия туннелей — бомж-VPN и бомж-хостинг. Я счастлив — я могу выкатить ресурс бесплатно. Я могу соединить 2 машины бесплатно. Любой другой участник сети может сделать всё то же самое бесплатно. Вкусно
Функционировать сеть сможет, даже если шаловливые ручки вновь потянутся к Большому Рубильнику — белорусские реалии именно такие, он существует [5]
Больным местом является изменение маршрутов (следовательно, dest hash). Но я надеюсь, что проблема решаема — существует версия для Android, которая подразумевает переход между сетью оператора и разными точками доступа wifi, а в настройках роутера появился экспериментальный «Laptop Mode»
Я заметил несколько шаблонов заблуждений
Больше верьте слухам. Ничего там нет такого, чего нет в обычном интернете. I2P ставит своей целью среду передачи данных. Протоколы TCP и UDP, передают более чем 99% информации в интернете, включая незаконный контент. Давайте бороться с контентом, а не транспортом его доставки
И будешь куковать, пока сеть не восстановится. I2P — не магия для обхода цензуры, а вполне реальная оверлейная сеть из плоти и крови, которая получает информацию о других участниках сети только во время своей работы
Та же проблема. С высокой вероятностью, тебе не удастся найти вообще никого из тех, с кем ты ранее устанавливал соединение. Запусти I2P как службу — пусть висит себе в фоне. Она есть не просит (ну кроме памяти). Только так ты встретишь час Ч в готовности
Узлы, часто разрывающие соединения с другими участниками сети, по сложившейся традиции получают в жбан попадают в бан-листы. Не стоит возводить это правило в абсолют, просто желательно, чтобы служба работала в фоне. Не дёргайте её на каждый чих — она не кусает и есть не просит
Ну и совсем кошерная остановка службы I2P — это в консоли роутера нажать кнопочку «Shutdown» / «Выключить». Демон I2P остановися сам в худшем случае через 10 минут — как только истекут уже установленные соединения с другими участниками сети i2p

Состоит из двух обязательных частей — установки шлюза (inproxy) и настройки браузера (лайт или пожёстче — выбираем сами на свой вкус). Важно выполнить оба этапа, по отдельности они не имеют смысла
На оффициальном сайте проекта [6] есть список загрузок — можно взять оттуда
В этом же списке присутствует секция «Пакеты для Debian/Ubuntu [7]»
После установки пытаемся открыть http://localhost:7657/ [8] — web-консоль роутера. Настоятельно рекомендую добавить страницу в закладки или даже закрепить (Pin Tab). Если страница открылась — вы всё сделали правильно
В данном случае мы исходим из предположения, что вы не делаете ничего плохого, и просто желаете получить доступ к информации, которая огорчила ваше правительство. А правительство, словно плаксивая девочка, склонно обижаться на любую информацию. Например, в России заблокирован linkedin. Жутко опасный и экстремистский ресурс, ага
В данном случае нас не пугают утечки информации. Например, сайт в сети i2p может запрашивать какой-нибудь jquery с CDN. Что такого в js-библиотеке, которую запрашивают миллионы, если не миллиарды раз в день?

Для настройки нам потребуется дополнение SmartProxy [9]. Настройка производится в 2 простых шага — необходимо добавить входной шлюз I2P в список proxy-серверов и создать правило проксирования


Паранойя может затребовать гарантий отсутствия утечек. Из наличия паранойи не следует, что мы кинемся смотреть упомянутый ранее сайт товарища майора Василия Мусорова. Настройка проводится в несколько простых шагов
У меня нет лишнего браузера в системе, чтобы полностью выделить его под I2P. Воспользуюсь уже установленным firefox. Следующий вариант работает в Linux:
FIREFOX_PROFILE="firefox-i2p"
FIREFOX_HOME="${HOME}/${FIREFOX_PROFILE}"
mkdir -p "$FIREFOX_HOME"
env HOME="$FIREFOX_HOME" firefox
То есть идея проста: заставить firefox работать с полностью чистым профилем, который никак не повлияет на основной, и который мы сможем снести при первых же намёках на проблемы, как дедушке яичко. Какие бы мы туда дополнения ни ставили, какие бы настройки там не делали — основным профилем можно будет продолжать пользоваться
У меня нет ни одной машины с Windows и MacOS. В комментариях, пожалуйста, расскажите, как сделать похожий финт ушами в Windows. А в MacOS этот фокус должен сработать, но я не тестировал


Суть ровно та же, но инструменты немного другие
На всё той же странице загрузок [10] есть секция «Android»






Я расскажу про несколько опциональных шагов
Для тех, что не читал предыдущую статью [11]: необходимо добавить i2p и onion в исключения. Иначе браузер будет пытаться резолвить эти домены на Cloudflare с предсказуемым результатом
Мы умеем учиться на ошибках [12], поэтому добавим в исключения зоны i2p и onion, таким образом полностью отключив блокировщик рекламы для всех ресурсов i2p и onion


Стало лучше, чем было, но не идеально — теряется контроль над загрузкой стороннего контента (3rd party). Хотелось бы только отключить резолв имён i2p и onion
В список подписок есть смысл добавить адреса:
http://identiguy.i2p/hosts.txt
http://inr.i2p/export/alive-hosts.txt
http://stats.i2p/cgi-bin/newhosts.txt
Входной шлюз I2P написан на языке java. По умолчанию он стартует с ограничением в 128M. Этого хватит для знакомства и неспешного погружения в дивный новый мир невидимого интернета. Больше всего памяти потребляет компонент NetDB — база данных о других хостах сети I2P. Чем их больше известно, тем выше надёжность и тем выше вероятность, что в час Ч, когда интернет снова сдохнет, Вам таки удастся найти лазейку — доступный хост из списка известных. Правда, гарантий никаких
В случае Ubuntu/Debian:
sudo dpkg-reconfigure i2p
Как это сделать для Windows — я не знаю и очень надеюсь на комментарии
Очень спорный рецепт. В общем случае, так делать не надо. Но если очень хочется, то можно. Я проделал это для прощупывания возможностей I2P. То есть just for fun
Приключения начались с вопроса «так где же java?»
which java | xargs file --mime-type
/usr/bin/java: inode/symlink
Окей
which java | xargs readlink | xargs file --mime-type
/etc/alternatives/java: inode/symlink
Больше симлинков богу симлинков!
which java | xargs readlink | xargs readlink | xargs file --mime-type
/usr/lib/jvm/java-11-openjdk-amd64/bin/java: application/x-pie-executable
Следует понимать, что конфигурация у меня может не совпадать с конфигурацией у Вас. Идея проста — добавлять в середину секцию xargs readlink до наступления просветления — пока file не скажет application/x-pie-executable. Как только java нашлась — из получившейся команды удаляем 2 последних слова file --mime-type, например, нажав ^W дважды, и вместо этого добавляем setcap 'cap_net_bind_service=+ep':
which java | xargs readlink | xargs readlink | xargs setcap 'cap_net_bind_service=+ep'
Возможно, потребуется добавить также возможность открытия сырого сокета setcap 'cap_net_raw=+ep':
which java | xargs readlink | xargs readlink | xargs setcap 'cap_net_raw=+ep'
Но в следующий раз я просто разверну docker с nginx [13]
Очень рекомендую почитать русскоязычную wiki [14] и полистать списки identiguy [15]

А ещё есть телеграмовские MTProto прокси [16]. Идея сводится к созданию туннелей на указанные i2p-хосты. Инструкция на сайте
Ещё есть торренты и почта. Ничего из этого я ещё не пробовал использовать
Находил флибусту [17] и ebooks.i2p [18] — последний выглядит вообще дорого-богато
Следует понимать, что I2P — не самостоятельный ресурс, а в первую очередь фидер — среда передачи данных. Поэтому область применимости технологии достаточно широка и упирается, скорее, в воображение
Я ни слова не сказал про i2pd [19]. Проект достоин внимания: он производительнее при меньшем потреблении ресурсов. Пока что у меня нет экспертизы
Автор: kai3341
Источник [20]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/362002
Ссылки в тексте:
[1] прошлой статье: https://habr.com/ru/post/543202/
[2] очень вдохновляющее описание возможностей: https://lurkmore.to/I2P
[3] спускает с небес на Землю: https://ru.wikipedia.org/wiki/I2P
[4] частный случай туннеля: https://wiki.colobridge.net/%D1%81%D1%83%D0%B1%D0%B4/%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_%D0%B1%D0%B4_mysql_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%82%D0%BE%D0%BD%D0%BD%D0%B5%D0%BB%D1%8C_ssh
[5] существует: https://oac.gov.by/
[6] оффициальном сайте проекта: https://geti2p.net/ru/download
[7] Пакеты для Debian/Ubuntu: https://geti2p.net/ru/download/debian
[8] http://localhost:7657/: http://localhost:7657/
[9] SmartProxy: https://habr.com/ru/post/543202/#smartproxy-begin
[10] странице загрузок: https://geti2p.net/en/download
[11] предыдущую статью: https://habr.com/ru/post/543202/#firefox-and-doh
[12] Мы умеем учиться на ошибках: https://www.opennet.ru/opennews/art.shtml?num=54621
[13] nginx: https://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass
[14] русскоязычную wiki: http://rus.i2p/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0
[15] identiguy: http://identiguy.i2p
[16] телеграмовские MTProto прокси: http://telegram.i2p/
[17] флибусту: http://flibusta.i2p/
[18] ebooks.i2p: http://ebooks.i2p/
[19] i2pd: https://i2pd.readthedocs.io/ru/latest/
[20] Источник: https://habr.com/ru/post/544516/?utm_source=habrahabr&utm_medium=rss&utm_campaign=544516
Нажмите здесь для печати.