Close

Як розгорнути власний VPN-сервер на Ubuntu 20.04?

Майже кожен VPN збирає якісь метадані —  чи то вашого пристрою, чи то браузера, а деякі мають нахабність зберігати історію інтернет-серфінгу на своїх серверах і навіть продавати її в даркнеті. Щоб убезпечитись – варто ретельно обирати VPN-провайдера, або самотужки розгорнути власний VPN. У цьому керівництві мова піде якраз про найскладніший шлях. Я опишу як розгорнути VPN по протоколу WireGuard на базі VPS-сервера під управлінням ОС Linux – Ubuntu 20.04.

Зміст статті

Особливості та переваги власного VPN-сервера

Маючи власний VPN-сервер ви отримуєте цілий ряд особистих переваг, до прикладу:

  • Стаєте власником персонального віртуального сервера з “білою” IP-адресою, якою ніхто не володіє і не користується окрім вас. Жодних банів та лімітів (окрім тих, які встановлені тарифним планом на самому сервері, однак, зазвичай, для середньостатистичного користувача вони невідчутні);
  • Отримуєте швидкісний та безпечний зашифрований інтернет;
  • Можете обрати будь-яку країну, в якій розташований сервер. Хочете більше локацій? Просто створіть декілька VPN-серверів в різних країнах. Це дозволить відвідувати сайти, використовуючи геолокацію сервера.

Переваги VPN-сервера

IKEv2, WireGuard, OpenVPN — який VPN-протокол обрати?

Який VPN-протокол обрати

Розгортаючи власний VPN-сервер постає питання — на якому протоколі базуватись, який скрипт розгортання використати і який з них найбезпечніший?

На сьогодні існує декілька VPN-технологій:

  • IKEv2 — розшифровується як Internet Key Exchange Version 2, є різновидом IPSec протоколу. Вважається досить швидкісним і надійним. Стандартизований згідно RFC 7296. Підтримує різні алгоритми шифрування, наприклад: AES, 3DES, Blowfish, Camellia. В IKEv2 майже відсутні вразливості, хоча один випадок все ж був зафіксований. Активно застосовується в Windows та Mac операційних системах. Загалом, може бути непоганим вибором. Однак, його не так легко налаштувати;
  • WireGuard — новітній Open-Source VPN-протокол, заснований Джейсоном Доненфелдом. Був включений в ядро Linux. Демонструє феноменальну швидкість, стабільність і безпеку. Працює згідно численних стандартів, зокрема: RFC 7539, RFC 7693, RFC 5869, RFC 7296. Підтримує різноманітні алгоритми шифрування/хешування: ChaCha20, Poly1305, Curle25519, BLAKE2s, SipHash24, HKDF та ін. З’єднання відбувається по UDP-портах. WireGuard на диво швидко встановлюється і налаштовується. Як зазначають експерти, він демонструє ідеальні результати в категорії безпека/швидкодія;
  • OpenVPN — популярний VPN-протокол, розповсюджується за GNU-ліцензією. Перевірений часом й має хорошу репутацію безпеки (вразливості не виявлені). Не базується на RFC-стандартах, натомість використовує OpenSSL бібліотеку, яка підтримує різноманітні алгоритми шифрування: 3DES, AES, RC5, Blowfish та інші. OpenVPN доступний на усіх ОС: Linux, Windows, Android, Mac/iOS. Може працювати на TCP/UDP-портах. Єдиний недолік — повільний;
  • L2TP — розшифровується як Layer 2 Tunneling Protocol, подібно до IKEv2, є різновидом батьківського IPSEC-протоколу. Відносно швидкий і відносно безпечний;
  • PPTV — старий VPN-протокол, який має вразливості. У якості шифрування використовується Microsoft’s Point-to-Point Encryption protocol (MPPE) з максимум 128-бітними ключами.

WireGuard VPN comparison

Який VPN-протокол обрати? Я обираю WireGuard. Але IKEv2 не гірший, просто його складніше налаштовувати і, як на мене, він більш Windows-орієнтований (інтегрований в середовище Windows). Тим часом як WireGuard вдалося самотужки розгорнути за 10 хвилин. Плюс існують додаткові скрипти, які поєднують роботу WireGuard з іншими додатками, наприклад Pihole (WireHole), що дає на виході не лише VPN, а й фільтрацію трафіку.

Інструкція з розгортання VPN WireGuard на VPS Ubuntu 20.04

Розгортаємо VPS

Для того, щоб розгорнути бажаний VPN, необхідно мати власний віртуальний сервер (VPS). Придбати його можна на різних хмарних платформах, наприклад:

Майже кожен з них дає безкоштовно створити сервер, скориставшись послугою Free Tier або наданими бонусними кредитами.

Отже, обираємо платформу і переходимо до створення VPS:

  1. Операційна система – мій вибір припадає на Ubuntu (20.04) як один з найстабільніших і найсумісніших дистрибутивів Linux, який має чудову документацію і підтримку в інтернеті.
  2. Технічні характеристики  – мінімальні.
  3. Доступ до сервера – по SSH-ключу.

Розгортання і конфігурація VPN

Під’єднуємося до сервера і першим ділом оновлюємо операційну систему:

apt update -y
apt upgrade -y

Переходимо у налаштування фаєрволу й відкриваємо вхідні (inbound) порти для всіх або тільки визначених IP:

SSH TCP 22 0.0.0.0/24 (задати бажану IP-адресу чи діапазон)
SSH UDP 51820 0.0.0.0/24 (задати бажану IP-адресу чи діапазон)

Примітка: бажано перевірити, щоб у панелі керування сервером, в налаштуваннях зовнішнього фаєрволу (якщо він є) ці порти були теж відкритими.

Тепер створюємо на сервері файл конфігурації WireGuard VPN:

/etc/sysctl.d/10-wireguard.conf

Додаємо рядок в нього, який відповідає за “прокидання” портів і зберігаємо файл:

net.ipv4.ip_forward=1

Аби налаштування набрало чинності виконуємо команду:

sudo sysctl -p /etc/sysctl.d/10-wireguard.conf

Встановлюємо серверний компонент WireGuard:

sudo apt update && sudo apt install wireguard -y

Генеруємо серверні і клієнтські ключі доступу:

sudo -i
cd /etc/wireguard/
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee client.key | wg pubkey > client.pub

Отримаємо наступні файли:

/etc/wireguard# ls -l
-rw------- 1 root root 45 Sep 29 10:32 client.key
-rw------- 1 root root 45 Sep 29 10:32 client.pub
-rw------- 1 root root 45 Sep 29 10:32 server.key
-rw------- 1 root root 45 Sep 29 10:32 server.pub

Створюємо WireGuard-профіль для запуску VPN-сервера:

nano wg0.conf

Прописуємо конфігурацію і зберігаємо файл (CTRL+O):

[Interface]
Address = 10.1.1.1/24
ListenPort = 51820
PrivateKey = вставити_вміст_server.key
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = вставити_вміст_client.pub
AllowedIPs = 10.1.1.2/32

Вмикаємо і запускаємо WireGuard VPN-сервіс:

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Ваш VPN-сервер готовий до роботи.

Порада: VPN-сервер можна періодично вимикати (power off), якщо ним не користуєтесь, таким чином кошти за вимкнений сервер не накопичуватимуться на балансі.

Налаштування VPN-клієнта WireGuard для підключення з ОС Linux

Тепер, коли VPN-сервер було розгорнуто і він працює, необхідно до нього підключитися зі свого комп’ютера. У даному випадку я продемонструю як це зробити на прикладі Linux.

Спочатку треба встановити WireGuard VPN-клієнт:

sudo apt-get install wireguard

Створюємо файл підключення до Wireguard-сервера:

nano /etc/wireguard/wg0.conf

Прописуємо конфігурацію підключення до VPN:

[Interface]
PrivateKey = вставити_вміст_client.key
Address = 10.1.1.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = вставити_вміст_server.pub
AllowedIPs = 0.0.0.0/0
Endpoint = публічна_IP_адреса_VPN_сервера:51820
PersistentKeepalive = 15

Зберігаємо і запускаємо мережеву службу Linux – WireGuard:

sudo wg-quick up wg0

Якщо все зроблено вірно –  має бути ініційоване VPN-з’єднання без помилок (error).

Дізнатись статус WireGuard та контролювати трафік можна командою:

sudo wg

Перевірити свою нову IP-адресу можна з допомогою curl:

curl ip.me

Зупинити з’єднання, відключитись від VPN Wireguard:

sudo wg-quick down wg0

Ось і все.

Налаштування VPN-клієнта WireGuard для підключення з ОС Android

Для налаштування WireGuard на Android необхідно завантажити додаток з Google Play та створити новий профіль, де можна вписати той самий шаблон конфігурації, що й для Linux:

Конфігурація WireGuard VPN на Android

Схема підключення до VPN WireGuard кількох пристроїв
Схема підключення до VPN WireGuard кількох пристроїв

Корисні посилання

Перевірити швидкість інтернет-з’єднання:

Перевірити чи є витік даних у вашому VPN-з’єднанні:

Документації по WireGuard VPN:

Читайте також: 👉Який VPN обрати та як його перевірити?

ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:

0 0 голосів
Рейтинг статті
Підписатися
Сповістити про
guest
0 Коментарі
Старіші
Новіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Поставте запитання й отримайте відповідь!x
Отримати комерційну пропозицію
Оформити заявку
Замовити консультацію
Замовити дзвінок

Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!