Разработка
Oleg Borisov

Создаем свой VPN-сервер. Пошаговая инструкция

Данная статья позволит вам самостоятельно создать собственный VPN-сервер и настроить VPN-соединения на ваших iPhone, iPad и Mac. Защитить и скрыть ваш трафик от злоумышленников, провайдера и спецслужб, а также получить доступ к заблокированным в стране ресурсам.

В январе 2019 года я путешествовал по Азии. Будучи в Гуанчжоу, я столкнулся с отсутствием доступа к Google, Facebook и ряду других популярных сервисов. Они в принципе не работают на территории Китая и заблокированы правительством.

Помимо недоступности сервисов в некоторых странах, в путешествиях вообще есть определенная проблема с нормальным доступом в Интернет. Не всегда удается купить местную SIM-карту, поэтому приходится подключаться к Wi-Fi-сетям в отелях, аэропортах и кафе. Фактически, мы ничего не знаем об этих сетях: кем они были созданы, насколько надежны и не «слушает» ли кто-либо сейчас наш трафик.

То же самое происходит и в своей стране. Если вы беззаботно подключаетесь к Wi-Fi в кафе или к любым публичным сетям, то у меня для вас плохие новости. Вы и понятия не имеете, насколько безопасны эти сети, и, вполне возможно, прямо сейчас весь ваш трафик прослушивается злоумышленниками, которые сидят за соседним столиком. Отличный пример показан на видео.

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

Использование VPN-соединения — оптимальное решение сразу обеих обозначенных проблем: так мы получаем доступ к заблокированным в стране ресурсам и защищаем себя от прослушки трафика. Реализовать это решение можно двумя способами:

  • Воспользоваться коммерческим VPN-сервисом, например, Nord VPN
  • Создать свой VPN-сервер

Для меня использование коммерческого VPN было неприемлемым решением, и по ходу статьи я объясню, почему никому не советую пользоваться подобными сервисами. А поскольку я уже имел навык работы с Linux, я решил создать собственный VPN-сервер: размять пальцы, освежить знания, прокачать скилл.

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

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

К сожалению, Windows и Android в данной статье не рассматриваются, поскольку Windows последний раз я пользовался лет 15 назад, а Android — 2 часа совокупно за всю жизнь, поэтому не представляю, что и как сегодня работает в этих операционных системах. Не исключаю, что подходы, описанные здесь, сработают и для них. Инструкция в первую очередь создана для тех, кто пользуется iPhone, iPad и Mac.

Как работает VPN, и почему вам нужен собственный VPN-сервер

С помощью вашего обычного Интернет-соединения между вашим устройством и VPN-сервером устанавливается специальное соединение — VPN-туннель. Все передаваемые и получаемые данные в этом соединении шифруются. С этого момента вся ваша сетевая активность осуществляется через данный туннель, а не через основной канал провайдера, и вы пользуетесь Интернетом как бы с самого VPN-сервера, а не с вашего устройства.

Для вашего провайдера, администратора Wi-Fi-сети или же злоумышленников, которые сканируют трафик в Wi-Fi-сетях, вся ваша сетевая активность выглядит как одно единственное соединение к одному единственному IP-адресу. Это всё, что им доступно. Что именно происходит внутри этого соединения, они не смогут узнать, поскольку просто не смогут проникнуть «внутрь» этого соединения.

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

Преимущества VPN

Итак, давайте обозначим, что нам дает VPN-соединение и какие преимущества предлагает:

  • VPN-соединение обеспечит безопасность при подключении к ненадежным (не лично нашим) Wi-Fi-сетям и особенно полезно в путешествиях. Ни администратор Wi-Fi-сети, ни злоумышленники, сканирующие трафик, не смогут понять на какие сайты вы ходите, какие данные передаете или получаете.
  • VPN-соединение обеспечит доступ к ресурсам, заблокированным в вашей стране или стране, в которой вы сейчас находитесь. Поскольку VPN-сервер находится за пределами вашей страны, а вместе с ним виртуально и вы, вам становятся доступны любые ресурсы Интернета. Если конечно они не заблокированы в стране нахождения самого VPN-сервера.
  • VPN-соединение позволяет скрыть трафик от Интернет-провайдера и, соответственно, от спецслужб вашей страны. В России, например, уже имеются прецеденты посадки людей в тюрьмы всего за один комментарий в социальной сети, а согласно «закону Яровой» весь ваш трафик и сетевая активность записываются сроком на 1 год. Многим кажется, что законопослушному гражданину бояться вроде бы нечего, однако, на мой взгляд, это существенное упущение в персональной безопасности. Кто знает, как изменится ваша личная ситуация и ситуация в стране. Вполне возможно, что в один «прекрасный» день к вам придут и предъявят обвинения за посещение неугодного правительству сайта. В конце концов, зачем вам давать кому-либо больше информации о себе, если можно дать меньше?

Безусловно, не стоит воспринимать VPN как панацею от всего и вся. Не стоит также и думать, что с использованием VPN вы сможете начать заниматься хакерской деятельностью, ломать сети и воровать кредитные карточки, как это часто показывают в кинофильмах, например в Mr.Robot. Во-первых, такая деятельность в принципе незаконна и неоднозначна с моральной точки зрения. Во-вторых, вас очень быстро обнаружат, обратившись к хостеру, у которого размещен VPN-сервер, и последний сдаст ваши реальные координаты с потрохами. В-третьих, для этого существуют совершенно другие инструменты и подходы.

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

Недостатки VPN

У VPN существуют и недостатки:

  • Некоторые сайты начнут загружаться на языке страны, в которой располагается ваш VPN-сервер. Однако, это легко исправить. Поскольку чаще всего мы приходим на какие-либо сайты через поиск в Google, достаточно один раз настроить его выдачу, и с этого момента вы будете направляться на сайты с нужной вам локализацией. В конце концов, всегда можно выбрать локализацию на самом сайте.
  • То же самое касается и рекламы. Ее существенная часть начнет отображаться для страны, в которой находится ваш VPN-сервер. Какие-то площадки научились понимать, что на самом деле вы русскоговорящий пользователь и находитесь совсем не в Германии, однако, YouTube, например, по-прежнему этого не умеет и шпарит видео-рекламу на немецком даже при принудительной установке страны в настройках. Впрочем, иногда это даже интересно: можно посмотреть какие продукты и услуги сейчас актуальны в других странах.
  • Некоторые сервисы, например, Амедиатека, блокируют доступ с нероссийских IP-адресов, поэтому VPN при их использовании придется на время отключать. Опять же, есть хак: достаточно выключить VPN, запустить видео в сервисе и сразу же включить VPN обратно. Все будет работать.
  • Снизится скорость загрузки сайтов. По замерам это действительно так, однако, на практике падение скорости для обычного пользования Интернетом настолько незначительно и неощутимо, что данным недостатком можно пренебречь.

О коммерческих VPN-сервисах: NordVPN, ExpressVPN, Cyberghost, и почему не стоит их использовать

В настоящее время существуют так называемые коммерческие VPN-сервисы — компании, которые предоставляют вам свои VPN-сервера за определенную месячную плату. Например, NordVPN, ExpressVPN, CyberGhost и прочие.

На мой взгляд, использование подобных сервисов, несмотря на их предназначение, напротив, еще больше снижает безопасность ваших данных. Всё просто: эти компании видят весь ваш трафик. Всё, что вы получаете и передаете, на какие сайты ходите, какими сервисами пользуетесь — абсолютно всё. Да, конечно, все они заявляют о том, что не хранят клиентские логи, однако, это невозможно проверить на практике. Более того, некоторые VPN-сервисы изначально были созданы именно для того, чтобы воровать ваши данные, и, по-факту, это является их основной деятельностью и выгодой.

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

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

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

В какой стране поднять свой VPN-сервер

Выбор страны для своего VPN-сервера стоит осуществлять, исходя из следующих критериев:

  • кратчайшее расстояние до вас: это обеспечит меньший пинг и потери в скорости соединения
  • минимальное количество запретов на свободу Интернета, доступность любых популярных сервисов
  • наименьшая политическая напряженность между вашей страной и страной, где будет находиться VPN-сервер. В этом случае ваш трафик теперь уже с VPN-сервера, скорее всего, не будут читать спецслужбы другого государства. Но здесь палка о двух концах. Например, многие российские пользователи предпочитают располагать VPN-сервер в Великобритании именно из-за высокой напряженности между странами, ведь в случае чего, последняя ни за что не сдаст трафик российским спецслужбам. Поэтому, данный подход также может быть оправданным.

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

Если исходить из принципа максимальной защищенности трафика именно от российских спецслужб, то лучшим решением будет сервер в Великобритании. На практике же, лондонские сервера не всегда хорошо показывают себя с точки зрения стабильности: случаются отвалы, так себе пинг и меньшая, по сравнению с Германией, скорость. Возможно, автор здесь предвзят, но сколько бы я не работал ни с чем британским, всё почему-то всегда работает из рук вон плохо, начиная от автомобилей и заканчивая серверами. Складывается впечатление, что разгильдяи-британцы ничего не могут сделать хорошо, в то время как на немецкую машину и ее педантичность всегда можно положиться.

Безусловно, вы можете поднять VPN-сервер и в своей стране, но в этом случае утрачиваются преимущества №2 и №3. Создавая VPN-сервер в своей стране, вы на блюдечке предоставляете весь свой трафик спецслужбам вашей страны, поскольку сервер, расположенный в вашей стране, подчиняется юрисдикции именно вашей страны. И, установив контроль за вашим трафиком пусть не у провайдера, но у самого хостера, где работает ваш VPN-сервер, спецслужбы при желании легко достанут вас там. И конечно, по-прежнему не будут доступны заблокированные ресурсы.

Выбираем хостинг для своего VPN-сервера

Популярные хостеры

Для того, чтобы создать свой VPN-сервер, нам нужно арендовать виртуальный сервер (Virtual Private Server) у одного из хостинг-провайдеров. На него мы установим Linux и затем настроим его.

Выбор хостера дело персональное, на форумах существует бесчисленное количество топиков в духе «где лучше взять виртуальный сервер для VPN». Из наиболее популярных на сегодняшний день глобальных хостинговых компаний можно выделить следующие:

Для себя я выбрал Amazon Web Services (AWS). В основном, из-за известности бренда, большого количества доступных географических зон для размещения сервера и высокой стабильности. На самом деле, многие популярные интернет-сервисы работают на базе AWS, арендуя там сервера для своих нужд, например, Facebook.

На мой взгляд, вряд ли сегодня кто-то может глобально конкурировать с Amazon. Компания была пионером в облачных технологиях и, по сути, открыла эту отрасль. Сегодня AWS предоставляет множество решений для облачных вычислений на любой вкус и цвет, но нам с вами нужна обычная виртуальная машина. Ее мы возьмем в одной из разработок AWS: Lightsail.

Lightsail — это упрощенное решение для создания виртуальных серверов, в отличие от своего старшего собрата EC2. Всё завернуто в очень простой интерфейс, в котором разберется даже новичок, поэтому для нашей цели — создания VPN-сервера, AWS Lightsail подходит лучше всего.

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

Сколько стоит

Использование VPN-сервера на базе AWS Lightsail будет обходиться вам в 3.5 доллара в месяц. За эти деньги вы получаете машину с 512 Мб оперативной памяти. Подобная конфигурация легко справляется с обработкой VPN-трафика трех устройств. Первый же месяц у AWS будет и вовсе бесплатным.

Почему Debian, а не Ubuntu

Поднимать свой VPN-сервер мы будем на основе операционной системы Linux Debian, а не Linux Ubuntu, которая довольно часто фигурирует в подобных инструкциях.

Лично я не люблю Ubuntu с самого ее появления из-за нестабильности, требовательности к ресурсам и какой-то общей аляповатости. К тому же, Ubuntu изначально создавалась именно как пользовательская система, а не серверная. Debian же надежен и стабилен как слон. В моей компании мы используем Debian во всех интернет-проектах на протяжении последних 10 лет и никогда не имели с ней проблем, получая феноменальные стабильность и быстродействие. С Ubuntu же вечно что-то происходит.

Протоколы VPN-соединения: почему IPsec IKEv2, а не Open VPN

Сегодня существуют разные протоколы VPN-соединения, их детальный разбор выходит за рамки этой статьи. Среди них наиболее популярны IPsec IKEv2 и OpenVPN.

Оба протокола хороши и надежны, но мы будем использовать IKEv2, поскольку у OpenVPN, на мой взгляд, имеется существенный недостаток, который перекрывает его прочие достоинства. OpenVPN требует установки своего приложения, которое всегда должно быть запущено на устройствах, что, во-первых, неудобно в использовании, а во-вторых, дополнительно расходует батарею iPhone, iPad и, в меньшей степени, Mac. IKEv2 же «вшит» в iOS и macOS и является для них нативным, не требуя установки никакого дополнительного ПО.

В качестве серверной части мы будем использовать strongSwan — популярный VPN-сервер для Linux.

Готовые скрипты для развертывания VPN-сервера: Algo, Streisand

Сегодня существуют готовые решения для развертывания своего VPN-сервера на платформе Linux, например, скрипт Algo (для IKEv2) или Streisand (для OpenVPN), которые нужно просто скачать, распаковать и запустить на сервере. Данные скрипты сами установят и настроят все необходимые пакеты и на выходе предоставят для вас работающий VPN-сервер.

Streisand нам не подходит в принципе, поскольку заточен под OpenVPN. Что же касается Algo, то пробежавшись по диагонали, я увидел, что данный скрипт устанавливает много лишних пакетов, без которых вполне можно обойтись, а также каких-то подозрительных пакетов, неизвестно кем созданных и кем проверенных. Если кто-то глубоко изучал Algo и нашел в нем что-то мошенническое, дайте, пожалуйста, знать. Кроме того, Algo устанавливается только на Ubuntu, что нам, опять же, не подходит.

Таким образом, мы будем создавать свой VPN-сервер, используя следующие технологии:

  • AWS Lightsail в качестве виртуального сервера
  • IKEv2 как протокол VPN
  • Linux Debian в качестве серверной ОС
  • strongSwan в качестве VPN-сервера
  • никаких готовых скриптов, всё настроим руками.

Итак, с теоретической частью покончено, приступаем к созданию своего VPN-сервера.

Инструкция по созданию собственного VPN-сервера на базе Linux Debian

Регистрируемся в Amazon AWS и подключаемся к серверу

Процесс регистрации в Amazon Web Services прост и вы пройдете его самостоятельно. После регистрации перейдите в Lightsail, выберите гео-зону в которой вы хотите поднять свой VPN-сервер. Создайте новый инстанс, выберите «OS Only» и операционную систему Debian 9.5:

Нам подойдет простейшая машина с 512 Мб оперативной памяти:

Некоторые сайты (например, Авито) необоснованно блокируют визиты с IP-адресов популярных хостеров, считая, что последние часто принимают участие в DDOS-атаках. Чтобы этого не происходило и чтобы мы не делили один IP-адрес с тысячами других машин AWS, перейдем в «Networking» и выделим себе Static IP. Назначим его на созданный нами инстанс:

Осталось скачать приватный ключ для доступа по SSH. Он находится в разделе «Account > SSH keys»:

Скачайте его и загрузите в SSH-клиент. Я настраивал сервер, находясь среди лиан на Бали со своего iPad Pro (да-да, то еще мучение!), используя Termius. Вы же можете использовать любой SSH-клиент, например, встроенный в macOS Terminal.app. В данной инструкции мы будем использовать именно его. Начинаем — открываем Terminal.

В первую очередь, чтобы избежать известной проблемы (у Termius таковой нет) терминала с тем, что называется «локаль», давайте добавим несколько новых строк в локальный файл macOS .profile. Отредактируем его, используя текстовый редактор nano:

nano ~/.profile

И вставим туда следующие строки:

export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8

Сохраним файл с помощью Ctrl+X, закроем терминал с помощью Cmd+Q и запустим его снова.

Теперь перенесем скачанный приватный ключ Lightsail в директорию, где хранятся ключи от SSH:

mv ~/Downloads/YOUR_DOWNLOADED_KEY.pem ~/.ssh

Ограничим ключу права, иначе macOS не позволит его использовать:

cd ~/.ssh/ chmod 600 YOUR_DOWNLOADED_KEY.pem

И подключимся к нашей Lightsail-машине, вписав вместо YOUR_LIGHTSAIL_IP её внешний статический IP-адрес:

ssh -i YOUR_DOWNLOADED_KEY.pem admin@YOUR_LIGHTSAIL_IP

Нас приветствует радостная надпись:

Переходим к настройке Debian

Все манипуляции будем осуществлять из-под пользователя root. Поехали:

sudo su

В первую очередь, обновим индекс пакетов в репозиториях, возможно, есть обновления:

apt-get update

А затем установим эти обновления:

apt-get upgrade

Установка strongSwan

Установим strongSwan:

apt-get install strongswan

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

Генерируем сертификаты доступа

Мы будем использовать самозаверенные сертификаты, поскольку VPN-сервером планируем пользоваться только мы. Для того чтобы создать сертификаты, нам потребуется пакет strongswan-pki. Установим его:

apt-get install strongswan-pki

Переходим к созданию сертификатов. В первую очередь нам нужно создать корневой сертификат, он же “CA” (Certificate Authority), который выпустит нам остальные сертификаты. Создадим его в файле ca.pem:

cd /etc/ipsec.d ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem ipsec pki --self --ca --lifetime 3650 --in private/ca.pem \ > --type rsa --digest sha256 \ > --dn "CN=YOUR_LIGHTSAIL_IP" \ > --outform pem > cacerts/ca.pem

Далее создадим сертификат для нашего VPN-сервера в файле debian.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem ipsec pki --pub --in private/debian.pem --type rsa | > ipsec pki --issue --lifetime 3650 --digest sha256 \ > --cacert cacerts/ca.pem --cakey private/ca.pem \ > --dn "CN=YOUR_LIGHTSAIL_IP" \ > --san YOUR_LIGHTSAIL_IP \ > --flag serverAuth --outform pem > certs/debian.pem

А теперь создадим сертификат для наших устройств в файле me.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/me.pem ipsec pki --pub --in private/me.pem --type rsa | > ipsec pki --issue --lifetime 3650 --digest sha256 \ > --cacert cacerts/ca.pem --cakey private/ca.pem \ > --dn "CN=me" --san me \ > --flag clientAuth \ > --outform pem > certs/me.pem

Для надежности удалим файл ca.pem, он нам больше не потребуется:

rm /etc/ipsec.d/private/ca.pem

Создание сертификатов завершено.

Если сертификаты генерируются слишком долго

Если ваши сертификаты генерируются слишком долго, например, более пяти секунд, это может свидетельствовать о низком количестве энтропии. С подобной ситуацией в свое время я столкнулся у Hetzner на их облачных машинах. Энтропии было слишком мало, и создание сертификатов растягивалось на 40-50 минут, поэтому в конце концов я решил отказаться от их услуг.

Проверить количество энтропии можно запустив еще один сеанс в соседней вкладке:

cat /proc/sys/kernel/random/entropy_avail

Данная команда выведет количество энтропии на момент запроса. Чтобы мониторить энтропию в реальном времени, выполните команду:

watch -n 0.25 cat /proc/sys/kernel/random/entropy_avail

Если энтропии меньше 200, я бы порекомендовал сменить хостера. Или же установить пакет haveged, который якобы генерирует энтропию, однако учтите, что тогда вы действуете на свой страх и риск. У Amazon Lightsail с энтропией обычно всё в порядке, поэтому ключи создаются мгновенно.

Выйти из запроса можно с помощью Ctrl+Z.

Настроим сам strongSwan

Очистим дефолтный конфиг strongSwan командой:

> /etc/ipsec.conf

И создадим свой в текстовом редакторе nano:

nano /etc/ipsec.conf

Вставьте данный текст в него, заменив YOUR_LIGHTSAIL_IP на внешний IP-адрес машины в AWS Lightsail:

include /var/lib/strongswan/ipsec.conf.inc config setup uniqueids=never charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2" conn %default keyexchange=ikev2 ike=aes128gcm16-sha2_256-prfsha256-ecp256! esp=aes128gcm16-sha2_256-ecp256! fragmentation=yes rekey=no compress=yes dpdaction=clear left=%any leftauth=pubkey leftsourceip=YOUR_LIGHTSAIL_IP leftid=YOUR_LIGHTSAIL_IP leftcert=debian.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightauth=pubkey rightsourceip=10.10.10.0/24 rightdns=8.8.8.8,8.8.4.4 conn ikev2-pubkey auto=add

Внимание! strongSwan требователен к отступам в конфиге, поэтому удостоверьтесь, что параметры каждого раздела конфига отбиты через Tab, как это показано на примере, или хотя бы через один пробел, иначе strongSwan не запустится.

Сохраним файл с помощью Ctrl+X и пойдем дальше.

Добавим в файл ipsec.secrets, который является хранилищем ссылок на сертификаты и ключи аутентификации, указатель на наш сертификат сервера:

nano /etc/ipsec.secrets
include /var/lib/strongswan/ipsec.secrets.inc : RSA debian.pem

На этом настройка Strongswan завершена, можно рестартнуть службу:

ipsec restart

Если всё хорошо, то сервер запустится:

... Starting strongSwan 5.5.1 IPsec [starter]...

Если упадет в ошибку, то можно посмотреть, что именно произошло, почитав системный лог. Команда выведет 50 последних строк лога:

tail -n 50 > /var/log/syslog

Настроим сетевые параметры ядра

Теперь нам необходимо внести некоторые изменения в файл /etc/sysctl.conf.

nano /etc/sysctl.conf

Через Ctrl+W найдем в файле следующие переменные и внесем в них изменения:

#Раскомментируем данный параметр, чтобы включить переадресацию пакетов net.ipv4.ip_forward = 1 #Раскомментируем данный параметр, чтобы предотвратить MITM-атаки net.ipv4.conf.all.accept_redirects = 0 #Раскомментируем данный параметр, чтобы запретить отправку ICMP-редиректов net.ipv4.conf.all.send_redirects = 0 ... #В любом месте файла на новой строке добавим данный параметр, запретив поиск PMTU net.ipv4.ip_no_pmtu_disc = 1

Подгрузим новые значения:

sysctl -p

Настройка сетевых параметров ядра завершена.

Настроим iptables

iptables — это утилита, которая управляет встроенным в Linux файрволом netfilter. Для того, чтобы сохранять правила iptables в файле и подгружать их при каждом запуске системы, установим пакет iptables-persistent:

apt-get install iptables-persistent

После установки нас спросят, сохранить ли текущие правила IPv4 и IPv6. Ответим «Нет», так как у нас новая система, и по сути нечего сохранять.

Перейдем к формированию правил iptables. На всякий пожарный, очистим все цепочки:

iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F iptables -Z

Разрешим соединения по SSH на 22 порту, чтобы не потерять доступ к машине:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Разрешим соединения на loopback-интерфейсе:

iptables -A INPUT -i lo -j ACCEPT

Теперь разрешим входящие IPSec-соединения на UDP-портах 500 и 4500:

iptables -A INPUT -p udp --dport 500 -j ACCEPT iptables -A INPUT -p udp --dport 4500 -j ACCEPT

Разрешим переадресацию ESP-трафика:

iptables -A FORWARD --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Настроим маскирование трафика, так как наш VPN-сервер, по сути, выступает как шлюз между Интернетом и VPN-клиентами:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

Настроим максимальный размер сегмента пакетов:

iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360

Запретим все прочие соединения к серверу:

iptables -A INPUT -j DROP iptables -A FORWARD -j DROP

Сохраним правила, чтобы они загружались после каждой перезагрузки:

netfilter-persistent save netfilter-persistent reload

Настройка iptables завершена.

Перезагрузим машину:

reboot

И посмотрим работают ли правила iptables:

sudo su iptables -S
root@XX.XX.XX.XX:/home/admin# iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p udp -m udp --dport 500 -j ACCEPT -A INPUT -p udp -m udp --dport 4500 -j ACCEPT -A INPUT -j DROP -A FORWARD -s 10.10.10.0/24 -m policy --dir in --pol ipsec --proto esp -j ACCEPT -A FORWARD -d 10.10.10.0/24 -m policy --dir out --pol ipsec --proto esp -j ACCEPT -A FORWARD -j DROP

Да, всё работает.

Работает ли strongSwan:

ipsec statusall
root@XX.XX.XX.XX:/home/admin# ipsec statusall Status of IKE charon daemon (strongSwan 5.5.1, Linux 4.9.0-8-amd64, x86_64): uptime: 71 seconds, since Jan 23 23:22:16 2019 ...

Да, всё работает.

Разрешаем соединения в файрволе Lightsail

AWS Lightsail использует также и свой файрвол для защиты виртуальных машин. Выберем наш инстанс, перейдем в «Networking» и разрешим соединения на UDP-портах 500 и 4500. По пути удалим ненужный нам 80-й порт:

Настройка файрвола Lightsail завершена.

Создаем .mobileconfig для iPhone, iPad и Mac

Мы будем использовать один VPN-профайл .mobileconfig для всех наших устройств: iPhone, iPad и Mac. Конфиг, который мы сделаем, устроен таким образом, чтобы инициировать соединение “On Demand”. Это означает, что при попытке любой службы или приложения выйти в Интернет, VPN-соединение будет всегда устанавливаться принудительно и автоматически. Таким образом, удастся избежать ситуации, когда вы забыли установить VPN-соединение, например, после перезагрузки устройства, а трафик в итоге пошел через провайдера, что нам совсем не нужно.

Скачаем скрипт, который сгенерирует для нас данный конфиг:

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/966e8a1b0a413f794280aba147b7cea0661f77a8/mobileconfig.sh

Для того, чтобы скрипт отработал, нам потребуется пакет zsh, установим его:

apt-get install zsh

Отредактируем название сервера по вкусу, а также пропишем внешний IP-адрес машины Lightsail, который мы указывали при создании сертификатов:

nano mobileconfig.sh
... SERVER="AWS Frankfurt" FQDN="YOUR_LIGHTSAIL_IP" ...

Запустим скрипт и на выходе получим готовый файл iphone.mobileconfig:

chmod u+x mobileconfig.sh ./mobileconfig.sh > iphone.mobileconfig

Заберите этот файл с сервера, подключившись с помощью любого SFTP-клиента, например, Transmit или Cyberduck, и отправьте его на все ваши устройства через Airdrop. Подтвердите на устройствах установку конфигурации.

Готово! Соединения с VPN-сервером установятся автоматически.

Приберемся за собой:

rm mobileconfig.sh rm iphone.mobileconfig

Прокачаем безопасность SSH (необязательный пункт)

Наш VPN-сервер уже работает и неплохо защищен, однако, я предлагаю еще немного прокачать безопасность SSH.

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

Вы можете выбрать любой порт по вкусу, начиная с 1024, однако, я рекомендую поискать такой порт, который не был замечен в использовании вирусами, троянами, а также не используется какими-либо известными сервисами, программным обеспечением или производителями оборудования. Найдите себе такой «чистый» порт на SpeedGuide или adminsubnet.

В нашем примере мы будем использовать порт 45323.

Внимание! Не перезапускайте службы SSH и iptables и не перезагружайте машину, пока не пройдете данный раздел до конца, иначе вы потеряете доступ к машине!

Добавим новый 45323 TCP-порт в Lightsail:

Теперь настроим сам SSH:

nano /etc/ssh/sshd_config
#Раскомментируем и пропишем новый порт Port 45323 #Раскомментируем и запретим попытки соединения с пустым паролем PermitEmptyPasswords no #Раскомментируем и настроим автоматический разрыв соединения при бездействии через 360 секунд. Это будет полезно, если вы забыли, что у вас на экране осталась активная сессия и отошли от компьютера. Сервер автоматически разорвет SSH-соединение через 6 минут. ClientAliveInterval 360 ClientAliveCountMax 0

Теперь обновим информацию в правилах iptables и заменим старый порт SSH на новый:

nano /etc/iptables/rules.v4

Заменим «22» в строке

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

на «45323»:

-A INPUT -p tcp -m tcp --dport 45323 -j ACCEPT

Сохраним файл через Ctrl+X и перезапустим машину:

reboot

После перезагрузки сервера проверьте соединение по SSH, добавив флаг «-p» и новый порт:

ssh -i YOUR_DOWNLOADED_KEY.pem admin@YOUR_LIGHTSAIL_IP -p 45323

Всё должно работать.

Не забудьте удалить старый порт 22 в настройках файрвола Lightsail.

Заключение

Итак, мы с нуля настроили свой собственный защищенный VPN-сервер и получили VPN-конфигурации для наших устройств. Теперь весь наш трафик зашифрован и недоступен ни провайдеру, ни администратору Wi-Fi-сети, ни злоумышленникам, которые раньше могли его прослушивать. Теперь мы можем свободно подключаться к любым Wi-Fi сетям, не опасаясь за собственные данные. Кроме того, теперь нам доступны любые ресурсы, заблокированные на территории страны.

Вообще, вы можете создать себе сколько угодно VPN-серверов и переключаться между ними. Если вы часто путешествуете, то можно создать серверы в тех географических зонах, где вы чаще всего бываете: это обеспечит меньший пинг и более высокую скорость передачи данных. Для замера этих параметров удобно использовать приложение Speedtest.

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

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

Всем безопасного серфинга!

Дополнительные материалы к статье:

0
171 комментарий
Популярные
По порядку
Написать комментарий...
Nanokassa_ru

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

Ответить
14
Развернуть ветку
Александр _

Докер-фреймвокер - и куча ламеров себя считает программистами. Ха-ха-ха

vpn поднимается в два пинка и так, а докер еще поставить необходимо, если с нуля конфигурим.

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

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

Поколение некст, бл ;) докер им подавай, ахаха

Ответить
8
Развернуть ветку
Женя Кошкин

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

Ответить
3
Развернуть ветку
Denis Gukov

Если человек не разобрался с тем как установить VPN-сервер вручную, то ему не стоит пробовать Docker, потому что сначала нужно будет разобраться как работает Docker.

Ответить
2
Развернуть ветку
Андрей Хрусталев

Александр, помогите ламеру понять в чем ошибка, а то я уже часа 2 гуглю и ничего не вызодит, а хочется что бы получилось :)
Вот на этом шаге 

cd ~/.ssh/
терминал возвращает
-bash: cd: /Users/a17586379/.ssh/: 

Not a directory
... и дальше дело не идет.
Что делать?

Ответить
0
Развернуть ветку
Антон Пискунов

Выполните: 

ls -lah ~/.ssh/

Если вам сообщили, что по данному пути находится файл, а не папка, то выполните:

mv ~/.ssh/ ~/.ssh_bak

Потом выполните:

mkdir -p ~/.ssh && cd ~/.ssh

Ответить
1
Развернуть ветку
Андрей Хрусталев

Антон, не выходит... Mac OS 10.15.1
Может переустановить ОС ?

Ответить
1
Развернуть ветку
Антон Пискунов

По моему ФИО легко гуглятся контакты. 

Если мотивированы разобраться, то найдёте и напишите мне в вацап, я онлайн и свободен, ближайшие 30 минут.

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

Ответить
0
Развернуть ветку
Erich Remarque

написал Вам в фейсбук, если будет время могли бы мне помочь настроить?

Ответить
0
Развернуть ветку
murda

Точно такая же проблема, если разобрались подскажите пожалста

Ответить
0
Развернуть ветку
Hanna Bilobrova

здравствуйте 

у меня возникли те же трудности
вы нашили решение данной проблемы? 

Ответить
0
Развернуть ветку
Vyacheslav Anzhiganov

> Docker, все это уже написано, и нужно всего пару команд в консоли вместо вашей портянки

а потом удивляемся, откуда столько слитой информации в интернете

Ответить
3
Развернуть ветку
Yegor Yeremenko

Есть пруфы?
(Ещё не вдавался в секурность докера так глубоко)

Ответить
0
Развернуть ветку
Кирилл Жарков

Дело не в докере, а в images для него, которые выкладывают на хабе. Всё быстро, просто, и с бэкдором)

Ответить
3
Развернуть ветку
Yegor Yeremenko

Если докер построен на базовом образе, yml текстовый, куда бэкдор заложить?)

Ответить
2
Развернуть ветку
Коля Павельев

вероятно надо вываливать просто баш скрипт, его проверить куда проще чем образ) и пользоваться смогут все и сразу

Ответить
0
Развернуть ветку
Francis R. Wilkeу

плюсую. и раз уж статью для инженеров написали, то Lightsail нужно было разворачивать сразу с помощью Terraform/Boto3/CloudFormation/AWS CLI.

Ответить
3
Развернуть ветку
Дмитрий Солин

с docker не всё так просто. нужна оптимизированная ос. socks5 proxy over ssh оптимальная альтернатива vpn. я правда не уверен насчёт производительности.

Ответить
0
Развернуть ветку
Семён Бочкарёв

Docker и VPN? Месье определенно знает толк в извращениях.
Docker сам управляет сетями, причём делает это плохо. А если вы еще и перенастройку маршрутизации для VPN-сервера туда засунете, эта связка рискует не заработать.
Кроме того, iptables настраивать всё равно придется на хосте.

Ответить
0
Развернуть ветку
Valeriy Roshko

Полезно, странно, что здесь, а не на хабре) Или там тоже есть?)

Ответить
8
Развернуть ветку
Denis Kiselev

Несколько немного субъективных моментов в статье есть.

Почему aws, почему нет azure. DO тоже норм. Можно scaleway вспомнить ещё.

Почему именно Debian - мануалов по убунте чуток побольше. С другой стороны - дело вкуса.

Почему именно такой конфиг профиля? Можно объяснить.

Но хорошее руководство - пусть грамотность народа повышается. Может, кого то зацепит - и кто то начнёт поднимать свои сервера. Это не так сложно

Ответить
1
Развернуть ветку
Oleg Borisov

На хабре итак знают что делать)

Ответить
0
Развернуть ветку
Dmitry Porkhaev

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

Уже больше года пользуюсь.

А так же сделал себе MT-Proxy для ТГ

Ответить
5
Развернуть ветку
Нурболат Хамитов
Ответить
0
Развернуть ветку
Семён Бочкарёв

Любопытно! IPSec-сервера обычно не рассматриваются в таких гайдах.

Единственное «но» — Amazon не самое подходящее решение. Во-первых, трафик там тарифицируется, и влетит в копеечку. Во-вторых, его сервера банят с большим удовольствием. Лучше брать малопопулярного хостера в Гонконге.

Ответить
3
Развернуть ветку
Oleg Borisov

Lightsail дает 1ТБ включенного трафика в инстансе за 3,5 доллара. Мне пока ни разу не удавалось сжечь более 300Гб в месяц с трех устройств.

Ответить
1
Развернуть ветку
Gluch Nolwar

Плюсую, пока мой лимит по трафику не превышал 700гб, и терабайта за глаза хватает.

Олег, спасибо за статью, прям до слез ностальжи :)

Ответить
1
Развернуть ветку
Asia Tuning

как с вами можно связаться? нужна ваша помощь

Ответить
0
Развернуть ветку
Александр Головченко

А при такой реализации что с устойчивостью к DPI?

Ответить
3
Развернуть ветку
Denis Kiselev

Смотреть надо на практике! Dpi он разный бывает.

Вообще, не думаю что у нас на данном этапе будут массово использовать dpi на магистралях

Ответить
0
Развернуть ветку
Владислав Булатов

Подскажите, что делать?

Ответить
1
Развернуть ветку
Вася Пражкин

Купить готовый VPN-аккаунт.

Ответить
6
Развернуть ветку
Владислав Булатов

да это есть, я хочу вот так попробовать)

Ответить
0
Развернуть ветку
Вася Пражкин

Владислав, лучше довериться профессионалам, чем самому конфигурить IPSEC VPN-сервер. Вы потратите много времени и есть немалый риск, что Ваша конфигурация будет уязвимой. Автор данной статьи имеет небольшой опыт в системном администрировании и я бы не советовал пользоваться его советами, кроме как для тестов.

Ответить
4
Развернуть ветку
Denis Kiselev

Ну - не драматизируйте. Человек же не к кибер-атаке на госорган страны-партнера готовится

Ответить
0
Развернуть ветку
Вася Пражкин

Ага, всего лишь еще несколько десятков дырявых серверов для спамеров и ддосеров.

Ответить
0
Развернуть ветку
Аркадий Чумаков

Карту не привязали. После привязки пойдет

Ответить
0
Развернуть ветку
Sergey Redmi

Вот! В этом и проблема таких мануалов. Мол, всё просто, но на деле возникает куча подводных камней, про которые автор не пишет. И так будетна каждом этапе. То драйвера не подойдут, то библиотеки нет, то прав нет, то версии либ не совпадают, то ссылка мёртвая, то вообще всё нафиг устарело

Ответить
0
Развернуть ветку
Владислав Булатов

Проще купить)

Ответить
0
Развернуть ветку
Vladimir Petrosov

Копи-паст статьи на Хабре, честно говоря
Видел похожу, когда поднимал VPN года 2 назад

Ответить
–4
Развернуть ветку
Oleg Borisov

Скиньте ссылку? На русском мне не удалось найти ни одной статьи, которая бы базировалась на использовании сертификатов (не паролей), IKEv2 (не OpenVPN), Debian (не Ubuntu), и на выходе делала бы готовые универсальные VPN-профайлы для всего парка Apple-устройств.

Ответить
3
Развернуть ветку
Евгений Батищев

А опишите процедуру для win и andr ?

Ответить
3
Развернуть ветку
Mikhail Aleksandrovich

Точно также

Ответить
–1
Развернуть ветку
Евгений Батищев

VPN профайлы? Вы уверены?

Ответить
1
Развернуть ветку
Артём Королёв

Подскажите, а как можно ещё использовать данный виртуальный сервер, помимо vpn, чтобы использовать его по полной.
Возможно сервер умного дома?
Торренты? (В исключительно законных целях конечно)
Развернуть свой небольшой сайтик?

Ответить
0
Развернуть ветку
Сергей Владимирович

А у меня на сервере поднят docker. В одном контейнере openvpn сервер, поднимается в 5 команд, клиент есть под все известные платформы. В другом контейнере - база данных, в третьем веб приложение. Живет (и шевелится) это все на хосте centos с 1гб оперативки, 1ггц проц. Невероятно удобно админить, причем хостовая машина абсолютно “чистая” (не сравнить с вариантом «стрейзен», к тому же можно рядом поднять контейнер с ikev2, если что-то не так)

Ответить
4
Развернуть ветку
sardelkin

shadowsocks
mtproto proxy

Ответить
0
Развернуть ветку
Руководящий томагавк_два

Комментарий удален по просьбе пользователя

Ответить
0
Развернуть ветку
Mike Kosulin

Не стоит накатывать прокси под телеграм на сервак, который планируется еще как-то использовать. Блок РКН запросто получить.
Потом придется IP или подсеть менять

Ответить
0
Развернуть ветку
Yegor Yeremenko

Pihole - режет всю рекламу на сайтах через фильтрацию DNS. Кроме Ютуба и конечно же Инстаграма.
Pihole работает после openvpn. То есть с Андроида заходишь через openvpn, и трафик через тоннель ещё очищается от рекламы

Ответить
0
Развернуть ветку
Дмитрий Букреев

Что только люди не делают, лишь бы не использовать готовый VPNHUB

Ответить
1
Развернуть ветку
Mark Rapida Gromov

это же обычный впн-сервис, каких вагон. Не самое надежное решение

Ответить
1
Развернуть ветку
Danil V Yudanov

Кому лень разбираться с консолью, попробуйте Outline. Не благодарите

Ответить
1
Развернуть ветку
Алексей Ландырев

Вот, да, пришёл сюда чтобы написать про Outline.

В Digital Ocean сам всё поднимет по кнопке, в других облаках достаточно будет запустить одну (!) команду на виртуалке, чтобы поднять свой VPN

Ответить
1
Развернуть ветку
Психологический щит

Комментарий удален по просьбе пользователя

Ответить
0
Развернуть ветку
zibx zibx

Входит. Весь трафик оборачивается в асимметричное шифрование.

Ответить
1
Развернуть ветку
Психологический щит

Комментарий удален по просьбе пользователя

Ответить
0
Развернуть ветку
Андрей Еселевский

И ты не написал самое главное, как этот конфиг снести из макоси? он даже не отключается

Ответить
1
Развернуть ветку
Oleg Borisov

Если притушить, то в Системных настройках > Сеть выбрать соединение и снять галку на «Connect on demand» и нажать Apply.
Если удалить, то нажать нажать удаление и нажать Apply.

На iOS: Settings > Profiles.

Ответить
0
Развернуть ветку
Андрей Еселевский

Каким образом можно просто отключить на время? этот метод не работает т.к впн сразу переподключается

Ответить
0
Развернуть ветку
Alexey Khaliullin

Вот на этом шаге

cd ~/.ssh/

терминал возвращает

-bash: cd: /Users/a17586379/.ssh/: Not a directory

... и дальше дело не идет.

Что делать?

Ответить
1
Развернуть ветку
Андрей Хрусталев

и у меня аналогичная проблема.. помогите плз!

Ответить
0
Развернуть ветку
Hanna Bilobrova

здравствуйте

вы нашли решение ? если да помогите и мне пожалуйста 

Ответить
0
Развернуть ветку
Eugene Makarov

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

Ответить
0
Развернуть ветку
Denis Kiselev

Любой ip можно заблокировать. Только зачем ркн блокировать ip вашего vpn сервера в заграничном облаке? На основании чего?

Ответить
2
Развернуть ветку
Eugene Makarov

Чисто гипотетически.

Ответить
–1
Развернуть ветку
Denis Kiselev

Блокировка должна иметь законное основание. Даже для «резиновых» блокировок - оно тоже нужно. Экстремизм там с этих ip (хотя это и cdn), или ещё что то формальное. Просто так - нельзя блокировать. Можно сходить с жалобой - в суд, прокуратуру и тп.

Ответить
0
Развернуть ветку
Алексей Чубов

При создании сертификатов в командах надо вставлять IP своей инстанции вместо
"CN=YOUR_LIGHTSAIL_IP" ?

Ответить
0
Развернуть ветку
Oleg Borisov

Да, например, если внешний IP инстанса 3.3.3.3, то в коде должно быть так:
"CN=3.3.3.3"

Ответить
1
Развернуть ветку
Алексей Чубов

Олег, тогда при создании me.pem
вместо "CN=me" что писать?

Ответить
0
Развернуть ветку
Oleg Borisov

В этом случае так, как и указано:
"CN=me"

Ответить
1
Развернуть ветку
Андрей Еселевский
Ответить
0
Развернуть ветку
Mark Rapida Gromov

может, он весь пул адресов amazon блочит? Можно взять менее известные vps

Ответить
1
Развернуть ветку
Oleg Borisov

Хз, может какая-то другая причина, или этот диапазон Static IP попал в очередной странный блэклист Авито. Когда Авито у меня не работал на Лондоне, я писал им неоднократно в поддержку об абсурдности их ограничений, но они невменяемы. Там в ответ идут стандартные скрипты в духе «попробуйте зайти позднее/обратитесь к провайдеру/устраните активность/выделите себе static ip/еще какая-то муть». То, что это итак static ip они не хотят слушать.

Я полагаю, что у них где-то в блэклистах залочен пул адресов Амазона. Не исключаю также, что это может быть как-то связно с первыми блокировками телеграма, когда РКН вырубил половину Амазона в принципе.

На Франкфурте же все работает и работало. США тоже работает.

Ответить
0
Развернуть ветку
Андрей Еселевский

Я же написал что Франкфурт

Ответить
0
Развернуть ветку
Oleg Borisov

Я понял. Я вам отвечаю, что у меня лично на Франкфурте все работает. Может имеет смысл пересоздать Static IP. Поскольку каждый раз при создании Static IP, у Amazon он выдается из совершенно разных диапазонов.

Ответить
0
Развернуть ветку
Владислав Булатов

Что делать-то? В вашей инструкции ничего про это не написано. Я создал уже 9 аккаунтов и везде одно и тоже

Ответить
0
Развернуть ветку
One Two

9? 😂 памагите уже человеку

Ответить
2
Развернуть ветку
Nick Chernyshev

Олег, расскажи пожалуйста, как создавался файл .mobileconfig

Ответить
0
Развернуть ветку
Nick Chernyshev

Не sh generator конечно, а сами XML внутренности, я так понял это с помощью утилиты AppleConfigurator, но там как то не совсем очевидно все.

Ответить
0
Развернуть ветку
Oleg Borisov

Генератор я нашел на просторах сети, подправив несколько моментов, например, чтобы VPN-соединение стало "On demand". У Apple есть внушительный мануал на эту тему: https://developer.apple.com/business/documentation/Configuration-Profile-Reference.pdf

Ответить
1
Развернуть ветку
Макс Чародей

Олег, спасибо, прекрасный мануал, получилось запустить свой VPN сервер с первого раза. Подскажите, как сгенерировать VPN-профайл для windows?

Ответить
0
Развернуть ветку
Алексей Чубов

Макс, получилось победить Windows? Если да, то пожалуйста расскажите. На андройде у меня все заработало, а вот виндовс пока не хочет ((

Ответить
0
Развернуть ветку
Анастасия Новикова

А как на андройде запустить эти конфиги?блин столько мучились пилить все это и в конце статьи облом, про эпл надо было в начале писать

Ответить
0
Развернуть ветку
Алексей Чубов

Надо поставить приложеньку strongSWAN. В ней настроить подключение. Настроек там не много: IP адрес и сертификат. Сертификат импортировать с помощью этой же программы. Подключение у меня заработало, только когда в сертификате был еще и ключ СА, в противном случае в логе была ошибка про недоверие к корневому центру. Т.е. в моем сертификате был открытый ключ + закрыты + СА сертификат. Кто-то выше  или ниже тут писал уже, как такой сделать с помощью команды openssl. Windows я тоже в итоге победил.

Ответить
0
Развернуть ветку
Сергей Евгеньевич

А можете рассказать как победили windows?

С андроидом действительно просто получилось. Спасибо!
Собрал сертификат командой "openssl pkcs12 -export -inkey /etc/ipsec.d/private/me.pem -in /etc/ipsec.d/certs/me.pem -name "me" -certfile /etc/ipsec.d/cacerts/ca.pem -out cert.p12"

Ответить
0
Развернуть ветку
Алексей Чубов

Привет. Долбался наверное пару недель. В результате чего, неожиданно все заработало. 

В реестре виндовса надо прописать ряд ключей. Я их сделал в виде Reg файла.

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\IKEv2]
"CustomParams"=dword:00000001
"CustomProposalsCount"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\IKEv2\Proposals]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\IKEv2\Proposals\0]
; for "Quick Mode", all keys optional
; DES, 3DES, AES_128, AES_256
"esp_encr"="AES_128"
; MD5, SHA1
"esp_auth"="SHA1"
; MD5, SHA1
;"AH"="SHA1"
; NONE, 1, 2, 2048, ECP_256, ECP_384, MM
;"PFS"="MM"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters]
"AllowL2TPWeakCrypto"=dword:00000000
"AllowPPTPWeakCrypto"=dword:00000000
"NegotiateDH2048_AES256"=dword:00000001

Еще поменял вот эту строку

ike=aes128gcm16-sha2_256-prfsha256-ecp256!
esp=aes128gcm16-sha2_256-ecp256!
в конфигурации сервера, добавив еще один метод шифрования для винды. Но сейчас не помню какой.

Ответить
1
Развернуть ветку
Сергей Евгеньевич

Благодарю за ответ!

Ответить
0
Развернуть ветку
Алексей Чубов

 см след комментарий

Ответить
0
Развернуть ветку
Сергей Евгеньевич

так и не победил, при подключении - "Ошибка сопоставления групповой политики"

с конфигом, пробовал разные варианты, но все мимо(

ike=aes128gcm16-sha2_256-prfsha256-ecp256,aes256gcm16-prfsha256-ecp521,aes256-sha256-ecp384!

esp=aes128gcm16-sha2_256-ecp256,aes256gcm16-ecp384!

Ответить
0
Развернуть ветку
Алексей Чубов

Зашел на машину посмотрел. Сейчас у меня такой. Возможно какие-то из них следует повыкидывать, но я дальше не разбирался.

ike=aes256-aes128-sha256-sha1-modp3072-modp2048-modp1024
esp=aes256-aes128-sha256-sha1-modp3072-modp2048-modp1024

Ответить
1
Развернуть ветку
Сергей Евгеньевич

Спасибо! Все получилось! )

Ответить
1
Развернуть ветку
Макс Чародей

Алексей, победить не удалось.

Ответить
0
Развернуть ветку
Oleg Borisov

Макс, рад, что все удалось! По Windows, к сожалению, не подскажу, последний раз пользовался этой ОС много лет назад.

Ответить
0
Развернуть ветку
Макс Чародей

Ну, спасибо и на этом )

Ответить
0
Развернуть ветку
Владимир Петров

Олег, спасибо за исчерпывающий мануал.
При попытке установить профиль iphone.mobileconfig на MacBook появляется ошибка " Profile installation failed" "Error = -50"
При попытке установить профиль на iPhone появляется ошибка "Сбой установки профиля. Пароль для сертификата "me.p12" неверен.
Подскажите где искать причины таких ошибок?

Ответить
0
Развернуть ветку
Oleg Borisov

Вероятно, что-то сделали не так.

Ответить
0
Развернуть ветку
Mikha Stas

Скорее всего неправильно сгенерировали сертификаты. Там где в скрипте символ ">" означает что команды надо вводить последовательно, сам символ вводить не надо!

Ответить
0
Развернуть ветку
Better than Leonid

Объясните новичку, VPS я создал, всё прописал, всё работает. Как теперь пропускать трафик с рабочей машины Linux через VPS? Ну то есть, как использовать VPN теперь? Что ещё надо сделать. Сервер стоит, а что делать дальше я не знаю. Мне нужно подключаться пропускать трафик через VPN с рабочей станции Linux.

Ответить
0
Развернуть ветку
Андрей Еселевский

После ввода ipsec pki --pub --in private/debian.pem --type rsa |
выходит строка с > что туда вводить? у вас далее другая команда идет

Ответить
0
Развернуть ветку
Oleg Borisov

Упустил символ ">", который должен появиться после этого места, пардонюсь.

Вводите дальше:
ipsec pki --issue --lifetime 3650 --digest sha256 \

и далее по списку.
Сами символы ">" вводить, конечно, не нужно.

Ответить
0
Развернуть ветку
Андрей Еселевский

Авито все равно не работает

Ответить
0
Развернуть ветку
Oleg Borisov

Если вы на Лондоне то да, на него часто Авито ругается на якобы DDOS, на Франкфурте все всегда ок.

Ответить
0
Развернуть ветку
Андрей Еселевский

Франкфурт

Ответить
0
Развернуть ветку
Denis Kiselev

Не повезло. Проверьте ip по спискам блокировки. Если ркн блокирует - попросите в поддержке сменить его.

Ответить
0
Развернуть ветку
Александр Константинов

Почему так все переживают за Авито?)

Ответить
0
Развернуть ветку
Андрей Еселевский

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

Ответить
0
Развернуть ветку
zibx zibx

Авито борется с парсингом базы. Если через один забугорный ип одновременно несколько пользователей будут просматривать сайт, то ип заблочат. И обращение в техподдержку с рассказом что у нас в компании весь траффик завернули на роутерах когда ркн умудрился npm заблочить — не помогло. При этом они ещё и нагло врут в формулировке «Доступ с вашего IP-адреса временно ограничен» — блокировка держится уже больше года. В следствии чего почти все сотрудники ушли к их конкурентам.

Ответить
0
Развернуть ветку
Александр _

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

только вот мышки, те что кактус кушают, предпочитают заходить с парадного входа и разгадывать капчи ;)

Ответить
0
Развернуть ветку
Eugene Makarov

Я чисто гипотетически.

Ответить
0
Развернуть ветку
Mark Rapida Gromov

Вы можете выбрать любой порт по вкусу, начиная с 1024

для ssh диапазон портов 1025-65535 же, не?

Ответить
0
Развернуть ветку
Mark Rapida Gromov

хотя, если забить на инструкции, можно хоть нулевой порт забить

Ответить
0
Развернуть ветку
Кирилл Бородин

Спасибо! Отличная и подробная статья. Даже неожиданно на этом ресурсе.

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
QKun

Все очень круто, но кто пользуется facebook в 2019?!

Ответить
0
Развернуть ветку
Самуил Маршак

222 закладки! это потому, что автор сказал не покупать vpn ? реально сами настроите ? в покупных vpnах всякие double, onion, резалки рекламы, тысячи серверов (если некоторые вдруг не отвечают). Ну куда против этого с собранным на linux (коленке) vpnом ?си платить за сервер всё равно придется. И даже больше чем некоторые популярные vpn берут за месяц. Эта инструкция станет популярнее, когда заблочат vpn сервисы все, ну и то если ее перечитают еще раз 10 и упростят.

Ответить
0
Развернуть ветку
Александр _

В курсе, сколько стоит vps у scaleway? ;) А под личное использование просто за глаза.
По сравнению с арендой vps цены на vpn-сервисы просто космос

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

Некоторые, вон, за iptv деньги платят. А я не плачу, дырки найдутся, стримов килотонны.

Ответить
0
Развернуть ветку
Francis R. Wilkeу

можно сделать самому дешевле, если автоматизировать развертку сервера и отключать его при простое. тогда при использовании VPN, например, в течение 100 часов в месяц выходит всего 47 центов. правда warning: 1 ТБ трафика.

Ответить
0
Развернуть ветку
Francis R. Wilkeу

Все же решил на Lightsail поднять VPN-сервер себе, обнаружил несколько моментов:
1) Algo неплохая штука, ей можно и сервер в Lightsail поднять. Но мне свои aws_access_keys отдавать не хотелось :)
2) Под OpenVPN на centos я терял примерно 75% пропускной способности домашнего интернета
3) Мне очень хочется использовать VPN нативно под macOS и iOS, поэтому надеялся на IPSec (и ваш туториал). Но я теряю 99% пропускной способности на скачивание и 50-60% на выгрузку. Видимо все же OpenVPN =\
Но в любом случае статья оказалась полезной, спасибо. Не хватает все же баш-скрипта, который бы все в один клик делал.
Настраивать себе сервера через эмулятор терминала на iPad - боль. Хотя с iPadOS в будущем должно быть чуть-чуть приятнее.

Ответить
0
Развернуть ветку
Viktor Kuznetsov

В смысле Streisand заточен под OpenVPN?
Он поднимает сразу несколько серверов на разных реализациях.
Из тех что работают в Китае (зимой работало, по крайней мере) - wireguard, shadowsocks.

Ответить
0
Развернуть ветку
Владимир Петров

Олег, спасибо за исчерпывающий мануал.
При попытке установить профиль iphone.mobileconfig на MacBook появляется ошибка " Profile installation failed" "Error = -50"
При попытке установить профиль на iPhone появляется ошибка "Сбой установки профиля. Пароль для сертификата "me.p12" неверен.
Подскажите где искать причины таких ошибок?

Ответить
0
Развернуть ветку
Alexander K.

Отличная инструкция, только не понял как подключиться роутером на прошивке Asus padavan.

Ответить
0
Развернуть ветку
Alexander K.

Затупка на это пункте А теперь создадим сертификат для наших устройств в файле me.pem:
вместо me какой ip надо вписывать?

Ответить
0
Развернуть ветку
Oleg Borisov

Александр, в me.pem ничего писать не нужно. Ровно то, что написано в блоке кода.

Ответить
0
Развернуть ветку
Alexander K.

Олег, Здравствуйте. Я имел ввиду в параметрах --dn "CN=me" --san me \
Какой ip роутера 192.168 или интернетовский вводить?
у меня в роутере уже есть strongswan. но конфиг ipsec.conf никак не придумаю, для соединения с vpn на Амазон. Если добавите инструкцию для настройки клиента на роутере через консоль, буду рад. у меня обычный роутер Asus rt-n56u с прошивкой Падаван.

Ответить
0
Развернуть ветку
Alexander K.

Олег Здравствуйте. Как подключиться из роутера в консоли? какой ipsec.conf?
Strongswan на роутере имеется.

Ответить
0
Развернуть ветку
balkankar balkanakar

А не проще пользоваться нормальным сервисом по типу https://www.altvpn.com/ru/ те же деньги, только безопаснее и без лагов...

Ответить
0
Развернуть ветку
Alexander K.

Безопаснее и без лагов сомневаюсь, это коммерческий vpn.

Ответить
0
Развернуть ветку
Alexander K.

Олег здравствуйте, буду рад если напишете инструкцию, как подключаться роутером с консольной настройкой. тут по идее проще туннель поднять.
Лично я так и не смог запустить. отправляет пять пакетов и дальше peer is not responding.

Ответить
0
Развернуть ветку
An Du

Сообщение удалено

Ответить
0
Развернуть ветку
An Du

Мне тоже не удается установить профиль ни на телефон, ни на планшет - Could not install a profile due to an unknown error.
Всё делал по инструкции.

Ответить
0
Развернуть ветку
Роман Морозов

У сервисов типа Nord или Windscribe или тот же Hideme есть российские сервера, подключаясь к которым без проблем есть доступ к заблокированным ресурсам. Если всё же арендовать хостинг в России поднять VPN, доступ будет или нет?

Ответить
0
Развернуть ветку
Alexander K.

Олег привет. клиент на роутере что то не прёт
Sep 5 18:49:50 syslog: 04[NET] sending packet: from home inet ip[500] to aws ip[500]
Sep 5 18:51:06 syslog: 15[MGR] checkout IKEv2 SA with SPIs 48658e0100e22710_i 0000000000000000_r
Sep 5 18:51:06 syslog: 15[MGR] IKE_SA nat-t[1] successfully checked out
Sep 5 18:51:06 syslog: 15[IKE] giving up after 5 retransmits
Sep 5 18:51:06 syslog: 15[IKE] establishing IKE_SA failed, peer not responding
Sep 5 18:51:06 syslog: 15[MGR] checkin and destroy IKE_SA nat-t[1]
Sep 5 18:51:06 syslog: 15[IKE] IKE_SA nat-t[1] state change: CONNECTING => DESTROYING
Sep 5 18:51:06 syslog: 15[MGR] checkin and destroy of IKE_SA successful

Ответить
0
Развернуть ветку
Mk Kop

Сделал все по инструкции, все заработало с первого раза !! На 2 iPhone осталось только прицепить андроид и вин с этим проблема

Ответить
0
Развернуть ветку
Mk Kop

странно что автор удалил для надежности ca.pem, но оставил его в /etc/ipsec.d/cacerts/ и далее он используется в генерации конфига mobileconfig для генерации контейнера p12 включающего сертификаты me и ca

Ответить
0
Развернуть ветку
Alexander K.

Добрый вечер, в роутере есть Strongswan Ipsec так и не получилось подключиться. какой конфиг для роутера?

Ответить
0
Развернуть ветку
Mk Kop

в роутере нужен клиент для IKEv2 и CA сертификат, вот здесь более подробно расписано как подключаться с разных клиентов 

Ответить
0
Развернуть ветку
Alexander K.

Там тоже нету. есть Windows, iOS, and macOS

А вот конкретно как роутер настроить в качестве клиента нету.

Ответить
0
Развернуть ветку
Mk Kop

там есть Connecting from Ubuntu

Ответить
0
Развернуть ветку
Джафар Гифар

Подскажите кто нибудь, Как сделать vpn файл под win + android, пожалуйста!

Ответить
0
Развернуть ветку
Mk Kop

openssl pkcs12 -export -inkey /etc/ipsec.d/private/me.pem -in /etc/ipsec.d/certs/me.pem -name "me" -certfile /etc/ipsec.d/cacerts/ca.pem -out cert.p12

Ответить
0
Развернуть ветку
Анастасия Новикова

Можно поподробней пошагово что сделать?

Ответить
0
Развернуть ветку
Рустам Шайнуров

Сертификат не скачивается. 
При создании задаю пароль. А на самом устройстве данный пароль не подходит.
Подскажите что делать?

Ответить
0
Развернуть ветку
Анастасия Новикова

Как к андройду прикрутить эту инструкцию?дошли до конца скачали mobileconfig.sh и в конце статьи облом под эплы(

Ответить
0
Развернуть ветку
Mk Kop

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-16-04?ref=vc.ru вот более подробная инструкция с шагами под все платформы, с текущей инструкциеей под вин10 работать не будет, т. к методы аутентификации разные. В комментах к статье описаны дополнительные пакеты что необходимо доставить для вин 10

Ответить
0
Развернуть ветку
Tymothy Phil

Выполнил по статье всё, - айфончик подключается к VPN, появляется значок VPN вверху экранчика, присваивается ip-адрес 10.10.10.1 - но ни одного сайта открыть не удается! Подскажите плз - куда рыть?

Ответить
0
Развернуть ветку
Tymothy Phil

Выполнил по статье всё, - айфончик подключается к VPN, появляется значок VPN вверху экранчика, присваивается ip-адрес 10.10.10.1 - но ни одного сайта открыть не удается!
на VPN-сервере пинговал адрес 10.10.10.1 - шикарно пингуется, то есть сервер видит клиента.
64 bytes from 10.10.10.1: icmp_seq=361 ttl=64 time=73.4 ms

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

сличал побуквенно правила ipsec по выводу ipsec -S - совпадение полное...

что же сделать чтобы сайты на айфоне открывались?
сервер VPN размещен на домашнем компе на виртуальной машине (не на каком-либо облаке или стороннем прове, просто дома установлен ESXi и на нем с пяток виртуальных машин, в инет ходят через роутер Ростелекома)

Ответить
0
Развернуть ветку
Таможня Дает-Добро

1

Ответить
0
Развернуть ветку
Таможня Дает-Добро

У меня не было интерфейса с именем eth0. Вместо него - интерфейс ens192, что выяснилось командой ifconfig. Перенабрал строки маскарадинга с правильным наименованием интерфейса - и всё залетало!

Ответить
0
Развернуть ветку
Дмитрий Брагин

Кто смог завести на android? сертификат импортировал но выдает ошибку логина пароля, от куда их взять, я прописал 

в файле /etc/ipsec.secrets 

lol %any% : EAP "lolkek" 

но они не проходят

Ответить
0
Развернуть ветку
Sergey Solovyev

Здравствуйте Олег, я повторил все манипуляции по данной статье о создании   VPN. Скачал профайл, но при установке на айфоне и маке выдает ошибку -50

Ответить
0
Развернуть ветку
Лаврентий Эрик Джугашвили

Олег, классная статья! Впервые все с первого раза по инструкции из инета взлетело. Круто!
Но есть вопрос.
Можно как то с вами связаться, есть необходимость в консультации по продолжению этой тематики.

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

такое в принципе реализуемо? Можете как то помочь настроить? 

Ответить
0
Развернуть ветку
Oleg Borisov

Лаврентий, рад, что все удалось. К сожалению, не смогу вас проконсультировать, системное администрирование в принципе не мой профиль. Любой фрилансер решит вашу задачу кратно быстрее, поэтому рекомендую поискать такого на каком-нибудь сайте типа freelansim.ru.

Ответить
0
Развернуть ветку
Лаврентий Эрик Джугашвили

Олег, в любом случае, благодарствую)!

Ответить
0
Развернуть ветку
Erich Remarque

Олег, приветствую. 
А вот я не такой удачливый и у меня не взлетело... Может у Вас найдется как-нибудь минут 10-20 что бы помочь и мне? :)

Ответить
0
Развернуть ветку

Комментарий удален

Развернуть ветку
Антон Константинов

Отличная статья ! Поднял свой собственный сервер, накатил на него debian и идя по данной инструкции настроил vpn. Спасибо все доходчиво !

Интересно вот что:
Если весь трафик между VPN сервером и клиентом шифруется, хорошо! Но ведь при подключении клиента к VPN серверу, клиент начинает ходить в интернет используя интернет и IP адрес сервера ( так сказать ), соответственно можно спокойно отследить сервер через который ходит клиент, после можно поставить снифер на внешний ip адрес сервера и все ресурсы на которые ходят клиент, становятся доступным для провайдеров и других желающих верно  ?

Не совсем понял, как VPN сервер защищает от злоумышленников и провайдеров.

Интересно, можно ли скрыть или изменять IP адрес VPN сервера ?

И еще вопрос, как создать файл подключения клиента к серверу с функцией, ручного подключение к сети VPN а не как сейчас в автоматическом режим ?

Ответить
0
Развернуть ветку
Антон Константинов

Подскажите пожалуйста, как запустить файл конфигурации на iPhone ? ( с помощью какого ПО надо запускать файл на iPhone ? Пишет: Ошибка файл не открывается ). 
На Mac конфигурация добавляется автоматически при запуске файла, работает без ошибок.

Ответить
0
Развернуть ветку
Антон Константинов

Вопрос решен — отправляя файл конфигурации через AirDrop, телефон предлагает сразу установить настройки.

Если кто-то знает, как файл конфигурации для клиента можно отправить и установить не используя AIRDrop - просьба написать.

Ответить
0
Развернуть ветку
Глеб Богданов

Отправить файл почтой и открыть с iOS через штатный почтовый клиент или Safari

Ответить
0
Развернуть ветку
Eugene Martinson

Спасибо за статью - с первого раза все завелось!

Такой вопрос - в случае если какой-то сайт недоступен (как в случае с avito в комментариях) что нужно сделать:

1. Поднять новые VPN сервер - в смысле прям купить новый тариф на Lightsail или нужно как-то поменять расположение уже сервера?

2. Еще был рекомендация сменить статический IP - если я правильно понял - в этом случае всю процедуру по созданию сертификатов.

И в конфиге для strongSwan - нужно заменить настройки `conn %default` с указанием нового адреса или можно завести еще одну настройку в конфиге типа `conn %newconn`.

Затем создать новый mobileconfig с новым статичным адресом.

И таким образом перебирать статические адреса пока не найду который работает?

Как можно в случае собственно поднятого VPN автоматизировать переключение серверов?

Ответить
0
Развернуть ветку
Дмитрий Улыбышев

Ув. Олег спасибо за статью, немного помучился, но в итоге все сделал. Значек VPN горит постоянно, но интернета нет.(((

Вопрос вот в чем. Тот статический IP адрес должен ли он пинговаться с любого компьютера? А если не пингуется то это ли причина того что интернета нет. И тогда мне просто надо найти регион чей адрес будет давать отклик в командной строке и все перенастроить?

Ответить
0
Развернуть ветку