Делаем свой VPN на Streisand

У вас в стране блокируют сайты? Используйте VPN. Проще всего купить готовый доступ у компании вроде Astrill или ExpressVPN. А если вас одолевает паранойя, или чем-то не устраивают чужие решения, или в вашей стране блокируют сайты с VPN, можно сделать свой собственнй сервер с кучей примочек. Сейчас расскажу, как сделать свой VPN (и Shadowsocks), для теста на пару месяцев даже денег не надо.

Что понадобится

  1. Компьютер
    Буду показывать на примере Windows, для других систем процесс очень похож.
  2. 1-2 часа
    Для настройки всего софта
  3. PayPal или карта Visa / Mastercard без денег
    Снимут не более 0.1 доллара и вернут; нужно для активации бонусных 10 долларов провайдера (хватит на два месяца)

Что будем делать

  1. Арендуем виртуальный сервер на Digital Ocean
    Можно и любой другой хостинг, главное чтобы он находился в стране, где нет блокировок интернета. Выбрал именно DO потому, что они дают новичку $10 при регистрации по реферальной ссылке, этого хватит на 1-2 месяца аренды сервера. Пропустите этот шаг, если вы любите другой хостинг.
  2. Установим пакет Streisand
    Полный готовый набор с несколькими вариантами VPN, включая ориентированный на Китай Shadowsocks
  3. Настроим свой ПК и смартфон
    Чтобы смотреть YouTube и пользоваться Google Play из-за Великого Китайского Фаервола, либо заходить на LinkedIn в обход Роскомнадзора.

Арендуем сервер

Сделайте всё по этой инструкции (выбирайте Ubuntu 16.04 x64) и возвращайтесь.

Устанавливаем Streisand на сервер

Внимание: инструкция написана для нового пустого сервера. Не используйте её там, где у вас уже что-то работает (блог, NAS, ещё что-нибудь). Эта инструкция сломает существующие настройки сервера. Используйте её только на новом сервере.

Будем вводить команды в терминал Putty. После каждой команды нужно нажать Enter.

  1. Создадим SSH для Streisand
    ssh-keygen
    Нажимаем Enter несколько раз.
  2. Обновляем список пакетов
    sudo apt-get update
  3. Устанавливаем Git
    sudo apt-get install git
  4. Устанавливаем нужные пакеты Python
    sudo apt-get install python-paramiko python-pip python-pycurl python-dev build-essential
  5. Устанавливаем Ansible
    sudo pip install ansible markupsafe
  6. Клонируем ветку Streisand с Github
    git clone https://github.com/jlund/streisand.git && cd streisand
  7. Запускаем Streisand
    ./streisand
  8. Выбираем пукт Localhost
    Вводим цифру 7, нажимаем Enter

    Внимание: инструкция написана для нового пустого сервера. Не используйте её там, где у вас уже что-то работает (блог, NAS, ещё что-нибудь). Эта инструкция сломает существующие настройки сервера. Используйте её только на новом сервере.

  9. Подтверждаем действие
    Вводим streisand, нажимаем Enter.
  10. Ждём 15-30 минут.
    Во время установки в терминале будет бегать много текста, не обращайте внимания. Когда всё закончится, вы увидите строчку вроде
    [email protected]: ~/streisand#
  11. Установим логин и пароль для веб-интерфейса
    htpasswd -b -c /etc/nginx/htpasswd ваш_логин ваш_пароль
  12. Перезапустим веб-сервер
    service nginx reload

Откроем страницу с настройками

Откройте браузер, напишите там https://ваш_IP_адрес, например
https://104.138.37.80
Браузер ругнётся на плохой сертификат. Если у вас Chrome, в левом нижнем углу будет ссылка Advanced, она позволит открыть страниу по ссылке Proceed to XXXXXX. Введите логин и пароль, которые вы задали в предыдущем шаге.

Если всё сделано правильно, вы увидите вот такую страницу:

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

Shadowsocks

Рекомендую попробовать Shadowsocks, настроить проще всего. В соответствующем пункте страницы настроек уже есть пошаговые инструкции. Например, для Windows она выглядит так:

  1. Скачайте Shadowsocks for Windows
    Если официальный сайт не открывается, клиент можно скачать прямо с собственного сервера, ссылка так же в инструкции. Запустите Shadowsocks.
  2. Пролистайте так, чтобы QR-код из инструкции был примерно по центру экрана
  3. Нажмите правой кнопкой на значок Shadowsocks в трее рядом с часами, перейдите в Servers > Scan QRCode from Screen…
  4. Снова нажмите на Shadowsocks правой кнопкой, выберите Enable.

Вот и всё. Попробуйте зайти на заблокированный сайт.

Без Shadowsocks

 

Shadowsocks работает

Для Android ещё проще: установите клиент (на вашем сервере лежит копия для Android, можно без Google Play), отсканируйте QR-код с этой страницы.

Заключение

YouTube и LinkedIn открываются с телефона и компьютера, можно пить шампанское, цель достигнута. Если решите и дальше использовать этот сервер, не забудьте кинуть денег на хостинг, ведь 10 халявных долларов хватит только на два месяца.

Свой сервер — как правило, равноценен или дороже готового решения, сложнее в настройке, отсутствует выбор серверов в других странах, может быть медленнее или вообще не работать. Зато “всё своё”, никто не собирает ваши данные, нет ограничений на количество пользователей (зависит от того, сколько потянет арендованный сервер), доступны разнообразные протоколы.

Кроме того, обладая некоторой квалификацией, на том же сервере можно поднять и другие вещи: своё облачное хранилище Nextcloud, например, или блог на WordPress. Мой блог как раз на Digital Ocean и крутится, так что каждая регистрация по реферальной ссылке помогает мне его поддерживать. 🙂

17 комментариев

  • Евгений

    Не могли бы вы подготовить статью как прошить домашний роутер для подключения к своему Shadowsocks с разделением сети на китай/некитай? Последняя функция есть в android приложении Shadowsocks, хотелось бы заиметь такую на роутере либо на самом сервере с Shadowsocks.

    • 国栋

      Добрый день, если не секрет, где это можно в программе настроить ? проброску Китай не Китай на приложении андроид ?
      искал, не нашел.
      Заранее спасибо!

      • WTiggA

        В приложении в списках профилей, нажать на значок карандаша, в разделе Route выбрать Bypass mainland China либо GFW List

  • Саша

    Добрый день
    Сделал по вашей инструкции, соединение OpenVPN через Stunnel – не работает. Ни на Вин10 ни на Андроиде. Пытаюсь разобраться, на винде чтобы установилось соединение Stunnel необходим ключ клиента stunnel.pem, который до этого надо скачать с сервера. Он в папке /stunel/config есть, но “левый”, тот что создается при установке клиента на винду. На веб-странице конфигурации Стрейзанд ссылок на скачивание этого ключа нет. На сервер через Putty уже зайти не могу, так как Стрейзанд его шифрует ключом.
    Соответственно, туннель Stunnel не устанавливается и ничего не работает. Где ошибка?

  • Николай

    Обваливается сборка:
    С сообщением “Make sure the retrieved fingerprint perfectly matches the expected fingerprint”

  • Новый китаец

    Можете отписаться, какие из стрейзадовских туннелей/прокси ходят через “Золотой щит”?
    Судя по сообщениям в интернете Тор и OpenVPN работать не должны.
    Так ли это?
    Что Wireguard?
    Ходит ли через файрвол shaadowsocks-libev без плагина для обфускации (то есть shadowsocks установлен так, как вы показывали в другой статье)?

    • WTiggA

      Да ничего не заработало кроме shadowsocks, поэтому снёс всё и его отдельно поставил. Тор и OpenVPN работают в зависимости от фаз луны, без закономерностей.

      • Новый китаец

        Интересно бы ещё попробовать OpenVPN 2.4.4 c опцией tls-crypt. Если вы захотите попробовать, то могу сюда инструции выложить.
        В любом случае, спасибо за Ваши ответы.

  • Новый китаец

    Вот короткая версия инструкции.

    Если уже есть работающие сервер и клиент, использующие в конфигах строки
    “tls-auth ta.key n”,
    то нужно обновиться (при необходимости) до OpenVPN 2.4.4 по инструкции
    https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos
    и заменить в конфигах сервера и клиента строки “tls-auth ta.key n” на
    “tls-crypt ta.key”.

    Нужна ли полная инструкция про развертывание с нуля?

    • Новый китаец

      P.S. Стрейзанд tls-auth использует, так что можно её использовать для быстрого развертывания.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *