Собственный Wireguard VPN.
Сегодня мы будем говорить в этой статье про Wireguard и как поднять защищенный, собственный VPN на базе этого протокола. Ух чувствуется... 🔥
Начнем с того, что вообще такое Wireguard и чем его едят ?
WireGuard — коммуникационный протокол и бесплатное программное обеспечение с открытым исходным кодом, который реализует зашифрованные виртуальные частные сети. Он был разработан для простого использования технологии VPN, высокой производительности и низкой поверхности атаки. Можете сами ознакомиться с ним. Он более чем доступен для каждого пользователя. Он быстрее и симпатичнее чем тот же OpenVPN. Его можно подключить абсолютно на все современные устройства. Начиная даже от одно платный Arduino, до BSD систем. Хватит теории. Перейдем к делу. Сначала нам нужно приобрести сервер. Вам нужно срочно прочитать мою статью про настройки и повышение безопасности сервера. Я там абсолютно все разобрал и показал. После того как мы приобрели и настроили наш сервер. Перейдем к установке Wireguard на сервере. Кстати весь установка будет показан на дистрибутиве Debian 11
Установка...
Подключимся через SSH и нам нужно первым делом обновить наши пакеты. Командой:
sudo apt update && apt upgrade -y
Потом после обновление можем перейти на установку самого Wireguard...
sudo apt install wireguard --> Поставили Wireguard. sudo apt-get install wireguard-dkms wireguard-tools linux-headers-$(uname -r) --> Поставим модул ядра. sudo modprobe wireguard && lsmod | grep wireguard --> Проверяем загружен ли модуль wireguard 94208 0 --> Если так, все отлично!
Мы установили нам нужные пакет. Перейдем к конфигурации Wireguard...
sudo su --> Используем привилегии. cd /etc/wireguard/ --> Открываем каталог. wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey --> Генерируем ключи. chmod 600 privatekey --> Доступ к этому файлу. ip add --> Посмотрим,как у вас называется сетевой интерфейс. Скорее всего у вас сетевой интерфейс eth0, но возможно и другой. У меня это ens3. Это название интерфейса используется далее в конфиге /etc/wireguard/wg0.conf, который мы сейчас создадим. nano wg0.conf --> Создаем файл для конфигурации Wireguard. Скопируем в наш конфиг то что внизу и сохраним. [Interface] PrivateKey = <privatekey> Address = 10.0.0.1/24 ListenPort = <Ваш порт> PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE Вставляем вместо <privatekey> содержимое файла /etc/wireguard/privatekey Обратите внимание в строках PostUp и PostDown. Если у вас не ens3, замените на свой вариант. echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf --> Настравиваем ip forwarding. sysctl -p
Теперь включаем systemd демон Wireguard...
systemctl enable wg-quick@wg0.service --> Включаем демон. systemctl start wg-quick@wg0.service --> Стартуем демон Wireguard. systemctl status wg-quick@wg0.service --> Посмотрим статус.
wg genkey | tee /etc/wireguard/zxc_privatekey | wg pubkey | tee /etc/wireguard/zxc_publickey --> Генерируем ключи для клиента. Теперь добавим следующую строчку на wg0.conf: [Peer] PublicKey = <zxc_publickey> AllowedIPs = 10.0.0.2/32 Вместо <zxc_publickey> — Заменяем на содержимое файла /etc/wireguard/zxc_publickey
Осталось перезагрузить сервис...
systemctl restart wg-quick@wg0 --> Перезагрузим сервис. systemctl status wg-quick@wg0 --> Посмотрим статус сервиса.
Клиент...
Мы закончили наши действии с сервером. Перейдем на машину клиента. (например ваш ноутбук) | Я буду показывать на своем примере. У меня сейчас на ноутбуке стоит Arch Linux. Начнем с установки пакетов:
sudo pacman -S wireguard-tools systemd-resolvconf sudo systemctl enable systemd-resolved.service sudo systemctl start systemd-resolved.service sudo systemctl start systemd-resolved.service
Идем создавать конфиг для клиента...
sudo su cd /etc/wireguard/ nano wg0-client.conf Скопируем то что внизу и сохраним конфиг: [Interface] PrivateKey = <CLIENT-PRIVATE-KEY> Address = 10.0.0.2/32 DNS = 1.1.1.1 [Peer] PublicKey = <SERVER-PUBKEY> Endpoint = <SERVER-IP>:51830 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 20
<CLIENT-PRIVATE-KEY> заменяем на приватный ключ клиента, то есть содержимое файла /etc/wireguard/zxc_privatekey на сервере. <SERVER-PUBKEY> заменяем на публичный ключ сервера, то есть на содержимое файла /etc/wireguard/publickey на сервере. <SERVER-IP> заменяем на IP сервера.
Наш конфиг для клиента готов. Если вы хотите использовать его на смартфоне, скачиваете программу Wireguard. Дальше вам нужно будет этот конфиг скачать на ваше устройство и просто за 2 клика установить соединение. Посмотрим как я сам пользуюсь...
В принципе я могу тут остановиться, так как миссия уже выполнен. Но согласитесь, что не удобно каждый раз вводить в терминале это в ручную. Давайте делаем команду покороче.
nano vpnu --> Создаем первый файл для подключение. nano vpnd --> Создаем второй файл для отключение. Пропишем там: #!/bin/sh wg-quick up wg0-client А на втором файле "vpnd", заменим значение "up" на "down". Cохраним файлы. chmod +x vpnu && chmod +x vpnd --> Права на выполнение. cp vpnu /usr/bin/vpnu && cp vpnd /usr/bin/vnpd --> Скопируем наши бинарники.
Все прекрасно работает. Успех 🔥
Итоги...
Такс, мы сегодня разобрали очередную важную тему. Думаю мне не стоит вам обьяснить, почему использовать собственный ВПН надежнее и самый лучший вариант. В наше время те кто владеют информацией, владеет миром. Нужно помнить про цифровую гигиену и позаботиться о своей конфиденциальности. VPN очень хороший инструмент, но его мало для полной обеспечение анонимности. Есть и другие способы деаномизации. Следующая статья будет об этом и мы поговорим про DNS утечках. Способы защиты от этого. Если у вас возникают какие-то проблемы, можете мне написать в телеграмме. На сегодня хватит...
С вами был Томми, подпишитесь на блог, до встречи Господа. 🍷 Я пошел кушать, хех. А ты про телеграмм не забудь.