Рубріки: Інструменти

Как создать собственный VPN-сервер за 10 минут: чек-лист и фрагменты кода для настройки

Володимир Гуц

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

Подробности

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

  • чтобы предотвратить перехват трафика другими людьми;
  • обойти ограничение доступа к определенному ресурсу в стране;
  • скрыть от провайдера интернета, владельца WI-FI точки доступа личную информацию;
  • оставить неизвестным актуальное местонахождение (не забываем о часовых поясах – это тот показатель, по которому можно легко отследить твою локацию).

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

Важно: эта инструкция рассчитана на то, что вы:

✔️ знаете как использовать SSH-клиент;

✔️ умеете на базовом уровне пользоваться терминалом: Terminal, Console Powershell и т.д.

Преимущества использования собственного VPN-сервера

  1. Обход блокировки. Некоторые страны пытаются бороться с VPN серверами, поэтому часто блокируют их. Но если вы пользуетесь собственным VPN, его не будет видно в общем списке сервисов и он почти точно обойдет блокировку.
  2. Отсутствуют капчи. Все общеизвестные сервисы потребуют от вас выбрать на изображении лошадей, найти части светофоров или прочитать слово. Почему так? Когда мы пользуемся готовым VPN-сервером, параллельно это делают многие люди. Конечно, сайт сочтет такой трафик подозрительным и будет заваливать вас капчами. При пользовании же собственным VPN-сервером такой проблемы не возникает – у вас будет уникальный IP-адрес, который для сайта будет выглядеть как надежный пользователь.
  3. Высокая скорость. Пропускная способность готовых VPN-серверов может быть низкой из-за того, что они часто не успевают масштабировать свои серверы и сети для большого количества пользователей. На собственном ресурсе вся пропускная способность только для ваших нужд.
  4. Возможность весь трафик компьютера пускать через VPN, а не только трафик браузера.
  5. Отсутствие необходимости устанавливать посторонний софт.

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

Мифы о создании VPN-сервера

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

  • Миф 1. Собственный VPN – это дорого

VPN можно поднять на любом хостинге, предоставляемом виртуальными машинами: AWS, Azure, Linode, Digitalocean, Hetzner и другими. Можно уложиться в сумму $4 в месяц, и такого сервера вполне хватит для нужд одного человека.

  • Миф 2. Собственные VPN-сервисы негибкие

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

  • Миф 3. Создать свой сервер трудно

На самом деле создание собственного сервера – дело нескольких кликов. По следующей инструкции это можно сделать в течение 10 минут (проверено лично).

Чек-лист по созданию собственного VPN-сервера

Разберем на примере DigitalOcean и их сервера Droplet.

  • Регистрация

Если у вас уже есть аккаунт на DigitalOcean – можете переходить к следующему пункту. Если нет – сначала пройдите регистрацию (там интуитивно понятны все шаги).

  • Создайте новый Droplet, который будет выполнять роль VPN-сервера

Выберите дата-центр, из которого вы планируете выходить в интернет. Я решил работать с Frankfurt, потому что он территориально находится ближе всего к Украине, что положительно влияет на скорость работы.

Для графы Image выберите Markerplace, Docker on Ubuntu. Затем в графе Size выберите план подписки, подходящий вам по бюджету.

Для Choose Authentication Method установите пароль или SSH-ключ.

В Hostname впишите имя, например vpn-server. Это ни на что не влияет и нужно только для удобства. Затем нажмите кнопку Create Droplet.

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

  • Подключитесь к SSH-серверу

Открываем Terminal в MacOS/Linux (или PowerShell/putty в Windows) и подключаемся по SSH к нашему серверу, используя имя пользователя root и IP-адрес нашего сервера.

Это можно сделать с помощью:

ssh root@{your-ip-address}

> введи свій пароль

После этого вы должны подключиться.

  • Создайте файл docker-compose.yml

Я сохранил свой код, поэтому просто скопируйте и создайте свой файл со всем содержимым этого ресурса . Этот файл – конфигурация вашего сервера.

Вы можете создать файл либо через SSH, используя консольные редакторы текста (nano/vim), либо с помощью SFTP-клиента. Я использовал консольный редактор через SSH.

В том же окне SSH делаем следующее:

> nano docker-compose.yml

Вставляем содержимое. В добавленном тексте изменяем следующие параметры под себя:

  1. my-shared-secret– на собственное секретное слово;
  2. my-username– на личный логин;
  3. my-password– на свой пароль.

Обратите внимание, насколько это просто – в файле всего 14 строк, которые нам нужны. За это я люблю Doker 🙂


Выходим, зажав Ctrl+X, затем Y, далее нажимаем Enter.

  • Запустите контейнер с созданным сервером

Используем то же окно SSH, в котором мы только что создали файл.

> docker compose up -d

Поздравляю! Ваш VPN-сервер запущен и работает. Как теперь подключиться к нему?

  • Подключение к созданному VPN-серверу

Я использую IPsec, потому что клиенты для этого VPN уже встроены в MacOS/Windows и не придется ничего устанавливать локально. Нужно только создать новое VPN-подключение по следующим параметрам:

  1. Тип: IPSec;
  2. Server address: укажите IP-адрес сервера;
  3. Account name: напишите my-username(или то имя, на которое вы его изменили);
  4. Password: добавьте my-password(или тот вариант, на который вы его меняли);
  5. Shared Secret: напишите my-shared-secret(или измененный ранее вариант).

Для MacOS ничего устанавливать не нужно, достаточно лишь настроить следующее:

Для Windows эти настройки будут выглядеть несколько иначе:

К сожалению, в Windows не все так просто и придется посерфить в реестре и разрешить NAT-T.

Для пользователей Linux также добавляю скрин с настройками (использовал в Ubuntu 22.04):

Перед установкой необходимо установить пакет network-manager-l2tp-gnome. Делается это через консоль:

> sudo apt-get install network-manager-l2tp-gnome

Также можно подключиться к телефону, ничего дополнительно устанавливать не нужно. Настройка на iPhone выглядит так:

Готово! Подключайтесь и проверьте IP-адрес, например, на Whoer по ссылке. Теперь для всего интернета вы физически находитесь в регионе, где создали свой VPN-сервер, а IP – это IP-сервера. Все не так страшно, не долго и не дорого, как могло вам казаться:)

Рекомендации по безопасности

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

  • использовать SSH-ключ вместо пароля;
  • изменить SSH-port с 22 на любой другой;
  • использовать сложный пароль и Shared-secret (желательно Random generated string).

 

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Останні статті

Токсичные коллеги. Как не стать одним из них и прекратить ныть

В благословенные офисные времена, когда не было большой войны и коронавируса, люди гораздо больше общались…

07.12.2023

Делать что-то впервые всегда очень трудно. Две истории о начале карьеры PM

Вот две истории из собственного опыта, с тех пор, когда только начинал делать свою карьеру…

04.12.2023

«Тыжпрограммист». Как люди не из ІТ-отрасли обесценивают профессию

«Ты же программист». За свою жизнь я много раз слышал эту фразу. От всех. Кто…

15.11.2023

Почему чат GitHub Copilot лучше для разработчиков, чем ChatGPT

Отличные новости! Если вы пропустили, GitHub Copilot — это уже не отдельный продукт, а набор…

13.11.2023

Как мы используем ИИ и Low-Code технологии для разработки IT-продукта

Несколько месяцев назад мы с командой Promodo (агентство инвестировало в продукт более $100 000) запустили…

07.11.2023

Университет или курсы. Что лучше для получения IT-образования

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

19.10.2023