Размещаем сайт в анонимной сети I2P (+ параноидальный режим)

9031db006e223b86842d333541c8c926.png

Предположим, что ты уже зашел несколько раз в I2P, початился там с ребятами в irc, проникся идеей ламповой невидимой и задумался о собственном (в)кладе в I2P. В раздумьях об этом ты посидел пару дней перед раскрытым блокнотом — узнав попутно из новостей, что не только флибуста, но и рутрекер был запрещен, — и наконец вспомнил про то что ты Сноуден и основатель викиликс (весьма неожиданный поворот, признаюсь, я сам не ожидал от тебя такого), и уже давно ищешь плацдарм для размещения общественно значимой информации. Например, ты решил выкладывать куда-нибудь картинки с котиками, которых ты налайкал в твиттере (Сноуден лайкает котиков в твиттере, ты знал?). И выбор твой пал на I2P.
Что тебе для этого понадобится: поднятый сервер и демон I2P (i2pd). Если его еще нет, установи (ссылки на оба тьюториала по установке — под win и unix, — ты найдешь в конце публикации). В нашем примере до созданного сервера можно достучаться по адресу

127.0.0.1:8080

Ремарка: если ты хочешь чтобы сайт был доступен только по I2P, то подключение твоего сервера к роутеру i2pd не означает, что остальные настроенные тобой подключения сервера к обычному интернету тут же отключатся. Тебе необходимо отключить их все самостоятельно, чтобы единственное соединение совершалось между роутером и сервером на твоей локальной машине.

Как ты помнишь, i2pd это коробка с кучей портов, расположенная внутри твоего компьютера и подключенная к сети I2P. Запущенный тобой сервер — это другая коробка, к которой тоже можно подключаться через порты. Значит если мы состыкуем порты, то и наш сервер соединится с сетью I2P. И раз наш сервер слушает 127.0.0.1:8080, то мы возьмем i2pd и настроим его на этот же самый адрес.

Откроем файл конфига (в unix — /.i2pd/tunnels.cfg, в windows — %appdata%\i2pd) и добавим в него:

[SUPERHACKERSITE]
type = http
host = 127.0.0.1
port = 8080
keys = superhackersite.dat

В отличие от присутствующих тоннелей вроде IRC, здесь мы сами выступаем сервером, и уже не мы будем соединяться к-чему-то-в-сети, а к нам будут приходить люди-из-сети, поэтому тип тоннеля (type) установлен соответствующим образом. Вместо http можно было указать server. Отличие между ними в том, что сервер-тип передает данные как есть (при этом по нему точно так же можно соединиться с твоим серваком), а http-тип использует следующие заголовки:

X-I2P-DestHash — хэш адреса посетителя в base64
X-I2P-DestB32 — то же самое, но в base32
X-I2P-DestB64 — это уже полный адрес в base64

Админам серверов эти заголовки помогают выстраивать сессии, работая с каждым посетителем индивидуально (да, такое в i2p тоже возможно, до тех пор, пока посетитель подключен с одного и тот же адреса).

Файл ключей — это ты уже заметил, — может быть именован как нам захочется. Этот файл следует прилежно хранить, ведь в нем записан адрес нашего сайта.

Опционально ты можешь включить параноидальный режим доступа строго выбранных адресов. Пусть твои друзья посмотрят каждый свой сетевой адрес (этот адрес, наряду с адресами прокинутых ими тоннелей, доступен им в вебконсоли на вкладке LocalDestinations — его можно найти методом исключения, сопоставив с адресами, представленными на странице I2P Tunnels) и сообщат его тебе. Тебе останется вписать дополнительную строчку в создаваемый тоннель в формате 26qxgmyqczulza5ym3jij5er3onclacejyqzecuhjllwun3kxuzq (безо всяких дополнений в виде b32.i2p), отделяя адреса запятой. Следующего вида:

accesslist = 26qxgmyqczulza5ym3jij5er3onclacejyqzecuhjllwun3kxuzq, 4bpcp4fmvyr46vb4kqjvtxlst6puz4r3dld24umooiy5mesxzspa и т.д.

Правда для этого твоим друзьям из accesslist’а придется — каждый раз, когда они захотят к тебе подключиться, — старовать роутеры с ключом proxykeys (подробнее пусть посмотрят ссылку на документ по конфигам в конце публикации), пусть напишут себе скрипт для этого дела: в I2P без подобной настройки каждый человек всякий раз стартует с новым адресом, новые адреса помогают оставаться анонимными.

Сохраняем изменения в tunnels.cfg. Если i2pd сейчас запущен, останавливаем его в терминале строкой:

$ pkill i2pd

И запускаем снова. Без этого изменения в tunnels.cfg не вступят в силу.

Теперь зайди в вебконсоль, пройди по ссылке на страницу 'I2P tunnels' и поищи надпись формата

SUPERHACKERSITE < 4bpcp4fmvyr46vb4kqjvtxlst6puz4r3dld24umooiy5mesxzspa:8080

Скопируй все вплоть до порта. Это b32-адрес твоего сайта, каким он предстает в сети (он будет оставаться постоянным до тех пор пока привязан к созданному тобой ключу superhackersite.dat). Добавь к нему окончание .b32.i2p чтобы получить адрес наподобие

4bpcp4fmvyr46vb4kqjvtxlst6puz4r3dld24umooiy5mesxzspa.b32.i2p

Включи обратно i2pd и подключись к сайту через этот новый адрес. Готово? Значит, сайт доступен из I2P. Чуть не забыли самое главное: ты ведь хотел добавить на свою страницу котов!

Когда коты добавлены, можешь поделиться адресом с друзьями (и если ты не Сноуден, а просто притворялся все это время, то не забудь отправить адрес своего сайта настоящему Сноудену, который, повторимся, любит котов).

Кстати ты можешь помимо этого получить совершенно бесплатно годный адрес для своего сайта. Да, публичный адрес, который будет отображаться на других ресурсах, тоже нужен иногда настоящим анонимам, как мы с тобой. Для этого воспользуйся одним из сервисов сопоставления b32 адресов и нормальных-читаемых-адресов (например, inr.i2p). Кроме этого существуют всякие каталоги и как минимум один поисковик, который использует robots.txt, но это уже, как говорится, совсем другая история.

Заходи в IRC и общайся с разработчиками на канале #i2pd-ru. Помни, что анонимность зависит в первую очередь от тебя. Удачи тебе в построении сайта!

Если ты еще не знаешь, как поставить себе i2pd, то тебе сюда:

habrahabr.ru/post/275643 — Как в первый раз запустить i2pd: инструкция под Debian/Ubuntu

habrahabr.ru/post/275647 — Как пользоваться i2pd: исчерпывающая инструкция под MS Windows

Так же, рекомендуется к прочтению:

i2pd.readthedocs.org/en/latest/configuration.html#config-files — Настройки конфигурации и старта демона

xakep.ru/2011/07/07/56161 — Анонимный хостинг через I2P: практические советы по использованию криптосети

© Habrahabr.ru