Организация анонимного доступа в сеть с помощью i2p и tor

tor_logo Видя как разворачиваются события в плане урегулирования интернета у нашего северного соседа все более остро стоит вопрос свободного получения доступа к ресурсам всемирной паутины. На сегодняшний момент существует много способов доступа в сеть с обходом блокировок. С некоторыми из них вы можете ознакомится например вот здесь. В свою очередь я хочу дополнить этот замечательный цикл способом доступа, которым пользуюсь сам.

Если вы нимательно читали описание сети I2P, то знаете, что она не предназначена для организации анонимного доступа в сеть, а только организует безопасный и неотслеживаемый канал для передачи данных между двумя точками. Однако у этой сети есть много возможностей для расширения ее функциональности вплоть до получения анонимного доступа. Это расширение мы и рассмотрим. Суть способа состоит в организации связки «Ваш компьютер» — «I2P-туннель» — «Tor-цепочка» — «Конечный сайт». Целесообразность такого способа я не здесь не обсуждаю, т.к. об этом написано достаточно много. Перечислю очевидные плюсы. Первое — вы получаете то главное, зачем все это затевали: анонимный и достаточно надежный канал доступа к интернету без блокировок. Второе — в качестве приятного бонуса вы имеете доступ к ресурсам сети i2p и tor из одного места, что как мне кажется очень удобно.

Итак, если вас все устраивает, приступим к самой реализации. Первое, что нам понадобится, это машина, не важно виртуальная или нет с установленной на ней ОС семейства GNU/Linux. Я предпочитаю дистрибутив Debian, поэтому все манипуляции буду описывать, опираясь на его специфику. Я рекомендую использовать виртуальную машину в основном потому, что ее легко переносить с места на место, быстро восстанавливать после сбоя имея резервную копию, а так же быстро уничтожать не оставляя следов, если это понадобится, все устанавливаемое на ней ПО не захлямляет ваше основное рабочее место. Где держать такую машину — тоже довольно непростой вопрос. В принципе, при достаточных ресурсах, держать небольшую виртуальную машину можно прямо на своем компьютере, либо что предпочтительней — у любого провайдера VPS. При выборе VPS обращайте внимание на две вещи — объем предоставляемого трафика и технологию виртуализации. Трафик имеет смысл выбирать начиная примерно с 1 ТБ в месяц (столько трафика пройдет через вашу машину, при установке скорости канала в 512 кб\сек). Технологию виртуализации лучше всего выбирать Xen или KVM, т.к. OpenVZ имеет свои нюансы по настройке, часто требующие вмешательства хостера. Например вы можете начать с digitalocean.com — достаточно дешевый и подходящий провайдер VPS.

Сначала устанавливаем или разворачиваем образ выбранной ОС. Рекомендую устанавливать только базовую систему и ssh-сервер. Все остальное будем устанавливать далее. Если вы не знаете как установить ОС на виртуальную машину, рекомендую ознакомиться например с документацией к распространенному ПО для виртуализации VirtualBox. Устанавливайте последний стабильный дистрибутив Debian Wheezy.

Далее входим на нашу виртуальную машину с помощью ssh и выполняем следующие действия:

Подключаем репозитории для установки ПО по организации i2p-сети (Я взял пакеты из неофициального репозитария одного из мэйнтейнеров этой сети KillyourTV). Вы можете установить i2p вручную, взяв соответствующий дистрибутив с официального сайта.

touch /etc/apt/sources.list.d/i2p.list 
echo "deb https://dl.dropboxusercontent.com/u/18621288/debian wheezy main" > /etc/apt/sources.list.d/i2p.list

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

apt-get install apt-transport-https
apt-get update && apt-get install killyourtv-keyring

Устанавливаем сам i2p-роутер (все необходимые зависимости он подтянет сам, в том числе и java) и включаем его автоматический запуск при старте системы.

apt-get install i2p && dpkg-reconfigure -plow i2p

Устанавливаем tor и замечательную консольку для управления и мониторинга за ним — arm, а так же простой прокси-сервер для организации взаимодействия tor<->i2p.

apt-get install tor tor-arm polipo

Далее начинаем это все хозяйство конфигурировать. Сначала необходимо выделить роутеру побольше памяти, т.к. при высоком трафике возможны падения самого роутера. Я выделяю половину оперативной памяти. Для этого редактируем конфигурационный файл роутера /etc/i2p/wrapper.config и изменяем там строчку:

wrapper.java.maxmemory=128

указав после равно размер выделяемой памяти в мегабайтах и перезапускаем роутер:

service i2p restart

Сам роутер можно конфигурировать через его веб-интерфейс. Для этого либо временно разрешите доступ к нему в файле /var/lib/i2p/i2p-config/clients.config отредактировав строчку

clientApp.0.args=7657 ::1,127.0.0.1,[ip-адрес-сервера] ./webapps/

добавив к ней через запятую ip-адрес вашего сервера, на котором этот роутер работает(после этого снова надо перезапустить роутер, как показано выше), либо пробросив туннель к этому серверу с помощью ssh-клиента примерно вот так (вход с любой машины с Linux):

ssh -L 7657:localhost:7657 [ip-адрес-сервера]

или так (вход с любой машины Windows, где есть plink.exe):

plink.exe -P 22 -l [user] -pw [password] -L 7657:localhost:7657 [ip-адрес-сервера]

Где [user] — имя пользователя для входа на этот сервер, [password] — его пароль, перезапуска этот метод не требует. После этого входите в консоль по http://[ip-адрес-сервера]:7657 если настроили через конфиг роутера или по http://localhost:7657, если пробросили туннель на этот сервер. Так же можно управлять роутером, редактируя конфигурационные файлы непосредственно в папке /var/lib/i2p/i2p-config/ В i2p-роутере надо настроить полосу канала, который вы собираетесь отдавать в сеть. Для этого переходим сюда: http://localhost:7657/config и делает либо как на картинке, либо так как удобно вам:

Настройки роутера

Настройка полосы пропускания

Далее настраиваем tor с помощью утилиты управления им так, как показано на картинке:

ARM

Настрока Tor через ARM

Для входа в это меню запускаем arm, затем нажимаем «m», выбираем меню «View» -> «Configuration». После редактирования сохраняем сделанные изменения нажав «m» и «Configuration» -> «Save configuration…».

Далее редактируем конфиг прокси-сервера /etc/polipo/config и добавляем туда такие строки:

proxyAddress = "127.0.0.1" # адрес, который слушает прокси-сервер для входящих соединений, сюда свои запросы будет слать i2p
proxyPort = 3128 # порт для входящих соединений
allowedClients = 127.0.0.1 # откуда разрешено соединяться с прокси-сервером
socksParentProxy = "localhost:9050" # адрес и порт который слушает tor, сюда будут передаваться исходящие соединения
socksProxyType = socks5 # тип протокола передачи данных к tor

И перезпускаем его:

service polipo restart

Осталось завернуть трафик из i2p в tor, чтобы все получилось. Для этого открываем консоль роутера http://localhost:7657/i2ptunnelmgr и создаем два туннеля. Первый туннель — серверный и будет направлен в tor. В разделе «I2P Server Tunnels» из выпадающего списка «New server tunnel:» выбираем «Standard» и жмем «Create». Далее в окне «New server settings» запоняем название и описание туннеля в соответствующих полях, ставим галочку «Auto Start» и в полях Target: Host(H): и Port(P): указываем соответственно адрес и порт, указанные в proxyAddress и proxyPort выше. См. картинку:

Настройки туннеля 1

Настройка серверного туннеля

После сохранения настроек туннеля он запустится и сгенерирует уникальный адрес, по которому этот туннель будет доступен:

Серверный туннель 2

BASE32-адрес серверного туннеля

Скопируйте этот адрес, он понадобится в следующем шаге. В разделе «I2P Client Tunnels» создаем туннель типа «HTTP/CONNECT». В окне «Edit proxy settings» в поле Access Point: Port: указываем любой произвольный порт (по нему мы будем соединятся для выхода в сеть). В выпадающем списке «Reachable by:» выбираете откуда будет доступен этот клиентский туннель: только с 127.0.0.1 (тогда прийдется еще прокладывать отдельный туннель для клиент так, как сделано ранее по тексту, с помощью ssh), либо отовсюду — 0.0.0.0, в этом случае необходимо установить аутентификацию в окне «Advanced networking options» в полях «Local Authorization:», чтобы этим туннелем пользовались только вы. Второй вариант я не рекомендую, т.к. от вашего браузера до этого туннеля трафик будет идти незашифрованым. Далее необходимо поставить три галочки «Use Outproxy Plugin», «Shared Client» и «Auto Start», а в полях «Outproxies» и «SSL Outproxies» укажите BASE32-адрес серверного туннеля который вы скопировали ранее при создании серверного туннеля. См. картинку:

Клиентский туннель

Настройка клиентского туннеля

Все, настройка практически закончена. Далее, если вы настроили доступность клиентского туннеля только с 127.0.0.1, то вам нужно пробросить туннельк нему с помощью ssh:

ssh -L [произвольный порт]:localhost:[порт, который слушает туннель] [ip-адрес-сервера]

Далее настраиваете браузер (в целях безопасности, лучше пользоваться своим не основным бразуером) на использование в качестве http/https-прокси localhost:[произвольный порт]. Если же вы настраивали доступность клиентского туннеля отовсюду с авторизацией, то в браузере указываете в качестве http/https-прокси [ip-адрес-сервера]:[порт, который слушает туннель] и включаете прокси-авторизацию, указав логин и пароль назначенный при настройке клиентского туннеля. После этого ждете примерно 20-30 минут пока i2p-роутер интегрируется в сеть и проверяете доступность i2p напрмер зайдя на общий форум сети http://forum.i2p, а так же проверяете доступность tor с помощью специальной страницы.

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.