I2P — это не TOR, не анонимайзер, а собственная сеть, свои сайты. Прошло всего ничего с последней статьи о том как подключиться к ней (не буду вдаваться в подробности - сам хотел такую написать, но всё никак руки не доходили), и мне захотелось поэксперементировать.
Итак. Цель статьи как понятно из заголовка - установка и настройка своего хостинга с сайтом и пробросом его в i2p.
Имеется: роутер i2p (настроенный по этой статье) Безлимитный интернет.
Для справки и тех, кто в танке, на всякий пожарный: $HOME - переменная, указывающая на домашнюю директорию в папку пользователя $USER - переменная, обозначающая имя пользователя. В примерах ниже надо заменять на свои значения.
Ну.. поехали.
Для начала ставим LAMP. В интернете есть куча статей по настройке nginx в i2p, но я увы преверженец apache. Посему LAMP....
sudo apt-get install php5 apache2 mysql-server php5-mysql libapache2-mod-php5
Так сказать прожиточный минимум. Остальное подтянется. Не забудьте в mysql ввести пароль от root'a при установке. И хорошо запомнить его, для тех у кого нет памяти - лучше записать. Теперь нам надо настроить Apache.
i2p по умолчанию ставит свой сайт в папку $HOME/.i2p/eepsite/docroot/ Забегая вперёд: Apache же привык по умолчанию держать сайты в /var/www Нам же надо: 1) Держать сайт в 1-м месте 2) Если /var у нас не на отдельном разделе диска, то не на корневой системе, ибо в случае порчи/поломки/перестановки есть вероятность потерять всё нафиг. 3) Ну и держать в более удобном месте конечно. В идеале на /home если проект маленький. Если нет - то на отдельном hdd.
Для начала определимся. У меня сайт... эм.. блог... Эм.. страничка.. В общем не важно. Мне хватит и на /home метров 200... Посему буду его держать в папке с i2p. Создаём папку $HOME/.i2p/eepsite/docroot/www - там у нас будет сайт. Если он уже есть у вас, то его бэкапчик, или самораспаковывающийся архив суём туда. Если нет - ну и пофиг. Попозже к этому вернемся. Поехали, нас ждёт Apache! В теории тут настраивается всё просто.
Для копирования файла настройки из виртуального узла по умолчанию в новый файл (mysite) введите в командной строке следующую команду:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite
Отредактируйте в нем новый файл настройки (mysite):
sudo nano /etc/apache2/sites-available/mysite
Измените корневой узел документов, указав в нем новое местоположение:
/home/$USER/.i2p/eepsite/docroot/www/
Измените «Directory directive» путем замены <Directory /var/www/> на <Directory /home/$USER/.i2p/eepsite/docroot/www/>
<Directory /var/www/>
<Directory /home/$USER/.i2p/eepsite/docroot/www/>
Сохраните файл mysite
Для отключения виртуального узла по умолчанию и включения нового узла запустите терминал и выполните следующие две служебные программы в окне терминала:
sudo a2dissite default && sudo a2ensite mysite
Перезапустите сервер HTTP Apache:
sudo service apache2 restart
После этого небольшого тюнинга по адресу http://localhost нам выводится содержимое папки «www». И если там что-то уже лежит, то это нам и покажут 8) Но порой работаешь сразу над несколькими проектами — и теперь нам необходимо создать домены в этой папке с соответствующими привязками.
Итак, идем в папку /etc/apache2/sites-available/ и создаем там файл vhosts.conf. touch /etc/apache2/sites-available/vhosts.conf
touch /etc/apache2/sites-available/vhosts.conf
После этого открываем его любым текстовым редактором и добавляем туда такой текст:
<VirtualHost *:80>ServerName first.myServerAlias www.first.myDocumentRoot /home/$USER/.i2p/eepsite/docroot/www/first.my</VirtualHost><VirtualHost *:80>ServerName second.myServerAlias www.second.myDocumentRoot /home/$USER/.i2p/eepsite/docroot/www/second.my</VirtualHost>
Сохраняем документ, идем в свою папку /home/$USER/.i2p/eepsite/docroot/www/ и там создаем соответственно папки first.my и second.my.
Далее открываем в текстовом редакторе файл /etc/hosts и добавляем в конце следующий текст:
127.0.0.1 first.my127.0.0.1 second.my
После этого активируем vhosts.conf в apache: cd /etc/apache2/sites-enabled/sudo ln -s ../sites-available/vhosts.conf
cd /etc/apache2/sites-enabled/sudo ln -s ../sites-available/vhosts.conf
Задача выполнена. Все, что теперь осталось — только перегрузить сервер.
После этого, набрав в адресной строке адреса http://first.my или http://second.my Вы должны увидеть содержимое соответствующих папок.
mod_rewrite
PS как выяснилось позже, у установленного таким образом апача отсутствует mod_rewrite, что делает невозможным использование .htaccess. Решение:
sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/default
Меняем у элементов «AllowOverride NONE» на «AllowOverride ALL»
sudo services apache2 restart
Поздравляю. Тут кончается первая часть. Установка и настройка apache. Теперь можно положить свой сайт в /home/$USER/.i2p/eepsite/docroot/www/ если ещё не сделали конечно. Для тех, кто за NAT'om - рекомендую использовать например сервис noip - на данный момент он бесплатен, и на 1-м аккаунте одновременно можно держать до 3-х доменов, правда чтобы настроить надо натыкаться..
Кроме того там есть удобная утилита noip2, которую можно поставить из исходников... ИЛи из deb-пакета. Скачать скомпиленный уже пакетик можно тут (57,32 kb). При установке он запросит логин/пароль от учётной записи, ваше доменное имя и частоту обновления. Теперь осталось только дообавить в /etc/crontab строчку @reboot /usr/local/bin/noip2 Вуаля, всё должно работать. ЗЫ Это не является рекламой, если не доверяете noip, поставьте свой Dinamic DNS... Много информации про DynDNS есть на FreeDNS
@reboot /usr/local/bin/noip2
Для дальнейшей простоты я буду называть "свой" сайт test.no-ip.biz. В сети i2p он будет носить имя test.i2p. Вы же не забудьте поменять их на свои.
Помните начальную фразу про заворачивание Apache? Тоже самое надо сделать и для i2p. nano $HOME/.i2p/eepsite/contexts/base-context.xml И меняем значение переменной <Set name="resourceBase">/home/$USER/.i2p/eepsite/docroot/</Set> на <Set name="resourceBase">/home/$USER/.i2p/eepsite/docroot/www/</Set>
nano $HOME/.i2p/eepsite/contexts/base-context.xml
<Set name="resourceBase">/home/$USER/.i2p/eepsite/docroot/</Set>
<Set name="resourceBase">/home/$USER/.i2p/eepsite/docroot/www/</Set>
Заходим в менеджер туннелей: 127.0.0.1:7657/i2ptunnel/index.jsp Создаём новый серверный HTTP туннель: Попадаем в настройки: Теперь по пунктам:
Нажимаем «Сохранить». Затем «Запустить». После запуска идём в настройки туннеля и копируем Локальный адрес назначения(L). Он пригодится нам при регистрации в DNS.
Регистрация в DNS (красивый и бесплатный DNS в i2p)
Регистрация на сайте, предоставляющем hosts.txt в общем-то необязательна, ибо в I2P DNS является полностью распределённым. Клиенты сами обмениваются между собой «адресными книгами». Но уж если хочется, то… заходим на сервер stats.i2p и вводим свой хост [Имя веб-сайта(W)] и Локальный адрес назначения(L).
Регистрация завершена!
Через некоторое время ваш test.i2p будет доступен в сети i2p прямо по доменному имени!
Теперь начнём линковку....
Прежде, чем приступить к этой задаче, необходимо переделать туннель для сайта. Это несложно и делается в консоли управления. Сделайте у себя также, как на картинке, вставив свой адрес сервера, порт и домен.
Local destination создается автоматически. Больше на той странице менять ничего не надо. Сохраняйте (кнопка в самом низу страницы) и стартуйте этот туннель. После старта станет доступна кнопка Preview со ссылкой типа http://q3ekhqgqxnrgaeshsesdhdfhfsjhsf5vxlzoj76soarecgf3a.b32.i2p/ (не тыркайте зря, не работает, это ж пример). Если ваш сайт загружается по этой ссылке, то считайте вы уже прошли квест на четверть пути.
Теперь адаптация сайта под i2p. У меня - блог на Wordpress.
Для начала надо заменить все ссылки на сайте. Это можно сделать путем изменения записей в базе данных.
Подключитесь к базе данных и выберите вашу базу (моя называется wordpress): # mysql -pmysql> use wordpress;
# mysql -pmysql> use wordpress;
Теперь необходимо найти таблицу опций
mysql> show tables; У меня она называетя wp_options. У вас может быть имя таблицы с каким-нибудь другим префиксом, или вообще без него. Например, просто options. Когда вы нашли нужную таблицу пошлите 2 запроса, исправляющих параметры сайта. Их через админку wordpress не получится изменить.
mysql> show tables;
mysql> pdate wp_options set option_value="/" where option_name="siteurl";Query OK, 1 row affected (0.01 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> update options set wp_option_value="/" where option_name="home";Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0
Вуаля, теперь бОльшая часть ссылок будет работать правильно как в обычной сети, так и в i2p.
Следующий шаг это поиск абсолютных ссылок внутри сайта. Например, вот код меню, которое показывается посетителю моего сайта. Например:
<div id="menu"><ul><LI><a href="/">Главная страница</a></LI></ul>
Остальное шаманство автор запретил выкладывать, чтобы не переписывать и не травить ему душу - просто выложу путь к его страничке. Этот аффтор очень щепетилен по поводу печенек для себя любимого, и до коле очень жаден, поэтому будьте людьми, покормите его, зайдя к нему на сайт, отключив AdBlock... он будет признателен!
Не забудьте посмотреть как выглядит ваш сайт в i2p.
Вот как это выглядит в итоге (ВНИМАНИЕ! Если не работает, значит я сплю, увы пока не накопил на домашний сервачёк): chibiko.no-ip.biz i2p: chibiko.i2p
PPS по мотивам: http://www.wikireality.ru/ http://www.shpargalko.com/2010/03/01/i2p-nastrojka/ http://habrahabr.ru/post/97996/
Весьма монументально. :) Спасибо за труд.
Красиво, ёлы/палы :) Спасибо!
в подшивку?
ОК
Зря и очень даже, более того... Безопасность которая самой сетью "типа" гарантируется при таких вот методах становится жутко небезопасной!...
А как апачу поднять со всеми прелестями в подшивке есть уже!
Я больше вижу автономность некую, чем безопасность.
Думаю безопасностью там и не пахнет, это скорее похоже на ловушку (мухи сами садятся на клейкую ленту). Вот здесь тыц в комментариях чувак обосновывает уязвимость таких сетей. Небольшая выдержка оттуда:
Впрочем, это всё технические подробности. Если у нас есть открытая сеть, участником которой может стать любой установивший у себя клиент пользователь, по определению это точно так же могут делать и подставные узлы, которые в дальнейшем могут использоваться для сбора данных как внутри сети (наблюдение за потоками данных, их сопоставление и т. п.), так и снаружи (IP-адреса и т. п.). От технологий это не зависит. Участники Friend-to-Friend топологии не сообщают о своём участии в сети никому, кроме кроме непосредственных пиров. Для блокировки соединения требуется каким-то путём узнать либо про одного, либо про другого участника. Это и есть darknet в техническом плане. А под общее понятие «скрытой сети» можно при желании подвести не только сайтики в Tor и I2P, но и обычный форум с закрытой регистрацией и доступом по https.
Подробнее о форматировании
Весьма монументально. :) Спасибо за труд.
Красиво, ёлы/палы :) Спасибо!
в подшивку?
ОК
Зря и очень даже, более того... Безопасность которая самой сетью "типа" гарантируется при таких вот методах становится жутко небезопасной!...
А как апачу поднять со всеми прелестями в подшивке есть уже!
Я больше вижу автономность некую, чем безопасность.
Отправить комментарий