Итак, после всего странного блокировочного от роскомпонадзора, задался я вопросом, как бы обходить блокировки. Прошерстил кучу программ и плагинов для браузеров, и у всех одна большая проблема - нет избирательности, то есть или всё через их сервер, или нет. А хотелось как в одном старом расширении, где оно само понимало, что сайт недоступен и включало обход.

На телефон, увы, пока не нашёл подобного, но для гугл хрома работает на отлично.

Дисклеймер: для кого эта статья?
Для тех, кто компом пользоваться умеет, но не хочет ни в чём разбираться, а хочет чтобы работало. Так что будет много упрощений, "тыкните", "скопируйте", "абракадабра" и прочей чепухи. Если вы считаете, что вам это не надо - так и не читайте, я не заставляю.

Цель этой статьи: научить чему-то новому; помочь тем, кто хочет сделать сам; помочь тем, кому параноя не даёт пользоваться готовыми средствами; помочь тем, кому недостаточно медленных публичных впн и прокси.

Вокруг чего вся шумиха: готовый скрипт установки пачки разного ПО для обхода блокировок и скрытии своего трафика под названием STREISAND. Проект открытый, почитать про него можно тут (и даже на русском): https://github.com/StreisandEffect/streisand/blob/master/README-ru.md.

А я точно справлюсь? Если понимаешь, что такие сервер и браузер, то да. Если нет - гугли непонятные слова и чётко делай все действия, и должно получиться. Если что, пиши в комменты - я помогу. Главное, не удаляй ничего, что кажется ненужным - оно ещё пригодится, а места не занимает.

Нам понадобится свой сервер где-то в интернете, где наши любимые сайты не заблокированы. Можно платно, но я жадный, и нашёл бесплатный вариант: Google Cloud Engine. Они дают для каждой учётной записи тестовый период аж в 1 год или 300 долларов трат, смотря что быстрее кончится. С учётом цены нужной нам услуги в 5 долларов в месяц - можно хоть 5 штук серверов в разных странах понаделать.

Итак, нам понадобится:

1) учётка гугл

2) номер телефона для подтверждения

3) карта с минимум 1 долларом на счету (вернут в течение получаса обратно, деньги не будут снимать, пока вы сами не выберете что хотите платить. Если тестовый период кончится, то вам просто отключат услуги... И можно будет завести новую учётку гугл и всё с начала)

4) программы (весь процесс описывать буду с винды, так как те, у кого линукс - и сами знают как обойти блокировки. Ну или они поймут, как эту инструкцию для себя применить): PuTTY (нужна для генерации ключей защиты и вводе команд на сервере)(https://the.earth.li/~sgtatham/putty/latest/w32/putty-0.70-installer.msi) и WinSCP (нужна для скачивании файлов на/с сервера)(https://winscp.net/download/WinSCP-5.13.2-Setup.exe)

Устанавливаем программы, оставив все значения как есть.

Далее, нам надо завести себе сервер "где-то там в облаках". Идём по ссылке https://console.cloud.google.com/ и выбираем "активировать бесплатный пробный период" (понадобится зайти в свою учётную запись гугл). Принимаем их политики, и заполняем данные о "нашей компании". Писать можно любую чушь, главное выбрать свою страну. Указываем свой номер телефона и гугл аккаунт для связи, и вводим данные кредитки. После нажатия кнопки "начать бесплатный пробный период" у вас спишет 1USD с карты, обратно его начислят в течение 15-30 минут. Потом ждём несколько минут, пока нам создают учётную запись.

После "добро пожаловать" в меню слева сверху выбираем "Compute engine" -> "Экземпляры ВМ" и тыкаем "создать". Тут нам надо выбрать название, регион, тип машины, и разрешить доступ к ней извне. Я выбрал регион Бельгия, для Москвы наверно один из самых быстрых. Тип машины - микромашина, она самая дешёвая, 4,79$ в месяц, но её ресурсов нам хватит с лихвой. Снизу ставим 2 галочки "разрешить трафик..." и тыкаем "создать".

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Создание занимает 3-5 минут, пока нам делают сервер - мы будем делать ключи доступа. Для этого нам понадобится программа PyTTYGen, которая была установлена вместе с пакетом PyTTY. Запускаем, Тыкаем в "Generate" и водим мышкой по окну (это нас так разводят на случайные данные для генерации). После генерации надо обязательно в поле "Key comment" вместо абракадабры написать короткое имя пользователя (например, user) и пароль снизу. Это будет нужно для подключения к нашему серверу, эти данные запишите где-нибудь для себя. Далее, нам надо сохранить ключи: "Save public key" и "Save private key", они нам тоже понадобятся. Так же, скопируйте текст-абракадабру выше целиком - это наш публичный ключ в нужном гуглу формате. Но его всегда можно показать повторно, снова открыв PyTTYGen, тыкнув "Load" и указав наш приватный ключ (вы же сохранили его, надеюсь?..)

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Теперь познакомим гугл с нашим ключом. В "Compute engine" слева в меню выбираем "Метаданные", потом SSH-ключи и добавляем ту большую абракадабру, что мы только что скопировали (то есть наш публичный ключ). Тыкаем сохранить.

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Настало время подключиться к нашему серверу. Он уже должен был создаться. Запускаем собственно PyTTY, в окне вводим адрес нашего сервера (его можно посмотреть в "Compute engine" на вкладке "Экземпляры ВМ" в графе "Внешний IP-адрес"). Теперь надо указать ключ доступа, это делается в меню слева, Connections->SSH->Auth, там будет поле "Private key file for authentification:" - там выбираем файл приватного ключа (который нам создала PyTTYGen). После нажимаем "Open", и должно появиться чёрное окно с предложением ввести имя пользователя (то, что мы писали в PyTTYGen в поле "Key comment"), а потом и пароль (оттуда же). Если вы всё сделали правильно, то у вас появится немного текста и приглашение вида "имя"@"название_сервера":~$

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Осталось только создать доступ к облаку, которым сможет воспользоваться программа-установщик. Идём по ссылке https://console.cloud.google.com/apis/credentials/serviceaccountkey

Выбираем уже существующий сервисный аккаунт, тип ключа JSON, тыкаем "Создать".

У вас скачается файл формата "имя_проекта"-"абракадабра".json

Он нам очень нужен. Сохраните его туда же, куда и ключи (пригодится на будущее) и переименуйте в "streisand.json"

Теперь надо его положить на сервер. Для этого нам нужен WinSCP, так что запускаем его. Он предложит нам ввести данные сервера: IP адрес, имя пользователя и пароль. Так же, нам надо дать ему всё тот же файл приватного ключа, для этого тыкаем "ещё", в новом окне выбираем SSH и страшное слово "Аутентификация". Там (так же как и в PyTTY) выбираем наш файл ключа. Тыкаем "ОК" и нажимаем "сохранить", придумываем название, (лига лени может выбрать "запомнить пароль", чтобы не вводить его каждый раз), снова "ОК". Теперь можно нажать "войти". B поздравляю, у вас справа появилось содержимое вашего сервера! Теперь слева найдите папку, куда вы сохранили ключи и JSON файл, и скопируйте его на сервер (у вас должна быть открыта папка /home/"ваш_пользователь", именно туда и надо, как у меня на фото ниже).

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

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

Итак, PyTTY позволяет копировать команды максимально простым способом - правой кнопкой мыши. Так что выделяем команду в этой статье, копируем, тыкаем в окно PyTTY и нажимаем правую кнопку, потом enter.

ssh-keygen

Потом просто тыкаем ввод, пока не увидим как на скрине ниже.

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Далее устанавливаем всякие нужности.

sudo apt-get install git

Когда у вас что-то спросит, тыкаем "Y" (игрек заглавная латинская) и потом enter. Ждём, пока не появится стандартное приглашение (последняя строчка на скрине выше). Потом вводим следующие команды.

sudo apt-get install python-paramiko python-pip python-pycurl python-dev build-essential
sudo pip install ansible markupsafe
sudo pip install "apache-libcloud>=1.17.0"

И, наконец, запускаем установку:

./streisand

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Тут надо будет выбрать верные настройки. Сперва укажем, что у нас сервер у гугла (вводим 4 и enter), потом энтером до большого списка зон. Я обычно выбираю зону "Belgium B" - надо нажать 14 и enter. Потом будут ещё вопросы, но просто тыкаем enter и так до тех пор, пока на экране не появится вот так вот:

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Теперь надо ждать. Процесс занимает около получаса, после первых 10-15 минут он у вас будет ещё что-то спрашивать, тоже просто enter нажимаем и всё.

enter нажимаем, чтобы применить стандартные настройки, не разбираясь - работать будет отлично

Когда установка закончится, появится вот такой текст:

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Краткая справка, что же мы делали последние минут 40-50? Мы создали сервер в облаке, настроили его и запустили с него установку большого пакета программ под названием STREISAND. Фишка этого пакета, он полностью автоматический - вам не надо было в ручную всё настраивать, согласовывать, итд итп, умные дяди и тёти придумали это за нас. Нам надо только запустить и подождать.
Пакет этот устанавливается в отдельный сервер, рядом с созданным нами. Можете зайти в "Compute engine" и увидеть новый сервер.
Тот, с которого вы запускали установку, нам больше не нужен, нажмите справа от него на три точки и выберите "остановить". Удалять не надо, денег за хранение у нас не попросят, а так может на будущее пригодится.

Значит, можно просто закрыть окно - всё установилось и настроилось само.

Теперь нам надо скачать файл с ссылкой на наш сервер, по которой будет доступен весь зоопарк средств для шифрования и обхода блокировок. Идём в окно WinSCP (если закрыли, то вернитесь по инструкции вверх и повторно подключитесь к серверу), справа находим папке "streisand", в ней папку "generated-docs". Вот она нам и нужна, копируем полностью туда, где сохраняли всякие файлики по этому проекту.

И, если вы хотите, можете скопировать ключи доступа к новому серверу: включите показ скрытых файлов (настройки->панели->"показать скрытые файлы") и там, где лежит папка "streiand" копируем к себе папку ".ssh"

Осталось только закрепить за нашим сервером его IP адрес. В списке серверов в "Compute engine" в строке с нашим сервером (если ничего не меняли, он будет называться "streisand") в графе "внутренний IP адрес" тыкаем в "nic0". Откроется окно "сведения о сетевом интерфейсе", там слева в меню выбираем "внешние IP адреса". Там ищем строку, в которой в графе "используется" будет указан наш сервер, и смотрим, что написано для него в графе "тип". Если там "эфемерный", то тыкаем туда и выбираем "статический". Придумываем ему название, тыкаем "ок".


Итак. Можете себя поздравить, мы полностью настроили сервер! Осталось только скачать программы для подключения и создать соединение.

Мы скачали папку "Generated-docs" с сервера. Там есть файл "streisand.html", открываем его. Чуть прокручиваем и нажимаем "DOWNLOAD SERTIFICATE", скачается файл с адресом нашего сервера .crt

Нам надо его запустить, и установить в систему. Это как ключ шифрования, но только для браузера - чтобы странички с нашего сервера открывались защищённо.

Нажимаем последовательно: "установить сертификат"->"локальный компьютер"->"поместить в выбранное хранилище"->"обзор"->"доверенные корневые центры"->"ок"->"далее"->"готово"->"ок"->"ок". Сертификат установлен.

Крутим страницу в самый низ, до раздела "Connecting to your Streisand Gateway". Там будет адрес сервера, логин и пароль для доступа к нему. Открываем страницу сервера по ссылке, вводим логин и пароль. Поздравляю, мы попали на защищённую страницу, на которой описаны все программы для шифрования соединения и доступа, которые установлены на нашем сервере, и как к ним подключиться.

Для настройки обхода блокировок только для заблокированных сайтов я использую Shadowsocks - она шифрует все данные, да и вообще - её разработали китайцы, сидящие за ВеликимКитайскимФаерволом, который в разы ужаснее, чем наш роскомпонадзор. И она там работает отлично, а значит и у нас будет работать отлично.

Так что тыкаем на раздел с shadowsocks и выбираем нашу платформу. Скорее всего у вас Виндовс, остальные и сами (наверно) разберутся.

Прокручиваем страницу до БОЛЬШОГО QR-кода. Идём по ссылке https://github.com/shadowsocks/shadowsocks-windows/releases и скачиваем последнюю версию (на момент написания статьи 4.0.10, скачать надо zip файл, но не тот, который "source code"). Из него достаём файл "Shadowsocks.exe" и кладём в удобную нам папку, например "мои документы". Запускаем скачанную программу, закрываем окно ручного ввода сервера, тыкаем правой кнопкой в самолётик серого цвета в трее (это на панели, где у вас часы и всякие значки), "Servers", а потом "Scan QRCode from Screen..." и программка найдёт на экране наш большой код, прочтёт из него настройки и сама заполнит всё, что надо. Нам останется нажать "ОК" и готово.

Теперь вы можете заставить работать любую программу через наш сервер - достаточно в её настройках выбрать соединение через прокси и вбить сервер: "127.0.0.1", порт: "1080", тип: "SOCKS5". Например, в телеграмме - и он заработает!)

Чтобы не запускать каждый раз программку, в её меню (которое вызывается тыкание правой кнопкой на значок в трее) поставьте галку на "Start on boot"

Осталось научить гугл хром открывать заблокированные сайты через наш сервер. Для этого скачиваем расширение "Proxy SwitchyOmega" (https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif) и устанавливаем. В открытом окне тыкаем "skip guide" (гид вам не нужен, у вас есть Я!), слева выбираем профиль proxy - там нам надо настроить наш сервер. Вбиваем данные нашего прокси (SOCKS5, 127.0.0.1, 1080) и нажимаем слева "Apply Changes". Потом выбираем слева профиль "auto switch", снова пропускаем гид, и настраиваем как на моём скрине (выбираем в графе "Profile" везде, кроме последнего пункта "proxy"):

Как обходить любые блокировки через свой сервер: бесплатно на год (мануал по настройке пакета streisand для совсем чайников)

Теперь делаем "import onlone rule lists".

По базам в сети, заблокировали у нас сейчас более 70 тысяч сайтов. Это не считая блокировки по IP адресам. Вручную такой список можно год вбивать и составлять, но я это сделал за вас))

В поле "Rule list URL" вводим ссылку

и нажимаем синюю кнопку "Download profile Now" (и на появившийся запрос сверху - да, "Apply changes"). Придётся подождать, лист весит прилично, но у вас должен появиться огромный список в окне "Rulle list text" - значит, всё сработало.

Осталось сверху справа в гугл хроме нажать на кнопочку в виде чёрного бублика и выбрать "auto switch". Готово, теперь сайты из списка уже будут открываться!

Если вы заходите на сайт, а он не открывается, то на значке появится цифра - это значит, что сайт недоступен. Тыкаем левой кнопкой в значок, там будет "# failed resources". Нажимаем и видим список сайтов, которые не грузятся, выбираем для них профиль "proxy" и нажимаем "add condition". Страница перезагрузится, и (если сайт просто заблокирован у вас, а не умер совсем) он откроется!
Для сайтов, которые принудительно перенаправляются на страницу блокировки - тыкаем в бублик правой кнопкой, параметры, выбираем слева профиль "auto switch", нажимаем "Add condition" и заполняем: имя сайта (лучше без "www", вместо этого пищите вот так: "*.имясайта.зона") и профиль "proxy". Не забываем нажать слева "apply changes" и подождать, пока он сохранит настройки.

Ура, мы закончили!

На все вопросы отвечу в комментах, надеюсь, этот мануал кому-то да поможет.

ПС. Так же можно поставить программку Shadowsocks на телефон, и пользоваться своим телеграмом (это получается в разы быстрее прокси-серверов в свободном доступе), или включать режим "всё через прокси" и открывать заблокированные сайты.

ПС2. Там, на сервере, есть ещё куча программ для шифрования соединения, и они все работают параллельно. Чтобы про них узнать - читайте описания, гугл переводчик вполне справляется.

ПС3. По новому закону, штраф даётся за предоставление доступа к обходу блокировок. Данная статья только рассказывает, как настроить сервер и клиент. В неё не предоставляется доступ к серверам обхода блокировок, так как все инструменты в статье имеют гораздо больший функционал.