Pull to refresh

Сделайте свой анонимайзер за 10 минут

Reading time4 min
Views64K
В этой статье я сначала расскажу историю не очень долгой жизни одного анонимайзера, а потом научу — как сделать анонимайзер из исходных кодов, даже не обладая особыми навыками программирования или администрирования. Выложить свой исходный код в открытый доступ было решено после того, как мой анонимайзер попал в список Роскомнадзора и был заблокирован… Но обо всем по порядку.

Как все начиналось


В далеком 2013 году, на одном из форумов я поспорил с оппонентом, что за вечер напишу с нуля на с++ сервер раздающий статические страницы. Глупый спор, не помню с чего начался, но дабы не потерять лицо пришлось этот спор выиграть…

После этой истории исходники сервера валялись на задворках жесткого диска примерно полгода, пока все усиливающаяся интернет-цензура в России не привела к идее сделать собственный анонимайзер. Но анонимайзеров много и все известные мне работали по принципу: «введите на нашем сайте адрес и мы покажем эту страницу», хотелось сделать что-то оригинальное. Основная идея — сделать необязательным посещение сайта анонимайзера… Но как это сделать удобным?

Идея


Решение пришло случайно и по началу у меня даже не было достаточных технических знаний, чтобы понять — а будет ли это работать? Оказалось — работает! Идея проста: берем любой сайт и к его имени хоста дописываем окончание в виде доменного имени анонимайзера. Например вместо habrahabr.ru пишем habrahabr.ru.3s3s.org

(В последствии доделал и для https: вместо habrahabr.ru пишем h_t_t_p_s.habrahabr.ru.3s3s.org)

Правда первооткрывателем я себя чувствовал совсем не долго. Хорошие люди подсказали, что идея уже давно реализована и называется CoralCDN.

Ну я попробовал этот CoralCDN и меня он не воодушевил ни своей скоростью ни стабильностью. Поэтому все таки решил написать свой вариант.

Воплощение


1. Покупаем самый дешевый VDS. Можно найти за 10$ в год, но я все таки советую что-то посолидней. Лично я выбрал DigitalOcean за 5$ в месяц и был доволен как слон.
2. Покупаем короткий домен, желательно красивый и не подконтрольный цензуре и у зарубежного регистратора. Я купил 3s3s.org у GoDaddy. 20$ в год
3. Делаем две «А» записи в настройках DNS зоны:
раз: "@.3s3s.org -> [IP адрес VDS]"
два: "*.3s3s.org -> [IP адрес VDS]"
4. Пишем код анонимайзера, загружаем на свой сервер и готово…

Плач Ярославны


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

Мой анонимайзер продержался два года, но вот две недели назад я получил от хостера письмо, что Роскомнадзор собирается мой сайт заблокировать… Поиск по интернету показал, что сайт уже в черном списке благодаря решению суда, а время на обжалование уже вышло…

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

Инструкция


Итак, если вы решили сделать свой анонимайзер, то после покупки сервера и домена вам осталось сделать совсем немного.

4.1 Установить на сервер операционную систему. Мой анонимайзер работал под CentOS 6, но исходник на гитхабе я решил заточить под Ubuntu 16
4.2 Зайти в консоль и выполнить следующие команды:

apt-get update
apt-get install build-essential
apt-get install zlib1g-dev
apt-get install libcurl4-openssl-dev
apt-get install openssl libssl-dev
apt-get install libc-ares-dev
git clone https://github.com/3s3s/3s3s.org.git
cd 3s3s.org
./compile.sh

Последняя команда скомпилирует анонимайзер. Чтобы запустить его, нужно выполнить команду nohup ./test_server.exe &

Однако не торопитесь. Прежде чем компилировать и запускать, вам все таки придется заняться программированием… А именно: вам нужно исправить одну (первую) строчку в файле log.h!

#define DNS_NAME  "3s3s.ru"

Думаю вы поняли, что конкретно нужно исправить в этой строчке? Вот после исправления, запускайте

./compile.sh
nohup ./test_server.exe &

И можете заходить на сайт вашего собственного анонимайзера. Удачи!

P.S. Для демонстрации купил недавно за 100 рублей домен 3s3s.ru и запустил на новом сервере анонимайзер по описанной инструкции: 3s3s.ru

P.P.S. Пожалуй, обрисую основные отличительные черты именно этого анонимайзера.

1. Не обязательно заходить на сайт анонимайзера, достаточно в адресной строке браузера приписать к имени нужного ресурса строчку ".3s3s.org" (теперь уже ".3s3s.ru") Например вместо www.kasparov.ru написать www.kasparov.ru.3s3s.ru
2. Сервис работает с любыми браузерами и любыми устройствами не требуя дополнительных настроек и установок стороннего софта.
3. Если провайдер очень умный и блокирует все, что похоже на запрещенный адрес, то можно уже зайти на сайт анонимайзера и ввести адрес там. По умолчанию мой анонимайзер шифрует адрес запрашиваемого ресурса, т.е. меняет настоящий адрес на случайную строку. Таким образом провайдер уже никак не сможет определить — к какому ресурсу вы реально обращаетесь.
4. Как бонус, можно придумать блокируемому ресурсу любое название и на сайте анонимайзера сделать постоянный домен третьего уровня. Например, вместо www.kasparov.ru сделать kasp.3s3s.ru

Ну и на сладкое...


В последней версии я модифицировал код таким образом, что теперь необходимость в собственном VDS отпала. По крайней мере в случае, если вам не нужен собственный анонимайзер, а достаточно лишь собственного домена.
Домен можно купить в зоне ru за 100 рублей на год, либо получить бесплатно у фринома.
Итак, для того, чтобы получить анонимайзер на собственном домене, без навыков програмирования вообще, вам нужно:
1. Купить (или получить бесплатно) домен.
2. Настроить A записи своего домена на IP адрес моего анонимайзера (на сегодня это 104.131.65.219 но как вы понимаете, все может в любой момент поменяться). Настройки должны выглядеть примерно так:
раз: "@.ваш.домен -> 104.131.65.219"
два: "*.ваш.домен -> 104.131.65.219"

Все!
Когда DNS обновятся, то вы сможете заходить на любые заблокированные сайты набрав в адресной строке:
заблокированный.сайт.ваш.домен/какой-то/путь.html

Пробуйте, должно работать. Если работать не будет, пишите в баг-трекер на гитхабе. Обязательно сделаю, чтобы заработало. Таким методом блокировки доменов станут бессмысленными, а если будут блокировать IP (что вряд ли, но теоретически возможно), то поменять IP — дело 10 минут.

Правда предупреждаю, что особенностью бесплатных доменов у фринома является невозможность упомянутой выше настройки. Чтобы обойти это ограничение, придется сначала делегировать домен например на сервера яндекса.
Tags:
Hubs:
+43
Comments150

Articles