#розробка
20.12.2023
Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування
Володимир Гуц, Engineering Lead, Brighterly

Мене звати Володимир Гуц, я Engineering Lead в cтартапі Brighterly від venture builder SKELAR. У своїй роботі я часто користуюся різними 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-cерверу, хочу розвіяти основні міфи щодо його створення.

  • Міф 1. Власний VPN — це дорого

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

  • Міф 2. Власні VPN-сервіси негнучкі

Так, готовий сервіс дійсно пропонує користувачам декілька варіантів локацій, між якими досить легко перемикатися. Але у власному теж можливо створити сервер у будь-якому з доступних у сервісі регіонів на ваш вибір. Питання лише у бюджеті. Та давайте будемо чесними: зазвичай нам не потрібно часто змінювати локацію. Для постійного використання цілком вистачає однієї-двох.

  • Міф 3. Створити свій сервер — важко.

Насправді створення власного сервера — справа декількох кліків. За наступною інструкцією можна це зробити протягом 10 хвилин (перевірено особисто).

Чекліст по створенню власного VPN-серверу

Розберемо на прикладі DigitalOcean та його серверу Droplet.

Реєстрація

Якщо у вас раптом вже є акаунт на DigitalOcean – можете переходити до наступного пункту. Якщо ні – спершу пройдіть реєстрацію (там інтуїтивно зрозумілі всі кроки).

Створіть новий Droplet, який буде виконувати роль VPN-сервера

Оберіть дата-центр, з якого плануєте виходити в інтернет. Я вирішив працювати з Frankfurt, тому що він територіально знаходиться найближче до України, а це позитивно впливає на швидкість роботи.

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

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

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

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

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

У Hostname впишіть ім‘я, наприклад, vpn-server. Це ні на що не впливає й потрібно лише для зручності. Потім натисніть кнопку Create Droplet.

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

Зачекай, поки створиться сервер. Зазвичай це займає до однієї хвилини. Після цього ти отримаєш ІP-адресу свого сервера.

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування
Під’єднайтеся до SSH-сервера

Відкриваємо Terminal у MacOS/Linux (або PowerShell/putty у Windows) і підключаємося по SSH до нашого сервера, використовуючи ім’я користувача root та IP-адресу нашого сервера.

Це можна зробити за допомогою:

ssh root@{your-ip-address}

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

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

Після цього ви маєте під’єднатися.

Створіть файл docker-compose.yml

Я зберіг свій код, тому просто скопіюйте та створіть свій файл з усім вмістом з цього ресурсу. Цей файл — конфігурація вашого сервера.

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

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

У тому ж вікні SSH робимо наступне:

> nano docker-compose.yml

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

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

Зверніть увагу, наскільки це просто – у файлі лише 14 рядків, які нам потрібні. За це я й люблю Doker 🙂

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування


Виходимо, затиснувши Ctrl+X, потім Y, й далі натискаємо Enter.

Запустіть контейнер зі створеним сервером

Використовуємо те ж вікно SSH, в якому ми щойно створили файл.

> docker compose up -d

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

Вітаю! Ваш VPN-сервер запущений і працює. Як тепер під’єднатися до нього?

Підключення до створеного VPN-сервера

Я використовую IPsec, тому що клієнти для цього VPN вже вбудовані у MacOS/Windows і не доведеться нічого встановлювати локально. Потрібно лише створити нове VPN-підключення за такими параметрами:

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

Для MacOS нічого встановлювати не потрібно, достатньо лише налаштувати ось так:

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

Для Windows ці налаштування виглядатимуть трохи інакше:

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

На жаль, у Windows не все так просто і доведеться посерфити в реєстрі й дозволити NAT-T.

Для користувачів Linux також додаю скрін з налаштуваннями (використовував в Ubuntu 22.04):

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування
Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

Перед налаштуванням потрібно встановити пакет network-manager-l2tp-gnome. Робиться це через консоль:

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

Також можна під’єднатися з телефону, нічого додатково встановлювати не треба. Налаштування на iPhone виглядає ось так:

Як створити власний VPN-сервер за 10 хвилин: чекліст та фрагменти коду для налаштування

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

Рекомендації щодо безпеки

Якщо враховувати питання безпеки вашого власного сервера, то наостанок я рекомендую:

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