Создаем свой vpn сервер пошаговая инструкция

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

Последнее обновление статьи: 22 марта 2022 года.

Инструкция была обкатана и проверена сотни раз и гарантированно сработает без каких-либо ошибок, если вы будете ей следовать. Актуальна для всех версий macOS, вплоть до macOS Monterey, а также всех версий iOS, вплоть до iOS 15.3+.

Настройка займет от 15 минут времени, в зависимости от скорости вашей работы.

Оглавление:

  • Преамбула
  • Немного теории: как работает VPN
  • Плюсы использования VPN
  • Недостатки VPN
  • О коммерческих VPN-сервисах: NordVPN, ExpressVPN, Cyberghost, и почему не стоит их использовать
  • В какой стране поднять свой VPN-сервер
  • Выбираем хостера и инструментарий
  • Сама инструкция по созданию собственного VPN-сервера на базе Linux Debian

Преамбула

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

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

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

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

Использование VPN — оптимальное решение двух обозначенных проблем сразу. Мы получаем доступ к заблокированным в стране ресурсам, а по пути еще и защищаем себя от прослушки.

Реализовать VPN можно двумя способами:

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

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

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

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

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

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

Сначала будет немного теории для понимания происходящего, желающие же сразу могут перейти к инструкции.

Немного теории: как работает VPN

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

Для простоты понимания можно представить, что основной канал провайдера — это большая труба, а внутри этой трубы вы прокладываете свою собственную, защищенную, отсекая всем доступ в нее. И через эту трубу попадаете на свой сервер и сидите в Интернете как бы со своего сервера: там, где он физически располагается. That’s all.

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

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

Плюсы использования VPN

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

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

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

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

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

Недостатки VPN

  • Некоторые сайты начнут загружаться на языке страны, в которой располагается VPN-сервер. Однако, это легко исправить. Чаще всего мы приходим на какие-либо сайты через поиск в Google, и достаточно один раз настроить его выдачу на нужные вам языки, и с этого момента вы будете направляться на сайты с нужной вам локализацией. В конце концов, всегда можно выбрать другой язык на самом сайте.

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

  • В играх, критичных к пингу, а ля CS:GO, VPN придется выключать.

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

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

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

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

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

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

В целом: не делайте этого.

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

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

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

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

Выбираем хостера и инструменты

Выбираем хостера

Внимание!

С 8 марта Amazon Web Services (AWS) закрыл регистрацию аккаунтов из России. Услуги же прочих зарубежных хостеров невозможно оплатить из-за неработающих карт Visa/MasterCard.

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

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

Наиболее популярные хостинговые компании сегодня:

  • Amazon Web Services (AWS)
  • DigitalOcean
  • Hetzner
  • Vultr
  • Bluehost
  • Arubacloud
  • и прочие, которые вы найдете в бесчисленных топиках на форумах в духе «где поднять свой VPN-сервер»

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

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

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

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

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

Использование VPN-сервера на базе AWS Lightsail будет обходиться вам в $3,5/мес.. За эти деньги вы получаете машину с 512 Мб оперативной памяти. Подобная конфигурация легко справляется с обработкой VPN-трафика с трех устройств, даже если вы нагружаете их по самые помидоры. В комплекте идет 1TB трафика в месяц, сверх нормы — за деньги. Первые три месяца у AWS будут бесплатными.

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

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

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

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

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

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

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

IKEv2 же вшит в iOS и macOS и является для этих ОС нативным, не требуя установки никакого дополнительного ПО. Так же, считается, что IKEv2 гораздо быстрее и безопасней, чем OpenVPN.

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

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

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

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

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

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

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

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

Внимание!

С 8 марта Amazon Web Services (AWS) закрыл регистрацию аккаунтов из России. Услуги же прочих зарубежных хостеров невозможно оплатить из-за неработающих карт Visa/MasterCard.

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

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

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

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

Чтобы закрепить за сервером статический IP-адрес и он не менялся после каждой перезагрузки, перейдем в «Networking» и выделим себе Static IP. Назначим его на созданный нами инстанс:

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

Подключаемся

Открываем Terminal в macOS.

В первую очередь, чтобы избежать кое-какой известной проблемы терминала с локалью, зайдем в настройки Терминала, перейдем в Profiles и снимем галочку с “Set locale environment variables on startup”:

Закроем терминал с помощью Cmd+Q и запустим его снова.

Ограничим права нашему скачанному с Lightsail ключу, иначе macOS не позволит его использовать. Исхожу из того, что ключ вы скачали через Safari в папку Downloads. Если нет — подставьте свой путь до папки с ключем.

cd ~/Downloads/
chmod 600 YOUR_DOWNLOADED_KEY.pem

Совет: введите несколько первых символов имени файла ключа и нажмите Tab, терминал подставит остальное автоматически.

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

Нас спросят:


Are you sure you want to continue connecting (yes/no/[fingerprint])?

Напишем “Yes” и нажмем Enter.

Нас приветствует радостная надпись, мы подключились:

Обновим Debian

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

sudo su

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

apt-get update

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

apt-get upgrade

Установим strongSwan

apt-get install strongswan

И набор стандартных плагинов:

apt-get install libstrongswan-standard-plugins

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

Создаем сертификаты доступа

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

apt-get install strongswan-pki

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

В следующих двух блоках вместо YOUR_SERVER_IP подставляйте внешний IP-адрес машины в AWS Lightsail. Команды вводятся одна за другой:

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_SERVER_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_SERVER_IP»
—san YOUR_SERVER_IP
—flag serverAuth —outform pem > certs/debian.pem

И сертификат для самих устройств в файле me.pem. В следующем блоке ничего (в том числе в “CN=me”) менять не нужно:

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

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

Настроим strongSwan

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

> /etc/ipsec.conf

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

nano /etc/ipsec.conf

Вставьте в него данный текст, заменив YOUR_SERVER_IP на внешний IP-адрес машины в AWS Lightsail. Больше в конфиге ничего менять не нужно.

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_SERVER_IP
leftid=YOUR_SERVER_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

Вставим в этот файл последней строкой указатель на наш сертификат сервера (да, прям вот так, начиная с двоеточия):

: RSA debian.pem

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

ipsec restart

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


Starting strongSwan 5.7.2 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

Сохраним файл через Ctrl+X и подгрузим новые значения:

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

Теперь разрешим входящие соединения на 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


[email protected]
X.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


[email protected]:/home/admin# ipsec statusall
Status of IKE charon daemon (strongSwan 5.7.2, Linux 4.19.0-14-amd64, x86_64):
uptime: 71 seconds, since Mar 05 23:22:16 2022

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

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

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

Удалите 80-й порт так же и в разделе IPv6 firewall, ниже по странице.

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

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

Мы будем использовать один и тот же VPN-профайл .mobileconfig для всех наших устройств.

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

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

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/b2d9dba73da633fcfcca6a03d877517c5b2d9485/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, например, с помощью Cyberduck. Для подключения используйте тот же ключ от Lightsail, внешний IP-адрес сервера и имя пользователя admin.

Отправьте скачанный файл iphone.mobileconfig на все ваши устройства через Airdrop. Подтвердите на устройствах установку конфигурации.

В macOS профайл устанавливается из System Preferences > Profiles. В iOS он появится в Settings > Profile Downloaded:

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

Если захочется временно отключить VPN, чтобы получить доступ, например, к Авито, в macOS зайдите в System Preferences > Network, выберите VPN-соединение и снимите галочку “Connect on Demand”, нажмите Apply.

В iOS: Settings > General > VPN & Device Management > VPN > нажмите на иконку “i” у установленной VPN конфигурации и выключите тумблер “Connect On Demand”. Чтобы вернуться обратно к автоматическому принудительному установлению соединений, соответственно, верните эти галки/тумблеры обратно:

Кстати, в macOS так же стоит поставить галку “Show VPN status in menu bar”. Будет удобно быстро чекать активно ли сейчас VPN-соединение.

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

rm mobileconfig.sh
rm iphone.mobileconfig

Если соединения VPN успешно установились, но нет интернета

Скорее всего, ваш хостер переименовал обычно принятый дефолтным сетевой интерфейс eth0 во что-то другое по своему усмотрению (это нормально). И созданные нами правила роутинга iptables просто не могут отработать, поскольку обращаются к интерфейсу, которого нет.

Выполните команду ip addr или ifconfig, чтобы отобразить ваши сетевые интерфейсы:

И если вместо eth0 вы увидите что-то типа ens3, enp0s5 и т.п, как на скриншоте выше, то просто замените через

nano /etc/iptables/rules.v4

название eth0 в строках

-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy —dir out —pol ipsec -j ACCEPT

-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

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

на ваше название интерфейса. Перезагрузите сервер. Интернет заработает.

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

Наш VPN-сервер уже работает и неплохо защищен, однако, я предлагаю еще чуток прокачать безопасность 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» и новый порт:

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

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

Заключение

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

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

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

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

Если вы нашли какие-либо ошибки в статье, пожалуйста, сообщите об этом.

Спасибо!

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

  • Ассиметричное шифрование. Как это работает?

Предисловие

Я один из тех, кто использует VPN и для серфинга, и для работы.Тут нужна и скорость и бесперебойность. За последний год я перепробовал около десятка сервисов которые не могли похвастаться ни тем, ни другим. Ряд из них просто перестал работать, а некоторые и вовсе остановил работу на Российском рынке (например Касперский).

Основная цель

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

Введение

Актуальность темы подтвержу цифрами взятыми с GoogleTrends.

интерес пользователей поисковика Google к VPN (за последние 5 лет)

интерес пользователей поисковика Google к VPN (за последние 5 лет)

Очевидно, что тренд выходит на качество новый уровень интереса. По России, плюс/минус такая-же картина. Интерес к VPN обгоняет даже React.js.

интерес пользователей поисковика Google к VPN и React.js (за последние 5 лет)

интерес пользователей поисковика Google к VPN и React.js (за последние 5 лет)

Хотя конечно есть темы и попопулярнее.

интерес пользователей поисковика Google к VPN, React.js и всякому разному (за последние 5 лет)

интерес пользователей поисковика Google к VPN, React.js и всякому разному (за последние 5 лет)

Я буду настраивать VPN на базе хостинга TimeWeb так как пользуюсь их сервисом с 2014г. Мне нравится панель, быстрая обратная связь и набор услуг которые они предоставляют

Шаг 1 — поиск подходящего хостинга / создание аккаунта

Так как я зарегистрирован и у меня есть активный «план», то я просто кликаю на кнопку «Вход для клиентов»

главная страница

главная страница

Затем кликаем на кнопку VDS/VPS Серверы (слева внизу)

Открывается модальное окно с запросом на регистрацию

После клика на кнопку произойдет два действия — отправится письмо на почту с данными вашего нового аккаунта и переход на страницу панели Cloud

Переходим на новое окно, я сразу переключил на темную тему (хорошо бы и на хабре такую получить). Удаляем облачный сервер который создался автоматически (в моем случае это Honest Maxwing). Иначе когда будете на этапе оплаты, то вам накинут пару десятков тысяч рублей. Я сначала не заметил и потом не сразу понял за что с меня столько хотят взять

Шаг 2 — покупка нужной конфигурации сервера

Жмем кнопку «Создать» -> «Облачный сервер». Переходим на окно конфигурации сервера. Я себе накликал следующие параметры (scalable NVMe, и плюс бэкапы)

Жмем кнопку «Заказать» и оплачиваем

Ура, у нас появился облачный сервер

На почту должно придти письмо с данными доступа

Переходим на главную страницу

Кликаем на новый сервер. Я его назвал VPN. Статистика пока по нулям

Шаг 3 — установка VPN на компьютер

Проходим на Github для того, чтобы скачать amnesia клиент. В моем случае актуальная версия — 2.1.2. Скачиваем нужный дистрибутив и устанавливаем. Вцелом там нужно кликнуть пару раз кнопку «Далее»

Появляется мастер настройки

Кликаем на кнопку «Setup your own server» и вписываем в поля данные которые пришли в последнем письме. Жмем кнопку «Connect»

Нажимаем «Run setup wizard»

Дальше жмем пару раз кнопку «Next» ничего не меняя пока не встретите кнопку «Start configuring»

Операция настройки может занять несколько минут

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

Тут стоит стрелочка напротив OpenVpn. Снимаем ее и добавляем новый — я добавлю WireGuard. Я его выбрал руководствуясь данной статьей

.

Протокол установлен и настроен. Возвращаемся на главную

Жмем кнопку «Подключиться»

Давайте сходим куда-нибудь, проверим

Ура, на компе работает

Шаг 4 — установка VPN на телефон

Устанавливаем на телефон приложение WireGuard (Iphone, Android). В моем случае я ставлю на iPhone но там нет разницы. Но прежде чем пойдем «туда», давайте сгенерируем конфиг для настройки VPN. Кликаем опять на строчку наротив Proto и кликаем на протокол WireGuard

Далее кликаем на иконку «Поделиться»

«Share for WireGuard» -> «Generate config»

Все, этот QR код не закрываем. Он нам пригодится для настройки VPN на телефоне.

Идем в магазин приложений, устанавливаем WireGuard -> «Add a tunnel» -> «Add from QR code» -> «Allow» -> называем свое соединение как вам угодно -> включаем VPN и проверяем его. Ура, работает )

 (

(

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

Заключение

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

Потратили

  • ~10 минут

  • 2279 рублей

Благодарности

  • @a_povalза грамматические правки

  • всем кто оставил комментарии

  • всем кто проголосовал

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

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

Стоит ли публиковать подобные посты?


16.16%
хочу посмотреть результаты
32

Проголосовали 198 пользователей.

Воздержался 21 пользователь.

VPN не только позволяет обходить региональные ограничения, но и обеспечивает безопасное использование интернета в общественных местах и постоянный доступ к локальной сети. Бесплатные VPN-сервисы ненадёжны, платные слишком уж завышают ценник и тоже могут блокировать пользователей или быть недоступны. Остаётся лишь настроить личный сервер, который выйдет и дешевле, и безопаснее. Это не так сложно, как кажется на первый взгляд.

Что для этого потребуется: 4 этапа

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

  1. Нужен удалённый компьютер, на который будет устанавливаться специальное ПО. Проще всего арендовать его в одном из крупных и надёжных сервисов — далее в статье я расскажу о таких.
  2. Надо подключиться к серверу по SSH-протоколу с помощью программы Termius и установить на него WireGuard — софт для настройки VPN-соединения.
  3. После установки VPN надо его правильно сконфигурировать.
  4. После настройки WireGuard останется лишь инсталлировать приложение на клиентское устройство и присоединиться к настроенному серверу.

Этап №1. Аренда сервера (выбираем с оплатой криптовалютой)

Поднимать VPN будем на удалённом сервере. Существует огромное количество сервисов, предоставляющих VPS (Virtual Private Server) по адекватным ценам. Ниже представлены популярные поставщики услуг:

  • AWS: первые 12 месяцев бесплатно, затем 10 долларов в месяц, 15 ТБ трафика;
  • Hetzner: 3 евро в месяц, 20 ТБ трафика, требуется подтверждение личности по документу;
  • Vultr: 3,5 доллара в месяц (только при выборе VPS в США), 500 ГБ трафика;
  • Pulseheberg: 4 евро в месяц;
  • DigitalOcean: 5 долларов в месяц, 1 ТБ трафика.

К сожалению, сейчас их невозможно оплатить российскими картами, поэтому в этой статье я буду использовать и рекомендовать сервис СrownСloud. Его прелесть в том, что оплатить сервер можно с помощью криптовалюты (только BTC), которая доступна к использованию даже пользователям из России.

Самый дешёвый сервер можно арендовать за 2,5 доллара в месяц, правда, оплатить придётся на весь год — 30 долларов в сумме. За эту сумму вы получите 512 ГБ трафика ежемесячно. Оплата помесячно доступна для более дорогих решений — от 4 долларов в месяц за 1 ТБ трафика. Можно купить этот план для проверки, а затем сменить на более дешёвый, заплатив сразу за весь год.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Для тех, кто уже знает, как настраивать WireGuard, я советую взять KVM-сервер, ибо установка на нём будет проще и быстрее. В этом же материале я покажу на примере OpenVZ VPS.

На главной странице выбираем раздел Classic OpenVZ Plans.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Выбираем подходящий план — достаточно и самого дешёвого, но, как я сказал ранее, его придётся оплатить сразу на год. Поэтому для примера я выбрал вариант за 4 доллара в месяц. Переходим к оплате, кликнув на расположение сервера справа — США или Германия.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

На этом этапе выберите операционную систему Ubuntu 20.04 x86_64 и перейдите к оплате, нажав кнопку Continue и затем Checkout.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Далее придется заполнить регистрационную форму — можете ввести туда абсолютно любые данные. Главное, чтобы они выглядели достоверно. Только укажите свою почту, к которой имеете доступ, а также запомните пароль. В самом низу выберите способ оплаты Bit-pay (Bitcoin) и поставьте флаг около условий обслуживания. Нажмите Complete Order и перейдите к окну оплаты.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Откроется окно сервиса BitPay. Если потребуется регистрация в этом сервисе — сделайте это, она занимает несколько минут и не требует ввода личных данных. Далее выберите подходящий кошелёк, на котором хранятся ваши цифровые активы. Я рекомендую использовать Electrum Wallet. Показывать пример буду также на нём, предполагая, что вы уже создали его и храните на нём средства.

Когда появится сумма, необходимая к оплате, нажмите «Пополнить кошелёк». Откроется приложение кошелька и сразу после этого — окно транзакции с заполненными данными.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Обязательно зайдите в «Инструменты» > «Настройки» и временно отключите пункт «Использовать возможность замены комиссии» или RBF (Replace-by-fee). Затем в поле «Комиссия» введите число, которое было указано на сайте (черная плашка внизу с надписью Required Fee Rate на изображении выше). Нажмите «Отправка», чтобы отправить транзакцию сразу. Возможно, потребуется ввести пароль от вашего кошелька. 

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Как только транзакция попадёт в сеть, сервис BitPay сообщит об успешной оплате. Вернитесь на CrownCloud.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

На открывшейся странице выберите вкладку Services > My services. Откроется список приобретённых серверов. Сразу после оплаты вы увидите статус Pending — это из-за того, что транзакция попала в сеть, но еще не подтвердилась. После получения первого подтверждения VPS станет активным. Этот процесс занимает не более 20 минут.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Как только удалённая машина станет активна, кликните на неё — вы увидите её IP-адрес, по которому будете подключаться к ней в следующем пункте.

Нажмите на вкладку Hello, <ваш юзернейм>, выберите Email History. Найдите сообщение с темой CrownCloud — New VPS Information и откройте его. Там вы увидите пароль от root-пользователя сервера и данные для панели управления VPS. Запомните их.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Сразу же перейдите в панель управления. Введите пароль и логин, которые получили выше, и выберите Manage под нужным сервером. Нажмите на панель Settings и кликните на кнопку Re-enable TUN/TAP. Подождите 2-3 минуты и переходите к следующему шагу настройки.

Этап №2. Настройка сервера и подключение

Для настройки VPS надо подключиться к нему по SSH-протоколу. Рекомендую использовать для этого программу Termius. Она удобная, простая в использовании и кроссплатформенная.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Этап №2. Настройка сервера и подключение. 1

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Скачав её с официального сайта и установив, запускаем и нажимаем кнопку New host. В поле Address вводим IP-адрес выданного сервера — скопировали его ранее. В строке Username пишем root, в поле пароля вводим то, что сохранили ранее из электронного письма внутри сервиса CrownCloud. Сохраняем всё кнопкой Save. Теперь можно подключиться к серверу, дважды кликнув на созданный хост.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Этап №2. Настройка сервера и подключение. 5

Прежде чем выполнять какие-либо действия, я обновляю список доступных к установке пакетов и сами пакеты. Для этого выполняем команду, написав её и нажав Enter:

apt update && apt upgrade -y

Переходим к установке и настройке самого VPN-сервиса.

Этап №3. Установка VPN

На сегодняшний день существует несколько разных протоколов VPN:

  • PPTP — старый протокол, быстрый, но небезопасный, поэтому подойдёт только для просмотра контента, недоступного в некоторых регионах;
  • L2TP/IPSec — безопасен, прост в настройке, но скорость не самая высокая и может блокироваться файрволом;
  • SSTP — проприетарный протокол от Microsoft, который не поддерживается в GNU/Linux нативно;
  • IKEv2 — весьма быстр, стабилен и безопасен, но поддерживается не на всех устройствах;
  • SoftEther — свежий протокол, не поддерживается нативно в системах, но обеспечивает качественное шифрование с высокой скоростью;
  • OpenVPN — быстрый и очень безопасный, но непростой в конфигурации и требует установки специальных приложений;
  • WireGuard — активно развивающийся протокол, внедрена поддержка в ядро Linux, высокопроизводительный и надёжный, прост в развёртывании, хотя и требует установки дополнительных клиентских программ.

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

Для KVM-серверов достаточно установить его командой sudo apt install wireguard -y. Но так как я рассматриваю OpenVZ-решение, то инструкция по установке будет другая. Настройка подключения (четвёртый пункт) будет одинакова для всех вариантов.

Установим некоторые инструменты WireGuard:

apt install wireguard-tools —no-install-recommends

Так как мы используем OpenVZ-сервер, придётся использовать версию WireGuard, написанную на языке Go и не интегрированную в ядро ОС. Это не отразится на опыте использования, но придётся проделать чуть больше действий и скомпилировать утилиту самостоятельно.

Для начала установим среду для выполнения языка Go. По очереди выполните следующие команды:

cd /tmp

wget golang.google.cn/dl/go1.18.linux-amd64.tar.gz

tar zvxf go1.18.linux-amd64.tar.gz

sudo mv go /opt/go1.18

sudo ln -s /opt/go1.18/bin/go /usr/local/bin/go

Загрузим и скомпилируем wireguard-go. Последняя версия, которая без проблем запустилась у меня — 0.0.20201118. Последовательно введите команды:

cd /usr/local/src

wget git.zx2c4.com/wireguard-go/snapshot/wireguard-go-0.0.20201118.tar.xz

tar xvf wireguard-go-0.0.20201118.tar.xz

cd wireguard-go-0.0.20201118 

Скомпилируем и «установим»:

make

sudo cp wireguard-go /usr/local/bin

Проверьте, установилось ли всё успешно, командой wireguard-go —version. Если появится сообщение с версией, можно переходить к следующему этапу.

Откройте файл в редакторе текста:

vi /lib/systemd/system/wg-quick@.service

Нажмите клавишу i — внизу должна появиться надпись INSERT. Найдите строчку:

Environment=WG_ENDPOINT_RESOLUTION_RETRIES=infinity

Под этой строчкой вставьте другую сочетанием клавиш Ctrl+Shift+V:

Environment=WG_I_PREFER_BUGGY_USERSPACE_TO_POLISHED_KMOD=1 

Нажмите клавишу Esc, введите :wq и нажмите Enter.

Если вы незнакомы с vi или просто предпочитаете более простой редактор текста, установите nano — он пригодится далее:

apt install nano

Этап №4. Конфигурация VPN

Сгенерируем пару ключей для сервера. server_privatekey — это название файла с приватным ключом сервера, server_publickey — файл с публичным ключом сервера:

wg genkey | tee server_privatekey | wg pubkey > server_publickey

Для каждого клиентского устройства также создадим пару ключей. Это можно сделать и позже, но тогда придётся возвращаться к файлу конфигурации и редактировать его. 1 устройство — 1 выполнение команды ниже и, соответственно, 1 пара ключей. Не забывайте для каждого девайса менять названия файлов в команде. Во всех командах я выделил жирным то, что можно заменить. Например, для второго клиента могут быть client2_privatekey и client2_publickey. Опять же, название можно дать любое, главное, чтобы оно не повторялось и позволяло различить тип ключа и девайс. Я сгенерирую только для одного смартфона:

wg genkey | tee client_privatekey | wg pubkey > client_publickey

Выполним следующую команду для того, чтобы вывести сразу все сгенерированные ключи для сервера и клиента. Если у вас несколько клиентских устройств, то добавьте в конец команды названия всех созданных для них файлов и только потом выполните её. Например, если у вас 3 клиента, напишите cat server_privatekey server_publickey client1_privatekey client1_publickey client2_privatekey client2_publickey client3_privatekey client3_publickey.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Этап №3. Конфигурация VPN. 1

Сохраним полученное содержимое в отдельный текстовый файл allKeys.txt на основном компьютере. Каждые две строки — это пара ключей. Первый — приватный, второй — публичный. Соответственно, первая пара — это ключи сервера, другие пары ключей принадлежат клиентам:

cat server_privatekey server_publickey client_privatekey client_publickey

Создадим конфигурационный файл:

nano /etc/wireguard/wg0.conf

Вставим в него следующее содержимое, заменив <PRIV_SERV> строкой из сохранённого текстового файла allKeys.txt со всеми ключами (самая первая строчка), а <PUB_CLIENT> — строкой оттуда же, но для клиентского устройства (второй ключ в паре).

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Этап №3. Конфигурация VPN. 2

Для каждого клиентского устройства надо добавить раздел Peer по подобному принципу, указав IP-адрес, отличающийся четвёртым числом от ранее введённых (например, для второго клиента я введу AllowedIPs = 10.0.0.3/32, для третьего — AllowedIPs = 10.0.0.4/32 и так далее), и добавив его публичный ключ:

[Interface]

Address = 10.0.0.1/24

ListenPort = 51820

PrivateKey = <PRIV_SERV>

PreUp = iptables —table nat —append POSTROUTING —jump MASQUERADE —out-interface venet0

PreDown = iptables —table nat —delete POSTROUTING —jump MASQUERADE —out-interface venet0

[Peer]

PublicKey = <PUB_CLIENT>

AllowedIPs = 10.0.0.2/32

[Peer]

PublicKey = <PUB_CLIENT2>

AllowedIPs = 10.0.0.3/32

Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter. Запустим сервис и сразу добавим его в автозапуск, чтобы VPN автоматически стартовал после перезагрузки сервера:

systemctl enable wg-quick@wg0

systemctl start wg-quick@wg0

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

Подключение к VPN

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

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 1

Android/iOS

Если нужно подключить смартфон, то наиболее удобным вариантом будет создание файла конфигурации прямо на VPS с последующей генерацией и сканированием QR-кода. Для этого введём через всё тот же Termius команду:

sudo apt install qrencode -y

Создадим файл конфигурации. Каждому новому устройству — новый файл конфигурации с уникальным именем (к примеру, client2.conf):

sudo nano client.conf

Вставим в файл содержимое, заменив <PRIV_CLIENT> на приватный ключ клиента (client_privatekey), сгенерированный ранее и сохранённый в отдельный файл allKeys.txt на основной машине. Вместо <PUB_SERV> подставим публичный ключ сервера (server_publickey) из того же файла. В Endpoint заменим <IP> на IP-адрес сервера (использовали его для подключения через Termius, нашли на шаге 11). В строке DNS можно указать желаемые DNS-сервера. Я выбрал DNS от Google.

[Interface]

Address = 10.0.0.2/32

PrivateKey = <PRIV_CLIENT>

DNS = 8.8.8.8, 8.8.4.4

[Peer]

PublicKey = <PUB_SERV>

AllowedIPs = 0.0.0.0/0, ::/0

Endpoint = <IP>:51820

Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter. Сгенерируем QR-код: 

qrencode -t ansiutf8 < client.conf

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 2

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 3

QR-код отсканируем в мобильном приложении, дадим имя туннелю и подключим VPN. Если всё прошло успешно, на любом сайте для проверки IP (например, ipleak.net) будет отображаться адрес удалённого сервера.

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 4

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 5

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков

Windows/macOS

Что касается компьютеров на Windows и macOS, файл конфигурации с расширением .conf лучше создать в любом текстовом редакторе на самом клиенте. Его содержимое будет аналогично тому, что предлагается выше для мобильных устройств. Только пункт с созданием QR-кода можно пропустить. Созданный файл импортируем в приложении WireGuard кнопкой Add Tunnel и активируем.

GNU/Linux

На компьютере с операционной системой GNU/Linux установим WireGuard таким же образом, каким установили его на сервер:

sudo apt install wireguard -y

Не забываем настроить пересылку трафика:

sudo sed -i ‘s/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g’ /etc/sysctl.conf

И сразу же обновим конфигурацию:

sudo sysctl -p

На машине с Ubuntu 20.04 LTS мне пришлось установить дополнительный пакет, так как без него возникала ошибка:

sudo apt install openresolv

Создадим всё тот же файл конфигурации:

sudo nano /etc/wireguard/wg0.conf

Только в этот раз вставим в него содержимое, которое я указал чуть выше для мобильных устройств. Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter. Активируем VPN:

sudo wg-quick up wg0

Отключить VPN так же просто:

sudo wg-quick down wg0

Делаем собственный VPN за 30 минут: пошаговая инструкция для новичков — Подключение к VPN. 7

Для экономии времени я советую создать псевдонимы (aliases). Они позволят вместо таких комплексных команд вводить простые: wgon для подключения к VPN и wgoff для отключения. Откроем файл, который определяет конфигурацию терминала при запуске:

nano ~/.bashrc

Добавим в самый конец несколько строк:

# Aliases for WireGuard

alias wgon=’sudo wg-quick up wg0′

alias wgoff=’sudo wg-quick down wg0′

Сохраним файл комбинацией клавиш Ctrl+X, нажмем Y и подтвердим клавишей Enter.

Судя по последним новостям, в ближайшее время Роскомнадзор заблокирует в России ещё семь VPN-сервисов, в том числе Windscribe, Proton VPN и VPN Proxy Master. Это очень популярные публичные сервисы, которые, увы, в ближайшее время работать не будут.

Чтобы иметь доступ к необходимым для вас сайтам, расскажу о простом способе настройки собственного VPN-сервера на базе OpenVPN при помощи всего одной команды. Я уже рассказывал про способы с Outline и Amnezia.

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

Почему личный VPN лучше

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

Подготовка

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

— Putty (для SSH-подключения на старых версиях Windows. На десятки, на macOS и Linux можно использовать встроенный терминал)

— OpenVPN Client (для установки соединения ваших устройств с вашим сервером)

— FileZilla (программа понадобится для загрузки полученных VPN-ключей для их последующей установки)

После этого переходим к следующему, пожалуй, самому важному шагу.

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

Сделать это вы можете где угодно, но имейте ввиду, что большинство платформ, вроде Amazon Web Services, Digitalocean и Google Cloud для граждан России не работают, так как не принимают оплату банковскими картами, выпущенными в РФ.

Поэтому я могу посоветовать провайдера VDSina (реф). Стоимость аренды составит порядка 200 рублей в месяц. Два года уже арендую у них сервера не только для VPN, но и для веб-проектов, и никаких проблем не было.

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

Настраивайте сервер по следующим параметрам:

В качестве операционной системы выберите Ubuntu 20.04

Тип сервера: стандартный

Тариф: 6,6 рублей в день (около 200 рублей в месяц, это хватит для VPN)

Локация: Амстердам

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

На этом все, переходим к следующему этапу

Устанавливаем VPN

Для этого открываем терминал или Putty и вводим следующие команды. После ввода каждой команды нужно нажимать Enter:

1. ssh [email protected]адрес сервера (его можно найти в Поддержка/Тикеты)

2. Согласитесь с подключением — yes

3. После введите пароль сервера (его также можно найти в тикете)

4. После вводим комманду wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh (исходный код утилиты можно найти на Github)

5. Выберите протокол подключения UDP — введите цифру 1

6. Согласитесь со стандартным портом. Просто нажмите enter

7. Выберите стандартные настройки сервера для DNS, введя цифру 1

8. Введите имя ключа клиента

9. Нажмите Enter

После того как ключ будет создан, открывайте FileZilla.

Скачиваем ключ для соединения на другом устройстве

В строке хост введите IP-адрес сервера

Имя пользователя: root

Пароль тот же, что вы получили в тикете

Порт: 22 (если не подключается, тогда 21)

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

В ней вы найдете файл с расширением «.ovpn». Он нам и нужен, просто нажимаем на него правой кнопкой мыши и выбираем «Скачать». После этого файл вы можете передать на другое устройство и открыть его в приложении OpenVPN.

Ключ-файл вы можете использовать на всех своих устройствах. При желании можно предоставить его и другим пользователям.

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

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

VPN (Virtual Private Network) — переводится как виртуальная частная сеть и выполняет функции частной сети в прямом смысле слова. Несмотря на популярность VPN как сервиса для обхода блокировок, первоначальная задача — построение корпоративных сетей. Например, для подключения работников предприятия к локальным сервисам и оборудованию извне (из дома, в отпуске на островах или на даче) — программному обеспечению, внутренним ресурсам, принтерам, сканерам, корпоративной связи, планировщикам и другой рабочей «прослойке».

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

Как это работает

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

Отсюда, кстати, и вторая всем известная и полезная штука — обход провайдерских блокировок. Раз VPN позволяет подключаться из любой точки планеты и с помощью любого соединения, значит сеть можно организовать где угодно. Например, в Германии. Так как законодательство этой страны не запрещает посещение сайтов, внесенных в реестр другого государства, пользователь может подключиться к VPN и использовать ее в качестве «разблокировщика».

Что для этого нужно

Если абстрагироваться от корпоративных задач VPN и сосредоточиться только на возможности обхода блокировок, то организовать сеть можно двумя способами. Первый — настроить готовый сервис, который предоставляют сотни компаний. Например, Proton VPN — достаточно зарегистрироваться на сайте, установить программу на устройство, авторизоваться и нажать кнопку «Подключиться». Все легко и просто. Но у этой «простоты» есть существенный недостаток — безопасность.

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

В чем польза?

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

К тому же в этом случае немаловажен вопрос выгоды — как правило, аренда VDS (виртуального сервера в сети) обойдется дешевле, чем приобретение месячной подписки на сторонний VPN. При этом «чужой» сервис не гарантирует стабильную работу в часы пиковой нагрузки и почти всегда ограничивает максимальную скорость подключения.

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

Поиск провайдера

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

В качестве примера для данного материала был выбран VDSina. Это отечественный сервис, который, в отличие от зарубежных, принимает к оплате «наши» карты. Тем более у сервиса есть серверы в Нидерландах — излюбленное место заядлых «впнщиков».

Регистрируемся, конфигурируем сервер, выбираем нужную страну (для обхода блокировок подходят только зарубежные) и нажимаем «Создать».

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

Все, сервер готов к настройке. Едем дальше.

Не хочу много печатать, хочу все и сразу

В интернете существует множество нудных и запутанных инструкций, которые актуальны только с конкретной версией операционной системы и программного обеспечения. Если пользователь установит другую ОС или будет использовать отличный от описанного в инструкции сервис аренды серверов, то вся польза от пошагового руководства сводится к нулю. Короче — универсальных инструкций не бывает, зато есть нюансы и подводные камни.

Поэтому не стоит изобретать велосипед и мучать зеницы красноглазием — воспользуемся утилитой Outline, которая автоматизирует процесс настройки VPN. От юзера потребуется лишь визуальный контроль и своевременный ввод паролей, логинов, цифр и букв. Кстати, ее созданием занимается команда jigsaw, которая входит в состав Google. В общем, это безопасно и быстро — то, что нужно неопытному пользователю, который вряд ли тесно знаком с командной строкой компьютера.

Загружаем на компьютер первую часть утилиты, которая занимается настройкой сервера. Это Менеджер Outline:

И запускаем:

Программа умеет автоматически разворачиваться на серверах DigitalOcean, Google Cloud и Amazon Lightsail, однако все эти сервисы не поддерживают оплату российскими банковскими картами, поэтому нам придется немного поработать ручками. Для этого выбираем четвертый пункт, проваливаемся в ручные настройки и получаем мини-инструкцию:

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

Настройка сервера

Для настройки виртуального компьютера можно использовать «дедовские» методы — подключаться удаленно с помощью утилит типа PuTTY или через командную строку. Однако это не про рядовых юзеров — нам подавай все просто и понятно. Поэтому будем использовать встроенный функционал в панели управления сервером. Переходим во вкладку «Управление» и выбираем «Подключиться по VNC»:

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

Готово. Теперь можно вставить ту самую команду, которую предоставила нам утилита Outline. Но, перед установкой утилиты на сервер, необходимо обновить репозитории системы и загрузить недостающие пакеты. Для этого выполняем в консоли несколько команд:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Затем:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add —

Потом:

sudo apt update
sudo add-apt-repository «deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable»

И:

sudo apt update
sudo apt install docker-ce

После успешного завершения работы команд можно вставить текст из Outline в командную строку и нажать Enter:

Консольный вывод зеленого цвета и есть та самая «фраза», необходимая для продолжения настройки Outline.
P.S. Скорее всего понадобится открыть порты для доступа Outline к серверу. Для этого производим еще несколько манипуляций в командной строке. А именно — устанавливаем iptables и конфигурируем, вводя поочередно следующие команды:

sudo apt install iptables
iptables -L -v -n
sudo iptables -F
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT

Не забываем после каждой команды нажать Enter. После проделанной работы возвращаемся к утилите.

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

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

И попадаем в панель управления:

Все, теперь можно расслабиться и предвкусить скорое подключение по собственному каналу VPN. Дело осталось за малым — создать ключи доступа для устройств-клиентов. Для этого необходимо нажать кнопку «Добавить новый ключ» и передать приглашение пользователю, которого необходимо подключить к сети. Мы отправим ссылку на подключение себе на мобильное устройство.

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

Система переадресует в магазин приложений.

Устанавливаем, соглашаемся с предложениями и наблюдаем готовый VPN.

Тестируем работу

Ради интереса сравним скорость подключения — все-таки сервер обещает стабильное подключение до 1 Гбит/с. Правда придется сделать поправку на расстояние до сервера в километрах — от юга России до Амстердама рукой подать не получится.

Первое изображение — до подключения к серверу, второе — после. Вуаля, быстрый и стабильный интернет без границ подан! А еще безопасный, насколько это возможно в рамках VDS-арендодателя, утилиты Outline и базовых защитных алгоритмов Linux.

Понравилась статья? Поделить с друзьями:
  • Мануал тойота town ace
  • Краснуха вакцина инструкция по применению для детей
  • Зарядное устройство для автомобильного аккумулятора бош с7 инструкция по применению
  • Dr bei sonic electric toothbrush s7 инструкция
  • Gs b520 руководство пользователя