WireGuard VPN
2025-11-06
·
4 мин. для прочтения
WireGuard VPN.
Содержание
1 Общая информация
- WireGuard есть коммуникационный протокол и бесплатное программное обеспечение с открытым исходным кодом, которое реализует зашифрованные виртуальные частные сети (VPN).
1.1 Основные особенности WireGuard
- Минималистичный дизайн.
- Высокая производительность.
- Простота конфигурации.
- Криптографические примитивы:
- Curve25519 — для обмена ключами;
- ChaCha20 — для шифрования данных;
- Poly1305 — для проверки целостности сообщений;
- BLAKE2s — для высокоскоростного хэширования;
- HKDF — для безопасной генерации ключей.
- Кроссплатформенность.
- Несколько топологий. Поддерживает топологии «точка-точка», «звезда» (сервер/клиент) и Mesh (сеть).
1.2 Применение WireGuard
- Защита трафика в корпоративных сетях.
- Создание безопасного доступа к облачным и локальным ресурсам.
- Шифрование данных в публичных Wi-Fi сетях.
- Настройка протокола на домашних роутерах для защиты всей сети.
1.3 Ограничения WireGuard
- Привязка к статическим IP:
- каждый клиент должен быть настроен с фиксированным IP, что может быть неудобно в динамических сетях.
- Ограниченная анонимность
- протокол не скрывает метаданные, такие как IP-адреса.
- Отсутствие встроенной обфускации
- WireGuard не скрывает трафик от анализа.
2 Сервер
2.1 Установка WireGuard
2.1.1 Rocky Linux 9
- Установим репозиторий EPEL:
sudo dnf install epel-release -y
- Установим пакет
wireguard-tools:
sudo dnf install wireguard-tools -y
- Проверка установки:
wg --version
2.2 Настройка WireGuard
- WireGuard использует криптографические ключи для аутентификации и шифрования трафика между узлами.
2.2.1 Генерация ключей сервера
- Создадим директорию для хранения ключей и сгенерируем пару ключей:
sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard
sudo wg genkey | sudo tee /etc/wireguard/server_private.key
sudo wg pubkey < /etc/wireguard/server_private.key | sudo tee /etc/wireguard/server_public.key
sudo chmod 600 /etc/wireguard/server_private.key /etc/wireguard/server_public.key
2.2.2 Создание конфигурационного файла сервера
- Создадим файл конфигурации
wg0.conf:
sudo touch /etc/wireguard/wg0.conf
- Добавьте в него следующие строки, заменив на ваш приватный ключ:
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = <Server_Private_Key>
- Приведенная выше конфигурация WireGuard создает новый интерфейс с частным IP-адресом.
10.0.0.1/24:Address = 172.16.0.1/24: назначает частный IP-адрес172.16.0.1интерфейсу WireGuard с маской подсети255.255.255.0.SaveConfig = true: позволяет WireGuard автоматически сохранять конфигурацию при выключении сервера.PrivateKey = <Server_Private_Key>: устанавливает закрытый ключ сервера WireGuard.ListenPort = 51820: устанавливает порт сервера WireGuard51820для прослушивания входящих запросов на VPN-подключение.
2.2.3 Генерация конфигурации клиента
- Замените
clientжелаемой схемой именования клиентов. - Сгенерируем пару ключей для клиента:
sudo wg genkey | sudo tee /etc/wireguard/client_private.key
sudo wg pubkey < /etc/wireguard/client_private.key | sudo tee /etc/wireguard/client_public.key
2.2.4 Создание конфигурационного файла клиента
- Создайте файл
client.conf:
sudo touch /etc/wireguard/client.conf
- Добавьте следующие строки, заменив соответствующие значения вашими ключами и IP-адресом сервера:
[Interface]
PrivateKey = <Client_Private_Key>
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = <Server_Public_Key>
Endpoint = <Server_Public_IP>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
- Создаётся клиент WireGuard с IP-адресом частного туннеля VPN
10.0.0.2/24:PrivateKey: устанавливает закрытый ключ клиента WireGuard, используемый для шифрования и аутентификации в туннеле VPN.Address: устанавливает частный IP-адрес клиента WireGuard10.0.0.2/24.DNS: устанавливает публичный DNS-сервер Google8.8.8.8в качестве DNS-резолвера для разрешения доменных имен при подключении к VPN-туннелю.PublicKey: устанавливает открытый ключ целевого сервера WireGuard.AllowedIPs: определяет сетевые адреса клиентов сети, которым разрешено подключение через туннель VPN.Endpoint: устанавливает публичный IP-адрес сервера WireGuard и порт51820для использования при подключении к VPN-туннелю.PersistentKeepalive: поддерживает VPN-соединение активным, отправляя пакеты поддержки активности каждые15секунд.
2.2.5 Добавление клиента на сервер
Откройте конфигурационный файл сервера
/etc/wireguard/wg0.conf.Добавьте информацию о клиенте:
[Peer]
PublicKey = <Client_Public_Key>
AllowedIPs = 10.0.0.2/32
2.2.6 Управление сервисом WireGuard
- Запустите интерфейс WireGuard:
sudo systemctl enable --now wg-quick@wg0
- Убедитесь, что сервис работает корректно:
sudo systemctl status wg-quick@wg0
2.2.7 Настройка брандмауэра
- Откройте порт 51820/UDP в FirewallD:
sudo firewall-cmd --add-service=wireguard --permanent
sudo firewall-cmd --reload
- Разрешите пересылку пакетов для обеспечения работы VPN:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
- Добавьте правило маскарадинга для сети WireGuard:
sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" masquerade'
sudo firewall-cmd --reload
3 Клиент
3.1 Установка
3.1.1 Gentoo
- Установите:
emerge net-vpn/wireguard-tools
3.1.2 Rocky Linux 9
- Установим репозиторий EPEL:
sudo dnf install epel-release -y
- Установим пакет
wireguard-tools:
sudo dnf install wireguard-tools -y
- Проверка установки:
wg --version
3.2 Модуль ядра
- Включите модуль в ядро:
Device Drivers ---> [*] Network device support ---> [*] Network core driver support <*> WireGuard secure network tunnel
3.3 Конфигурация
- Скопируйте конфигурацию клиента с сервера, например с помощью
scp:sudo scp root@wireguard-server-ip:/etc/wireguard/client.conf /etc/wireguard/wg0.conf - Активируйте сервис
systemd-resolved:sudo systemctl enable --now systemd-resolved - Активируйте интерфейс:
sudo wg-quick up wg0 - Проверьте статус туннеля:
sudo wg - Проверьте связь с сервером:
ping -c 5 10.0.0.1
4 Утилиты
4.1 wghttp
- Репозиторий: https://github.com/zhsj/wghttp
- Использовать WireGuard в качестве прокси-сервера HTTP и SOCKS5.