Як безкоштовно налаштувати VPN-сервер вдома

У цій статті я покроково проведу вас через процес налаштування WireGuard VPN на сервері Linux. Це дозволить вам отримати доступ до захищених Інтернет-ресурсів з таких небезпечних місць, як кав'ярні.

Але чому VPN? А чому WireGuard?

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

Сподіваємось, звичайно, сам веб-сайт банку буде зашифрований, а це означає, що ключові дані, що надходять між банком та вашим ПК чи смартфоном, будуть нечитабельними для тих, хто слухає по дорозі.

А як бути, якщо ви підключаєтесь з дому чи офісу? За допомогою VPN ви можете бути впевнені, що елементи даних, не затьмарені звичайним шифруванням, не побачать неправильні люди.

Але що, якщо ви підключаєтеся через загальнодоступний Wi-Fi маршрутизатор в аеропорту чи кав’ярні? Ви впевнені, що мережа не була порушена або хакери не спостерігають непомітно?

Щоб протистояти цій цілком реальній загрозі, ви можете відкрити підключення на своєму ноутбуці чи телефоні до сервера VPN. Таким чином, усі ваші передачі даних відбуваються через віртуальний тунель. Кожна частина ваших чутливих з'єднань буде невидимою для будь-кого в локальній мережі, з якої ви підключаєтесь.

WireGuard - найновіший з трьох найбільших гравців у світі VPN із відкритим кодом, а двома іншими є IPsec та OpenVPN.

WireGuard створений таким чином, щоб бути простішим, швидшим та гнучкішим за інші. Це нова дитина, але вона швидко підібрала важливих друзів. За наполяганням самого творця Linux Лінуса Торвальдса WireGuard нещодавно був включений в ядро ​​Linux.

Де побудувати свій VPN-сервер?

Звичайно, ви завжди можете зібрати сервер VPN вдома і налаштувати переадресацію портів через маршрутизатор вашого провайдера. Але часто більш практичним є сенс запускати його у хмарі.

Не хвилюйся. Запевняю вас, що цей спосіб буде набагато ближчим до швидкої та безболісної конфігурації "встанови і забудь". І навряд чи все, що ви будуєте вдома, було б настільки надійним - або безпечним - як інфраструктура, яку надають великі хмарні провайдери, такі як AWS.

Однак, якщо у вас трапляється професійно захищений Інтернет-сервер, який лежить біля будинку (або ви готові ризикнути із запасним Raspberry Pi, який у вас лежить), тоді він працюватиме приблизно так само.

Завдяки WireGuard, будь то в хмарі чи на фізичному сервері, зробити свій власний домашній VPN ще ніколи не був простішим. Повне налаштування можна зробити за півгодини.

Збираючись

Запустіть і запустіть свій екземпляр хмари, можливо, скориставшись підручником тут.

Переконайтесь, що порт 51820 відкритий для вашого сервера. Це робиться за допомогою груп безпеки на AWS та брандмауера мережі VPC на Google Cloud.

У сучасних випусках Debian / Ubuntu Wireguard можна встановити від менеджерів пакетів, як це:

sudo apt install wireguard 

Або з yum, зі сховища EPEL:

sudo yum install kmod-wireguard wireguard-tools 

Крок перший: створіть ключі шифрування

У будь-якому каталозі на сервері, де ви хочете створити файли, що містять відкритий та закритий ключі, використовуйте цю команду:

umask 077; wg genkey | tee privatekey | wg pubkey > publickey 

Зробіть те ж саме для клієнта в іншому каталозі або на локальній машині. Просто переконайтеся, що пізніше ви зможете розрізнити різні набори клавіш.

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

Крок другий: створіть конфігурацію сервера

Вам потрібно створити файл .conf у каталозі / etc / wireguard. Ви навіть можете мати кілька VPN, які працюють одночасно, використовуючи різні порти.

Вставте такий код у новий файл:

sudo nano /etc/wireguard/wg0.conf 
[Interface] Address = 10.0.0.1/24 ListenPort = 51820 # use the server PrivateKey PrivateKey = GPAtRSECRETLONGPRIVATEKEYB0J/GDbNQg6V0s= # you can have as many peers as you wish # remember to replace the values below with the PublicKey of the peer [Peer] PublicKey = NwsVexamples4sBURwFl6HVchellou6o63r2B0s= AllowedIPs = 10.0.0.2/32 [Peer] PublicKey = NwsexampleNbw+s4sBnotFl6HrealxExu6o63r2B0s= AllowedIPs = 10.0.0.3/32 

Запустіть VPN

sudo systemctl start [email protected] 

Якщо у вас немає systemd (що може бути правдою, якщо ваш екземпляр працює під управлінням Amazon Linux), ви можете використовувати sudo wg-quick up wg0.

Крок третій: створіть конфігурацію клієнта

Спочатку встановіть Wireguard на своєму клієнтському комп'ютері, так само в Linux або через магазин додатків, якщо ви використовуєте Windows, macOS, Android або iPhone.

Якщо ви використовували в Інтернеті генератор ключів або сценарій QR, тоді ви можете підключити телефон, сфотографувавши QR-код.

Після встановлення WireGuard на клієнт, налаштуйте його, використовуючи такі значення:

# Replace the PrivateKey value with the one from your client interface [Interface] Address = 10.0.0.2/24 ListenPort = 51820 PrivateKey = CNNjIexAmple4A6NMkrDt4iyKeYD1BxSstzer49b8EI= #use the VPN server's PublicKey and the Endpoint IP of the cloud instance [Peer] PublicKey = WbdIAnOTher1208Uwu9P17ckEYxI1OFAPZ8Ftu9kRQw= AllowedIPs = 0.0.0.0/0 Endpoint = 34.69.57.99:51820 

Є багато необов’язкових доповнень, які вам можуть знадобитися, залежно від вашого варіанту використання, наприклад, вказання DNS або попередньо спільних ключів для додаткового рівня безпеки.

Запустіть клієнт так само, як і сервер, якщо ви працюєте в Linux або через саму програму в інших системах.

Перевірте свою VPN

Type "my ip" in your browser to discover your public IP address. If the IP you get is different from the address your computer had before starting the VPN, then you were successful!

(And if you forgot what it was before, try sudo systemctl stop [email protected], checking and starting it again.)

Troubleshooting Guide

Make sure your server is configured for IP forwarding. Check the /etc/sysctl.conf file, or run:

echo 1 > /proc/sys/net/ipv4/ip_forward 

Your connection dies often? Add this to the peer section of the client configuration:

PersistentKeepalive = 25 

Not sure why it's not working? Try sudo tcpdump -i eth on the server while trying to use the client.

Thanks for reading this guide.

If you want to dive deeper, consider taking my paid Manning course on WireGuard VPN.