Сейчас потихоньку начинается переползание некоторых ресурсов в i2p, потому возник вопрос об удобном доступе в эту сеть.
Можно поставить i2p-роутер на своём компьютере. Кому хочется всю домашнюю сеть обеспечить доступом, поднимают прокси на домашнем же роутере.
Но у меня вопрос стоял по другому. Хотелось иметь возможность получать доступ к i2p с любого компьютера без установки дополнительного ПО, пусть ценой безопасности — ибо мне не скрываться нужно, а просто что-то посмотреть. Если есть возможность запустить удаленный рабочий стол, то я со всяких интернет-кафе и из гостей предпочитаю подключаться к домашнему серверу, а там уже моё настроенное окружение. В случае же медленного подключения или закрытых портов пользоваться RDP становится затруднительно. Потому самый простой и нетребовательный вариант — поднять i2p-роутер на
Хостинг
Тут никаких особых требований нет,
Установка i2p
ОС — debian wheezy. Выбор дистрибутива роли не играет, просто привык к debian за последние 15 лет.
Сперва добавляем в sources.list репозиторий i2p:
deb http://deb.i2p2.no/ stable main
deb-src http://deb.i2p2.no/ stable main
Скачиваем ключ репозитория www.i2p2.de/_static/debian-repo.pub и добавляем его в apt:
apt-key add debian-repo.pub
Обновляем базу пакетов и ставим i2p и пакет i2p-keyring (обновления ключа репозитория):
apt-get update
apt-get install i2p i2p-keyring
Зависимости (включая java) вытянутся автоматом.
Запускать ip2 можно просто набрав "i2prouter start" в консоли либо сервисом при старте системы. Удобнее, конечно, сервисом.
Набираем "dpkg-reconfigure i2p" (от имени рута), на вопрос о запуске сервиса отвечаем «Да». Так же на этом шаге можно выставить размер выделяемой памяти, оставил 128МБ и создать пользователя для запуска i2p-роутера.
Для убунты все настраивается аналогично, команда добавления репозитория только другая. Тут подробнее.
Для других дистрибутивов надо поставить java (sunjava, openjdk), скачать архив отсюда и запустить консольный установщик "java -jar i2pinstall_ХХХХ.jar -console". Запуск в качестве сервиса остается на совести пользователя.
Базовая настройка i2p
Как человек ленивый, я предпочитаю веб-интерфейсы, а не файлы конфигурации. :)
Изначально доступ к вебинтерфейсу разрешен только с локального компьютера. Так что будем делать первую дырку в безопасности — открывать доступ к админке с любого адреса. Но для начала надо хоть как-то до ней достучаться. Берем ssh и делаем туннель с порта 7657
C:>ssh user@ваш_сервер -L7657:127.0.0.1:7657
user@ваш_сервер's password:
Linux ваш_сервер 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
You have mail.
Last login: Tue Dec 24 06:18:58 2013
ваш_сервер:~>
Если видим приглашение шелла, то по ссылке http://127.0.0.1:7657/ становится доступна админка i2p-роутера.
Во-первых, на закладке UI ставим английский язык. Потому что если что-то понадобится найти, то проще искать по английским названиям терминов, а не по русским. К примеру, так сразу не догадаешься, что «транзитный трафик» — это «share bandwidth».
Закладка Bandwidth — я выставил IN — 512, OUT — 256 и 50% share (тот самый транзитный трафик через ваш сервер).
Дальше настраиваем адресную книгу — идем в http://127.0.0.1:7657/dns, там закладка Subscriptions. Изначально там только www.i2p2.i2p/hosts.txt, который редко обновляется.
Добавляем
http://i2host.i2p/cgi-bin/i2hostetag
http://stats.i2p/cgi-bin/newhosts.txt
http://no.i2p/export/alive-hosts.txt
Вообще не обязательно все три, они могут перекрываться, но, думаю, хуже не будет. Если хочется, то можно еще списки ресурсов поискать в сети.
Начинаем добавлять первую дырку — делаем доступ к админке с любого хоста, без туннелей
- http://127.0.0.1:7657/configclients, поле "I2P Router Console", нажимаем Edit и меняем clientApp.0.args=7657 ::1,127.0.0.1 ./webapps/ на clientApp.0.args=7657 0.0.0.0 ./webapps/
- http://127.0.0.1:7657/configui, внизу, под списком языков, поля для ввода имени и пароля для админки.
- Перезагружаем i2p router (например кнопкой Restart слева).
После этого вход в админку должен стать доступен по ссылке http://ваш_сервер:7657, при входе должен запрашиваться пароль
Кстати, для порядку еще можно сменить порт на какой-нибудь другой, от направленной атаки не защитит, но от случайно забегающих ботов может. Хотя лучше бы вообще доступ не открывать, но я человек ленивый и каждый раз для захода в настройки поднимать ssh-туннель не хочется. А заходить иногда приходится для перезапуска сервиса.
Настройка http-прокси
Открываем доступ к прокси с любых IP. Конечно, правильный вариант — просто прокинуть ssh-туннель на нужный порт:
C:>ssh user@ваш_сервер -L4444:127.0.0.1:4444
user@ваш_сервер's password:
Linux ваш_сервер 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
You have mail.
Last login: Tue Dec 24 07:37:52 2013
ваш_сервер:~>
И в настройках браузера выставить прокси 127.0.0.1:4444
Но, как сказал выше, всё это затевается не ради безопасности, а ради удобства, так что просто открою порт на прокси.
- Идем на http://ваш_сервер:7657/i2ptunnelmgr, ищем там туннель под названием "I2P HTTP Proxy", заходим в его настройки.
- В пункте Access Point — Reachable by выбираем 0.0.0.0
- Затем ставим пароль. Поле Local Authorization, галку в Enable, задаем имя и пароль и нажимаем Save.
Перезапускаем сервер, ждем пару-тройку минут, пока поднимутся туннели.
Если надо, то можно аналогично настроить https-прокси, на той же странице.
Настройка браузера
Правильно — отдельный браузер с отключенными скриптами, флэшом и прочими сильверлайтами, в котором в настройках весь трафик гонится через i2p-прокси, до которого прокинут шифрованный туннель (см. выше).
Неправильно, но удобно — скрипт для основного браузера, который автоматом переключает прокси.
Скрипт настройки браузера лежит в /usr/share/doc/i2p-router/examples/scripts/i2pProxy.pac.gz
Распаковываем и кладем куда-нибудь в папку вебсервера (у вас же стоит на
Если же ставили с сайта ручками, то скрипт лежит в папке script/i2pProxy.pac.
Ищем в файле строчку var i2pProxy = "PROXY 127.0.0.1:4444"
; и меняем IP-адрес и порт на ваши.
Сохраняем, в браузере идем в настройки прокси в поле «сценарий автоматической настройки» прописываем http://имя_вашего_сервера/путь_к_i2pProxy.pac
Всё. Ходить по сети будете как обычно, но при обращении к i2p браузер автоматом пойдет через ваш i2p-прокси, спросив пароль.
Решение несложное, платформонезависимое и не требующее установки дополнительного ПО. Должно работать даже на андроидах и прочих iOS, если тамошний браузер поддерживает прокси.
Но на своих постоянных компьютерах я предпочитаю через плагин FoxyProxy переключать каналы доступа — у меня более сложные правила выбора прокси, чем i2p/весь остальной интернет. :)
FoxyProxy для файрфокса: addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/
Для хрома: chrome.google.com/webstore/detail/foxyproxy-standard/gcknhkkoolaabfmlnjonogaaifnjlfnp
Для IE: getfoxyproxy.org/downloads/FoxyProxy-Standard-IE-1.0.8.exe (в IE11 у меня не заработало).
Заключение
Получился удобный, но небезопасный персональный прокси для доступа в i2p сеть, которым можно воспользоваться практически из любого места и из любой ОС. Но для личной безопасности всё же надо шифровать канал от вашего компьютера до сервера — либо ssh-туннель, либо vpn.
Автор: aik