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

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

2023-09: Актуальная инструкция про VPN здесь.

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

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

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

  1. Арендуем виртуальный сервер на Vultr
    Можно и любой другой хостинг, главное чтобы он находился в стране, где нет блокировок интернета. Выбрал именно Vultr потому, что они дают $100 при регистрации по реферальной ссылке. Пропустите этот шаг, если вы любите другой хостинг.
  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 минут.
    Во время установки в терминале будет бегать много текста, не обращайте внимания. Когда всё закончится, вы увидите строчку вроде
    root@test-streisand-wtigga: ~/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.

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

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

Заключение

UPD: Можно отдельно поставить Shadowsocks, меньше действий.

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

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

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

47 комментариев для “Делаем свой VPN на Streisand

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

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

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

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

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

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

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

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

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

    Если уже есть работающие сервер и клиент, использующие в конфигах строки
    «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».

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

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

    1. Есть клиент Shadowsocks под iOS (в не-китайском сторе), но у меня что-то не работает, поэтому не стал упоминать.

  6. 2 вопроса,
    1. как на айфон поставить впн?(решение вопроса )
    2. если закончилась проплата сервера на ocean digital после этого необходимо ли проводить какие-либо манипуляции ? после проплаты на длительный срок шэдоусокс перестал подавать признаки жизни.

    1. Привет. Клиент Shadowsocks есть в AppStore (если не китайский только). Может, у вас выключился дроплет? Зайдите в панель управления digital ocean

  7. Может, у вас выключился дроплет? 

    Здравствуйте, да нет, присутствует зеленый круглешок, походу включен, но по факту связь не пробивается.

    У меня одного такая трабла ?

  8. извиняюсь за огромное количество вопросов, не очень разбираюсь.
    каким образом пинговать ? через putty или как ?

  9. Я имею ввиду именно со скриптом straisand сколько максимально число пользователей можно подключить на 1 устройство

  10. Привет!
    Все сделал по инструкции, поставил носок на винду, подключился, посмотрел ютубчик минут 10 и все.. Отрубил носок, пытаюсь зайти на веб-интерфейс — нет сигнала, пытаюсь зайти через путти то же самое. Попинговал айпишник: пакеты то идут, то нет. При этом ДО работает, по графикам там видно, что активность какая-то было первые 10 минут, а затем тишина.

    Проблема на стороне ДО? Или провайдер так быстро порезал мой новоявленный айпи? Что делать в таком случае?)

        1. Так говоря про носок, я и имел ввиду Shadowsocks :)) в общем как-то с перерывами работает, ооочень не стабильно. Может нью-йоркский сервак не так хорош оказался?

          Все-таки хочу еще шанс дать собственному впн — попробовать VPS от Vultr. Там можно будет на Японии попробовать..

          1. Попробуйте ставить чисто одни носки, без пакета стрейзанд, на новом сервере. Плюс желательно указывать нестандартный порт.

            Но вообще с китайским фаерволом всё сложнее и сложнее тягаться в последнее время.

  11. Здравствуйте! Подскажите, а какая скорость у подобного сервера, если это будет просто stunnel для торрент-трафика? И как вообще DO относится к такому использованию их сервисов? Какая будет скорость, если заработает? Смысл такой что пров режет торрент-трафик, а я хочу (рассматриваю) заворот исходящего трафика через stunnel, чтоб он не мог его отфильтровать.

    1. Привет. Торенты гонять не пробовал, ничего не могу подсказать. Но трафик на инстансах около терабайта в месяц, сложно столько накрутить даже через торенты.

      1. Ну исходящий трафик у меня большой, до 18 ТБ. Мне только для исходящего.

        1. Думаю, вам их хостинг не подойдёт. В самом дорогом тарифе за килодоллар там только 12 ТБ в месяц.

  12. «Свой сервер — как правило, равноценен или дороже готового решения, сложнее в настройке, отсутствует выбор серверов в других странах, может быть медленнее или вообще не работать.»
    1. свой сервер дешевле
    2. все что автор написал можно в одну строку скомпановать и в предзагруз закинуть
    3. МИНУС — нет выбора стран, увы
    4.скорость примерно та же (может чуть чуть ниже)

  13. ешкин кот, а самое главное то забыл сказать хддд
    +
    1. НЕ ОТВАЛИВАЕТСЯ, И ХОРОШО ПОДКЛЮЧАЕТСЯ
    2. не заблокируют в китае, и проблем с доступом к СВОЕМУ впну нет 😉

  14. Из всего заработал только Wireguard Дроплет создавал 3 раза — первые 2 попали в уже заблокированные подсети. С третьего раза всё ок. Зато теперь всё на автомате делаю, если надо — чисто одид wireguard разверну где угодно из этого пакета.

  15. а Есть ли возможность что бы сервер был именно из опреденной страны интересует аргентина например

  16. у меня выходит вот такая вот ошибка:

    TASK [dnsmasq : Enable the dnsmasq service] ****************************************************************************
    fatal: [localhost]: FAILED! => {«changed»: false, «msg»: «Unable to restart service dnsmasq.service: Job for dnsmasq.service failed because the control process exited with error code.\nSee \»systemctl status dnsmasq.service\» and \»journalctl -xe\» for details.\n»}

    понять не могу, как ее решить 🙁

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

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