Не хотелось писать статью про настройку впн, потому что их и без меня в интернете тысячи — выбирай на вкус и цвет.

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

1. VPN клиент можно установить почти на любой точке доступа


Даже на старой точке часто есть возможность обновиться или доставить нужный пакет. Например, для моей старенькой Zyxel Keenetic Ultra оказалось неофициальное обновление, которое содержит кучу всего полезного, в том числе клиент openvpn. Для вашей точки тоже может найтись прошивка — 4pda это наше всё, там лежат прошивки буквально под что угодно. Если вы настроили все точки для работы с впн, то жизнь в целом уже становится гораздо легче. Если так сделают многие, то опять же проблема сводится к минимуму.

2. VPN позволяет выборочно гонять через себя трафик


Вам нужно только знать адрес подсети, в которую вы хотите ходить через VPN — дальше вы обновляете список этих сетей на своём VPN сервере, клиент из получает и начинает гнать только нужный трафик через VPN. Остальной идёт напрямую. Это важно — видел кучу инструкций, после следования которым вы погоните 100% трафика через VPN — это медленно, дорого, и вряд ли вы этого хотели.

3. Мобильные устройства


Почему-то многие считают, что на мобильных устройствах VPN работает по принципу “всё или ничего”. Нет, это не так, даже на огрызках — вы точно так же можете гонять через VPN только нужный трафик.

4. Тор


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

Пример


В качестве домашнего решения, я использую Google Compute Engine, где на сервере по минимальной стоимости у меня крутится openvpn сервер. Конечно я вы можете выбрать любой другой хостинг и vpn сервер.

Клиенты для этого сервера у меня подняты на точке (родной клиент в поставке точки), на ноутбуке (есть клиенты на любой вкус и цвет) и на телефоне (Android, стандартный клиент почему-то отказался читать конфиг, зато сразу завёлся клиент от Arne Schwabe). Работает просто прекрасно, никаких нареканий. И я гораздо больше уверен в безопасности и прочности личного сервера, чем какого либо халявного или даже платного. Опять же, я думаю, что он будет всегда доступен, поводов полагать обратное нет (ну разве что огромный диапазон адресов гугла попадёт в блок, но айпишник сервера сменить довольно легко).

На всякий случай добавлю свою настройку клиента — понятное дело, без ключей. Сервер и клиенты были подняты за вечер, при том, что это мой первый опыт развёртывания opnvpn, и вообще-то я занимаюсь разработкой.

Настройка клиента (сертификаты можно добавить прямо в файл настройки, чтобы скормить это спокойно телефону или точке):

Настройка клиента
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
<ca>
PUT YOUR CA CERTIFICATE HERE
</ca>
<cert>
PUT YOUR CERTIFICATE HERE
</cert>
<key>
PUT YOUR PRIVATE KEY CERTIFICATE HERE
</key>
key-direction 1
<tls-auth>
PUT YOUR STATIC KEY CERTIFICATE HERE
</tls-auth>


Настройка сервера практически дефолтная — вроде я туда добавлял только пуши — для того, чтобы только нужные ресурсы шли через VPN:

пуши выглядят так
push «route x.x.x.x 255.255.255.255»
push «route x.x.x.0 255.255.255.0»

Хотел добавить ссылок на настройку OpenVPN, но таких статей правда слишком много, и они находятся без всяких проблем, и есть под каждый дистрибутив.

Вы держитесь здесь, вам всего доброго, хорошего настроения и здоровья. Всё только начинается.

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


  1. vesper-bot
    17.04.2018 11:17

    Основная проблема — достать этот список адресов, который нужно гонять по VPN. Разве что настроить подписку прямо на IP blacklist роскомпозора.


    1. jehy Автор
      17.04.2018 11:23

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


    1. kirillzak
      17.04.2018 12:16

      Я на своё роутере (под управлением OpenWRT) использую скрипт, который отправляет в туннель только определённые домены из списка. Не вижу смысла пихать весь список.
      Если кому надо, то скрипт лежит на GitHub.


      1. Meklon
        17.04.2018 14:41

        Как бы это с Mikrotik подружить? Есть в наличии сервер домашний, можно виртуальную машину поднять. Просто как-то надо трафик перехватывать и сортировать еще на роутере.


        1. kirillzak
          17.04.2018 14:53

          Для Mikrotik можно использовать firewall с дальнейшей заворачиванием в туннель. К примеру, так.


          1. Meklon
            18.04.2018 08:40

            Полезная штука. Особенно порадовал авторезолв доменного имени. Проблема в том, что я не знаю заранее, что именно заворачивать. Особенно, если ломается какой-нибудь CDN и из-за этого повисает скрипт на странице третьего ресурса.


            1. m0rpheus
              18.04.2018 18:28

              микротик спокойно добавляет маршрут если сервер говорит ему
              push "route x.x.x.x 255.255.255.255"


        1. NoOne
          18.04.2018 08:29

          Я делал немного по другому, чем в комментарии выше.
          У меня OpenVPN на удаленном хосте. Также есть address-list со списком нужных адресов, через mangle маркируются пакеты, которые должны уходить через VPN, и в /ip route настроена отправка этих пакетов с такой маркировкой
          pastebin.com/GSSSr7qB
          Т.о. весь трафик до заблокированных адресов идет через VPN, остальное через обычный инет.


          1. kirillzak
            19.04.2018 12:43

            А по нагрузке на процессор это как сказывается?


    1. ivan386
      17.04.2018 13:55

      Совсем не проблема: https://reestr.rublacklist.net/article/api


  1. Mofas
    17.04.2018 11:31

    Вчера переблочили кучу серверов Google Compute Engine


    1. jehy Автор
      17.04.2018 11:39

      Мой пока живой, и повода к блокированию нет — разве что можно попасть под раздачу по диапазону. Опять же, свет клином на Google Compute Engine не сошёлся, да и там можно адреса менять с лёгкостью, приводящей в изумление.

      Моя мысль — о том, что можно поднять огромное количество децентрализованных личных VPN.


      1. Diden05
        17.04.2018 12:33

        Блокировка 1,5 млн адресов Google на данный момент, не очень побуждает поднимать VPN сервер именно у них, или Amazon :) Но думаю это не проблема, благо VPS можно за небольшие деньги взять у учи хостеров.


      1. vconst
        17.04.2018 12:35

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


      1. AquiHostStrider
        17.04.2018 18:36

        можно поднять огромное количество децентрализованных личных VPN.

        Можно-то можно, а кто будет оплачивать банкет? 10$/мес за VPS там, 7$/мес тут, 15$/мес ещё где-то… И в месяц выльется нехилая такая сумма. Конечно, если доходы позволяют, то не вопрос.


        1. jehy Автор
          17.04.2018 18:38
          +1

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


          1. AquiHostStrider
            19.04.2018 14:21

            И как это вяжется с предложенным выше Вами огромным количеством децентрализованных личных VPN?


        1. vconst
          17.04.2018 22:08

          Дуров предлагает оплачивать, правда пока не ясно как об этом договориться.


          1. AquiHostStrider
            19.04.2018 15:51

            У меня тут пришла в голову идея, как это в принципе можно реализовать. То самое «огромное количество». Разработать специализированную железку и вручать её всем заинтересованным провайдерам по символической цене.

            Маршрутизация, фильтрация и шифрование — не сильно требовательные к вычислительным ресурсам операции, с которыми справляется сейчас любая популярная ARM SoC. А тут уже научились делать процессоры с 64-128 ARM-ядрами на одном чипе. Поэтому моя фантазия подсказывает следующее: сделать железку, в которой будут интегрированы множество таких машинок. Можно разработать специализированный чип, где ядра (или тандемы из 2-4 ядер) будут завязаны на хитроумный конфигурируемый контроллер шины, который сможет выделять для каждой системы ресурсы: 1-4 ГБ DRAM, 1-4 ГБ NAND, 2-4 eth, 1 виртуальный ttyS0, который можно будет открыть telnet'ом, подняв туннель в клиентскую интрасеть провайдера. Плюс маршрутизатор на физически отдельном процессоре с собственной памятью, который будет коммутировать все внутренние ethernet-ы, торча несколькими оптическими интерфейсами наружу. Плюс отдельный SoC со своей ОС для управления выделением ресурсов клиентам, возможностью сделать poweroff и reboot для отдельного клиента, загрузить образ ОС в выделенный кусок NAND. Никакой виртуализации, всё аппаратно. Никакого u-boot, загрузку ОС для клиента следует предельно упростить: копирование нескольких первых мегабайт из NAND в DRAM, и старт выполнения кода с нулевого адреса. Вот как-то так.


            1. vconst
              19.04.2018 16:43

              Ничего этого не надо.

              Просто выложить образ докера, подходящий для подавляющего большинства лоухостеров, после разворачивания — образующий впн-сервер и пару подходящих Телеграму прокси. Человек развернул образ, отправил в Телеграм-бот адрес сервера с логинами впн и прокси, ему на счет упало пару сатоши в компенсацию оплаты хостинга. Или еще проще — бот принимает адрес сервака, ключи и/или логин-пароль от root и сам настраивает сервер через API или просто по SSH.

              Никакого железа, никаких посылок, все через инет в автоматическом режиме, массово и неподконтрольно.


              1. AquiHostStrider
                20.04.2018 01:10

                Я исхожу из того, что свет клином на Телеге не сошёлся. Если уж бороться за цифровую свободу — то бороться по всем фронтам. Поэтому я предложил универсальное решение, на котором клиент может запустить всё на что хватит производительности, например хостить сайт-визитку «ИП Финтифлюшкин. Кондитерская г.Мухосранска», ну или транзитную Tor-ноду. Также Ваше программное решение не решает одной важной проблемы — стоимости хостинга для живущего на грани бедности населения. Предложенная мной железка, исходя из энергопотребления порядка 5Вт/ядро плюс память плюс интерфейсы плюс потери в электроцепях потребляла бы около 1кВт. Учитывая круглосуточную работу и украинские цены на э/энергию, получаем порядка 40$/мес. Добавим стоимость своевременной замены выгоревших микросхем или изношенных по циклам записи NAND-чипов — пусть будет 60$/мес. Доплату админу за обслуживание допустим будет выплачивать Дуров и Ко. При стоимости хостинга на такой железке в минимальной конфигурации 2$/мес, если найти хотя бы половину от максимального количества клиентов, она уже себя окупит. 2$/мес — уже вполне приемлемая для народа цена, особенно когда у человека есть желание иметь десяток таких хостингов в разных странах. Правда, остаётся одна проблема: как защититься бы от спекулянтов-сквоттеров.


        1. enamchuk
          18.04.2018 11:16

          Есть vps-сервис за 9-12$ в год, есть готовые vpn и прокси за сравнимую цену. Можно арендовать vps вскладчину небольшой группой товарищей и разделить стоимость аренды. Арендовать vps лучше у менее крупных и популярных ресурсах. У меня есть две арендованные — одна в США, вторая- в Украине.


          1. AquiHostStrider
            19.04.2018 14:27

            А смысл сейчас держать VPS в Украине? Разве что из-за цены. Если по принципу «близко от России», то лучше в Польше или Германии, поскольку прямого обмена с Украиной у российских провайдеров уже давно нет, пакеты идут транзитом через одну из этих стран, что на traceroute чётко видно.


            1. enamchuk
              19.04.2018 17:03

              Я брал из-за цены ($12 в год), разместил на нём VPN, proxy и sip-proxy. Трафик идёт через Германию. Недавно нашёл в США с конфигурацией получше, стоимостью $9 в год


              1. AquiHostStrider
                19.04.2018 21:07

                Точно в год? Не в месяц? Киньте-ка адресок ;-) У DigitalOcean цены начинаются от $5/месяц.


                1. enamchuk
                  20.04.2018 05:35

                  portal.nfphosting.com/cart.php?a=add&pid=53
                  Ограниченное предложение, может измениться.


    1. Dargod
      17.04.2018 12:32

      Как вариант можно гонять vpn трафик по v6, если isp позволяет.


      1. Bonio
        17.04.2018 12:46

        И даже если не позволяет, через туннели.


  1. Zelgadiss
    17.04.2018 13:17
    +1

    По поводу пункта номер три. Сам пользуюсь таким, но на Android 7 есть проблема, что гугломаркет не хочет качать какие-либо обновления или приложения, просто висит закачка, а потом падает с ошибкой таймаута. Либо отключать VPN, либо гнать весь трафик через него.


  1. Viacheslav01
    17.04.2018 13:29

    Для похода по сайтам ТОР уже не торт, да часто он работает хорошо, но первая рекапча все ломает.


    1. jehy Автор
      17.04.2018 13:40

      Для сайтов — да. Для мелочи вроде мессенджеров — вполне.


      1. AquiHostStrider
        20.04.2018 01:17

        Tor годится только для злачных мест из домена .onion. Для всего остального использовать его нецелесообразно.


  1. capslocky
    17.04.2018 15:41

    Еще одна полезная фича — можно явно указать по IP адресам какую часть трафика направлять через VPN — исключая некоторые, или наоборот, только некоторые. Есть и способы автоматически срезолвить домены в IP адреса.


  1. achekalin
    17.04.2018 16:37

    Вы так пишете, словно VPN и OpenVPN — синонимы. А на самом деле…


    1. jehy Автор
      17.04.2018 18:39

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

      Конечно, вы можете выбрать любой другой хостинг и vpn сервер.


  1. uneasy
    17.04.2018 18:41

    Нет, это не так, даже на огрызках — вы точно так же можете гонять через VPN только нужный трафик.

    Не нашел такой возможности на айфонах. На андроиде есть, понятно — например, в клиенте OpenVPN от Arne Schwabe.


    1. jehy Автор
      17.04.2018 18:42

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


      1. uneasy
        18.04.2018 10:15

        Ну, хоть что-то, на малоюзабельно по моему. Мало того, что придется прописывать IP, а не приложения, так еще и то, что НЕ должно идти через VPN. Если что-то забудешь прописать, трафик хостера будет сжираться. А на андроиде ставишь одну галочку напротив «телеграм», и все.


        1. jehy Автор
          18.04.2018 10:25

          Айпишник один раз прописал на сервер и забыл. И прописывает именно то, что ДОЛЖНО идти через ВПН.


          1. uneasy
            18.04.2018 11:39

            По вашей же ссылке:
            «Now connections to those IP addresses don't go via the VPN connection, they're routed via mobile data.»

            Описание ключа route IP netmask net_gateway тут:
            community.openvpn.net/openvpn/wiki/IgnoreRedirectGateway

            И телеграм использует кучу IP адресов, еще и меняет их сейчас постоянно.


            1. jehy Автор
              18.04.2018 11:49

              Ну так. Чувак не прописывал всё кроме нетфликса (или что там ему нужно было), он прописал нетфликс, и теперь все остальные адреса не идут через впн.

              Для телеграмма достаточно указать одну основную подсеть, которая много лет не меняется (и никуда не денется), остальные это всего лишь зеркала, которые нас не интересуют при условии работы основной подсети.


              1. uneasy
                18.04.2018 12:18

                Нет. Почитайте внимательно свою же ссылку. Начните с заголовка: «bypassing VPN for certain domains on iOS». Это то, что было автору поста нужно, и это именно то, что он и добился (комментарий с решением от самого же автора, syd2ter).

                Теперь внимание, правильный ответ, которого нет по вашей ссылке — нужно отключить на сервере строчку в конфиге: push «redirect-gateway def1 bypass-dhcp» или, наоборот, в конфиге клиента включить: route-nopull. После этого уже можно командами route (но без net_gateway — погуглите хотя бы, что это) выборочно роутить трафик через OpenVPN сервер.

                Только это все бессмысленно, так как «основную подсеть, которая много лет не меняется» роскомнадзор уже, естественно, давно заблокировал, и у телеграма новые IP, которые они рассылают пушами, которые роскомнадзор снова банит, и телеграм рассылает новые, и так до бесконечности.


                1. jehy Автор
                  18.04.2018 12:40

                  На сервере это строчки по дефолту вроде и нету. Ну или я уже успел забыть про то, как её убирал.

                  Роскомнадзор, конечно, заблокировал основную подсеть, но она никуда не делась, и через впн доступна.


                  1. uneasy
                    18.04.2018 12:48

                    У меня сервер на убунте на амазоне, по дефолту строчка есть. Собственно, это ожидаемо — пользователь ждет, что при включении ВПН весь трафик пойдет именно туда без лишних телодвижений.

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


                    1. jehy Автор
                      18.04.2018 12:53

                      nslookup telegram.org
                      Non-authoritative answer:
                      Name: telegram.org
                      Address: 149.154.167.99

                      И конечно клиент будет туда стучаться — это основная подсеть, и для клиентов вне РФ она работает, и было бы очень странно её отключать. И я это проверял, да.


                      1. uneasy
                        18.04.2018 13:23

                        Они используют в клиентах тот же IP, что и для сайта? Как-то не ожидал этого. Ну, если роута на один единственный IP достаточно, чтобы заработала вся функциональность телеграма, тогда это, конечно, упрощает дело. Хотел бы проверить, но не могу — выяснилось, что провайдер на работе заблокировал и мой сервер на амазоне тоже.


                        1. jehy Автор
                          18.04.2018 13:34

                          Ну я всю подсеть добавил щедро — на заблокированном провайдере поднялось. А вообще, насколько я помню, в исходниках зашито некоторое количество айпишников.


  1. enamchuk
    18.04.2018 07:54

    Коментарий не ради рекламы, а для просвещения.
    Для Android есть удобнейший (для меня) VPN-клиент: VPN Client Pro (https://play.google.com/store/apps/details?id=it.colucciweb.vpnclient&hl=ru), который позволяет подключаться к vpn-сервисам по ovpn, sstp и некоторым другим протоколам. В нём реализованы полезные вещи: разрешить работать с vpn только указанным приложениям, запретить работать с vpn только указанным приложениям, настройка маршрутизации (исключить подсеть из vpn либо наоборот), автоматические подключения VPN при условиях (например, при подключении к мобильной сети соединение устанавливается, при отключении от мобильной сети и подключении к сети wifi — отключается (можно наоборот, либо при подключении к оперделённым Wifi-сетям). Возможно добавить несколько адресов серверов в один профиль (перебирает при ошибке соединения с одним из них) и многое другое. Есть лог. Есть платная и бесплатная версии.


    1. arandomic
      18.04.2018 18:30

      А он умеет выборочно посылать пакеты приложения в dev/null или обрубать им попытки соединения?
      Т.е. может работать как firewall?


      1. enamchuk
        19.04.2018 06:36

        нет, это не умеет.


      1. Barafu
        19.04.2018 12:05

        Кажется, можно заворачивать их на несуществующую проксю.