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

Як створити власний 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-cерверу, хочу розвіяти основні міфи щодо його створення.

  • Міф 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.

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

  • Під’єднайтеся до 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. Type: 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).

 

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

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

IT в Україні йде до свого фінального кінця. І потраплятимуть туди виключно за покликом душі

Коротко про українську IT-сферу у 2024 році Це коли на одну вакансію Middle розробника по…

26.03.2024

Блокчейн-розробка сьогодні: зарплати і перспективи на ринку праці

Формування криптовалютної галузі в Україні почалося ще у 2014 – саме тоді з'явилися перші стартапи,…

18.03.2024

Скільки рішень ухвалює розробник? Погляд новачка, який запускає продукт

Автор цього блогу — Python-девелопер Сергій Солдатов, який вирішив створити досить унікальний продукт. І це…

12.03.2024

Чи треба готуватись до співбесіди?

Думки шукачів діляться на: «так, однозначно» і «ні, не вартує, я все і так про…

04.03.2024

Відкладаєте до останнього? Що таке «синдром студента» і як з ним боротися

Синдром студента — це форма прокрастинації, яка полягає в тому, що людина, якій дали завдання,…

23.02.2024

Вчимося працювати з Git: основи конфігурації, гілки, додавання файлів та директорій

Git — це найпопулярніша CVS прямо зараз, яка дозволяє відстежувати історію розробки і спільно працювати.…

20.02.2024