Введение


В связи с последними событиями и возможной блокировкой публичных VPN сервисов созрела идея облегчить жизнь людям и сделать скрипт для быстрой установки OpenVPN со всеми настройками и легким выпуском сертификатов.

Скрипт позволяет одной командой создать работающий сервер и создать файлы конфигурации для клиентов в unified формате (то есть с сертификатами, включёнными в файл конфигурации). Кстати, эти файлы подходят для мобильных устройств.

Скрипт создавался для машин с CentOS 7.x или Ubuntu Server 17.x, использование на Ubuntu 16.x. возможно, но там OpenVPN 2.3.x в репозиториях. При необходимости можно добавить другие дистрибутивы, но обычно при покупке VPS можно выбрать систему и это не так важно.

Скрипт написан на bash за пару часов, возможны ошибки и наверняка что-то можно было реализовать проще и лучше.

Запускайте скрипт на свежей машине, он перезаписывает правила iptables и конфигурацию OpenVPN. И да, в правилах iptables разрешен порт ssh 22, если вы поменяли его на другой, не забудьте поменять порт в скрипте.

Особенности


  1. По умолчанию рекомендуется cipher AES-256-GCM (что достаточно безопасно на данный момент);
  2. По умолчанию используется auth SHA256 (вместо дефолтного SHA1);
  3. По умолчанию для OpenVPN 2.4.x используется tls-crypt (что усложняет обнаружение трафика OpenVPN);
  4. По умолчанию использует Google DNS и блокировку локальных DNS (setenv opt block-outside-dns) для предотвращения DNS Leak;
  5. Создаются все нужные правила в iptables и ip6tables;
  6. Есть поддержка IPv6.

Как пользоваться


Использовать скрипт очень просто, скачайте файл openvpnsetup.sh на ваш VPS, дайте ему права на запуск chmod +x openvpnsetup.sh и запустите ./openvpnsetup.sh. В результате вы получаете настроенный сервер, готовый к работе на выбранном вами порту.

В папке /etc/openvpn создается скрипт newclient.sh, который нужен для создания файлов конфигурации клиентской части, использовать его так же просто — ./newclient.sh clientname. Результатом будет файл /etc/openvpn/bundles/clientname.ovpn, который сразу можно использовать на клиенте, просто положите его в папку config (в случае использования на Windows) на вашей машине.

Если вы захотите пересоздать сервер, просто удалите все из папки /etc/openvpn и запустите скрипт заново (естественно, клиентские сертификаты надо будет перевыпустить).

Советы по выбору VPS для OpenVPN


  1. В первую очередь смотрим на цену, можно найти предложения за $3-4 в месяц, что дешевле многих VPN сервисов;
  2. Выбирайте VPS ближе к вам географически, если хотите иметь приемлемую скорость через VPN. Чем меньше пинг от вас до VPS, тем лучше скорость;
  3. Выбирайте минимальную конфигурацию. OpenVPN не использует больше одного ядра и может работать на 256MB памяти. Минимального дискового пространства в 3-5GB так же вполне достаточно;
  4. Некоторые VPS ограничены по трафику, но обычно это 1TB в месяц, если вы планируете использовать больше, рассмотрите другие тарифные планы;
  5. Перед тем как оформить заказ на VPS, уточните разрешена ли загрузка торрентов (при условии, что они вам нужны, конечно);
  6. Так же можно уточнить включены ли TUN/TAP устройства в системе. В скрипте есть проверка на это, но лучше уточнить до покупки, возможно их и нельзя будет включить через поддержку провайдера VPS;
  7. Наличие IPv6 адреса, скрипт позволяет настроить сервер с поддержкой IPv6 и возможно вы захотите иметь возможность посещать IPv6 ресурсы через VPN.

Скрипт доступен на GitHub.

Бонус: результат проверки анонимности на 2ip.ru:

image

Проверка на WITCH?:

image

Проверка на DNS Leak:

image

Комментарии (55)


  1. Shtucer
    13.08.2017 12:21
    +4

    Стопервый пост о том, как развернуть VPN на DigitalOcean. На этот раз без упоминания DigitalOcean.


    1. ac130kz
      13.08.2017 18:35

      согласен на все сто, и предлагаю автору поста тему для публикации — быстрый и стабильный vpn


  1. dmitry_dvm
    13.08.2017 13:10
    +1

    Плюсую предыдущего оратора. А слабо написать такое же, но чтобы IKEv2, чтобы на той же винде и смартфонах всё искаропки заработало без стороннего софта?


    1. xl-tech Автор
      13.08.2017 13:34

      Кстати, хоршая идея, слышал что с клиентом в Windows 10 какие-то проблемы есть, буду тестировать.


    1. lomnev
      13.08.2017 18:35

      https://github.com/trailofbits/algo


      1. dmitry_dvm
        14.08.2017 14:22

        Спасибо за ссылочку. С strongswan, kernel-libipsec раза 3 пытался воевать, не осилил.


        1. vorphalack
          14.08.2017 16:41

          а на чем засыпались?
          при наличии kernel-libipsec кмк там только на генерации сертификатов можно встрять, если руками их делать.


    1. vorphalack
      13.08.2017 21:43
      +1

      у IKEv2 есть два минуса — его видно, и его режут. а так в принципе ставим strongswan, kernel-libipsec и вперед. там все простенько, реально.


    1. rstepanov
      14.08.2017 14:34

      Лучше вот это: http://ocserv.gitlab.io/www/index.html


  1. porn
    13.08.2017 13:31
    +1

    1. xl-tech Автор
      13.08.2017 13:32

      Да, увидел скрипт от Nyr после того как написал свой :) Но в моем добавлен IPv6, так что пусть будет.


    1. foldr
      13.08.2017 20:11

      Ставил этим скриптом, 2ip.ru показывает следующее. Кто-нибудь знает, почему так?


      1. xl-tech Автор
        13.08.2017 20:21

        Они определяют VPN по MTU, плюс адрес в их статик-листе хостинг провайдеров. Тут можно почитать


        1. foldr
          13.08.2017 20:23

          Спасибо!


  1. solalex
    13.08.2017 14:47

    а где дают vps за 3 бакса в месяц?


    1. xl-tech Автор
      13.08.2017 14:57

      Смотрите на lowendbox, рекламные ссылки давать не буду. Можно найти и за $2.25 в месяц, видел акции по $8 в год как-то.


    1. Hatifnatt
      13.08.2017 14:59
      -1

      Hostodo VZ-256 — $10 в год.


      1. solalex
        13.08.2017 15:02

        далековато находится, скорость будет не очень


        1. Hatifnatt
          13.08.2017 17:53

          Торенты может и не покачать, но для серфинга — не испытывал проблем. Кроме того через США работают многие сервисы, которые не работают через Европу — Pandora и т.п…


    1. gudvinr
      13.08.2017 14:59

      Сейчас можно поискать на сайтах вроде lowendbox. или poiskvps.ru
      В свое время у yourserver был план с 256мб за €2 в месяц, и даже 30% скидку предлагали на старте.


      1. Beaglz
        13.08.2017 15:46
        +1

        И ближе к черной пятнице там можно поймать копеечные предложения.


    1. intelligence
      13.08.2017 16:04

      https://www.arubacloud.com/ но там ограничение по траффику


    1. vconst
      13.08.2017 16:15

      scaleway


      1. bill876
        13.08.2017 21:23

        У них отдельно оплачиваются диск и айпи адрес (еще по евро), вместе получается 5 евро. Что дороже даже 5 долларов у конкурентов


        1. foldr
          13.08.2017 22:29
          +1

          У Вас, наверное, остался ip от удаленной виртуалки. Его можно удалить вручную. А так — честно 2,99 евро


          1. bill876
            14.08.2017 07:09

            Пересмотрел счета, вы правы, спасибо. Действительно самый дешевый инстанс получается 3 евро уже с диском и адресом


    1. Rinnve
      13.08.2017 16:19

      Например, Time4VPS.


    1. anc813
      13.08.2017 21:51

      wishosting (есть отзывы на lowendtalk) план OpenVZ Mini за 3$ в год (получается 0.25$ в месяц, но заказывать надо на год), но там NAT (есть 20 портов) и вообще куча ограничений (постоянно нельзя использовать более 15% ресурсов т.н. fair use policy), зато 256 МБ RAM, 40 GB HDD, и трафик без ограничений (но не более 15% пропускной способности — т.е. не более 37 Мбит/с постоянно), сервер во Франции (пинг около 50 мс). Можно выбрать Ubuntu или Debian или CentOS
      Мне хватает на крохотный личный Django проект для сбора информации с ESP и подключенных датчиков и довольно редкого VPN (сам сервер VPN запущен постоянно)
      Пользую с мая месяца, и очень доволен, думал собирать информацию с датчиков на старый нетбук, но даже только по затратам на электричество (в час около 15 Вт) выходит вдвое дороже.


      1. vanburg
        14.08.2017 14:47

        Я проклял все, час пытаясь оплатить их через payza.com (других вариантов с кредитками нет).
        К самому сервису пока нет претензий, но payza это какое-то адовое бажное адище.
        UPD: используйте 2Checkout, так хоть и написано paypal, карты берут. На все ушло 2 минуты, блин.


    1. valera5505
      13.08.2017 22:28
      +1

      OVH за 3.5 доллара дает 2 гигабайта оперативки, 10 гигабайт ссд и 100 мегабит безлимитный трафик.


      1. Godless
        14.08.2017 09:51

        у них же нет ограничений на VPN и торренты?
        А то там в Terms тыщща файлов, вроде в common и VPS нет никаких запретов.


    1. foldr
      13.08.2017 22:34
      +2

      Подборочка дешевых vps http://lowendstock.com/


    1. Gen_by
      14.08.2017 11:38

      Использую для этих целей hyperhost.


    1. ushim
      14.08.2017 12:46
      +2

      Поищите тут: https://poiskvps.ru или https://vds.menu


  1. maledog
    13.08.2017 18:31

    Наша организация обслуживает IoT с debian. Так вот, почти везде openvpn для этого хватает. Но есть места, где местной сетью или провайдером просто рубится TLS Handshake. При этом порты формально доступны. Возможно скоро нас ожидает подобное повсеместно. Пока выкручивались пропуская openvpn внутри ssh-туннеля или kcptun.


    1. snp
      13.08.2017 21:51

      Static Key mode поможет.


  1. WebProd
    13.08.2017 18:35

    Может я что-то не так настроил (хотя маловероятно поскольку настроек нет)? У меня утекают DNS. Ubuntu 16.04, но версия OpenVPN 2.4.3


    1. WebProd
      13.08.2017 18:36

      Надо в клиентском конфиге прописать


      script-security 2
      up /etc/openvpn/update-resolv-conf
      down /etc/openvpn/update-resolv-conf


    1. xl-tech Автор
      13.08.2017 18:39

      Зависит от клиента, setenv opt block-outside-dns работает только на Windows (начиная с 7-ки).


      1. WebProd
        13.08.2017 18:46

        это я уже понял, тогда может в скрипте спрашивать под какую систему нужен конфиг? и как будет на Android?


        1. xl-tech Автор
          13.08.2017 19:17

          Начал тестировать и узнал интересную вещь — auth SHA256 не поддерживатся OpenVPN Connect на Android… (тестировал на 4.3 и 7).

          /etc/openvpn/update-resolv-conf — этого скрипта нет в поставке клиента на RHEL клонах насколько я знаю, тоже надо подумать что можно сделать.


          1. she1tan
            14.08.2017 17:00

            auth SHA256 на iphone то-же не работает


  1. Foxcool
    13.08.2017 19:47
    +1

    Есть еще вариант быстрого подъема VPN с помощью SoftEther и Docker https://t.me/darkfox_info/48

    Тут вообще одной строчкой можно поднять сервис и подрубатьсяк нему с посощью разных протоколов. Еще на телеграм канале https://t.me/distributed разные варианты обсуждали (в т.ч. поболее легковесные). Но сам не помню. Можно у парней спрашивать способы.


    1. xl-tech Автор
      13.08.2017 20:01
      +1

      Думаю, вам стоит написать статью, чем больше способов обхода тем лучше. SoftEther хорошая штука, жалко под свой протокол нет мобильных клиентов у них. За один http://www.vpngate.net/en/ можно им огромное спасибо сказать.



  1. vanburg
    14.08.2017 07:05

    По работе понадобился доступ к LinkedIn на уровне api, и только на одной машине с макосью., т.е. не браузер. Чего почитать из статеек чтобы только этот траф шел через vpn? В остальном штатными средствами обхожу этот {роскомнадзор}.
    Раскурив солюшен, хочу его на orange pi за натом перевесить, чтоб и удаленно с мобилы проблем тоже не знать. Но это вторично.
    Спасибо!


    1. xl-tech Автор
      14.08.2017 11:43

      Тот же OpenVPN умеет поднимать маршруты только до нужных ресурсов, убираете в конфигурации сервера:
      push «redirect-gateway def1 bypass-dhcp» (редирект всего трафика) и добавляете push «route 108.174.10.10 255.255.255.255» (маршрут до linkedin.com).


  1. puker-ti
    14.08.2017 08:51

    Есть еще неплхой vpn сервер с конфигурацией из веб гуев и и другими приятными штуками: pritunl
    Минус — нужна монга для работы


  1. G-M-A-X
    14.08.2017 13:51

    Как обойти «Определение туннеля (двусторонний пинг)» кроме покупки сервера в одной стране / городе?


    1. xl-tech Автор
      14.08.2017 15:52

      Достаточно закрыть ICMP на VPN сервере.


  1. F0iL
    14.08.2017 14:38

    а почему ограничились только CentOS и Ubuntu?
    На Debian/testing тоже сработало, только пришлось чуть-чуть поколдовать из-за несоответствий версий easy-rsa и openssl (у второго уже 1.1, а первый о таком не знает).


  1. Scf
    14.08.2017 18:34

    Вот образы Docker для впн, с инструкцией, работают давно и стабильно
    OpenVPN (для компа):
    https://github.com/scf37/docker-openvpn


    L2TP/IpSec (для домашнего роутера):
    https://github.com/scf37/docker-l2tp