Перейти к основному содержимому
Вернуться в категорию

Настройка VPN-сервера WireGuard: пошаговое руководство

Настройте VPN-сервер WireGuard: генерация ключей, конфигурация сервера и клиента, IP-пересылка, правила брандмауэра и настройка клиентов Windows/Linux/Android.

Время чтения: 15 мин Безопасность
wireguardvpnбезопасность сервератуннельlinuxсетевая безопасностьшифрованиенастройка vpn
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Настройка VPN-сервера WireGuard: пошаговое руководство

WireGuard — современный, быстрый и безопасный VPN-протокол. По сравнению с OpenVPN и IPSec он имеет гораздо более простую структуру и обеспечивает высокую производительность. Это руководство проведёт вас через настройку VPN-сервера WireGuard на вашем сервере REXE.

Почему стоит выбрать WireGuard?

  • Простая конфигурация: Всего несколько строк настройки
  • Высокая производительность: Работает на уровне ядра, низкая задержка
  • Современная криптография: ChaCha20, Poly1305, Curve25519
  • Небольшая кодовая база: ~4000 строк (OpenVPN ~100 000 строк)
  • Кроссплатформенность: Linux, Windows, macOS, iOS, Android

Установка

hljs bash
# Ubuntu 20.04+
sudo apt update
sudo apt install wireguard -y

# CentOS/AlmaLinux 8+
sudo dnf install epel-release -y
sudo dnf install wireguard-tools -y

Генерация ключей

hljs bash
# Генерация ключей сервера
cd /etc/wireguard

# Генерация приватного ключа
wg genkey | sudo tee /etc/wireguard/server_private.key

# Получение публичного ключа
sudo cat /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

# Установка прав доступа
sudo chmod 600 /etc/wireguard/server_private.key

Конфигурация сервера

hljs bash
# Найти сетевой интерфейс
ip route | grep default

# Создать файл конфигурации WireGuard
sudo nano /etc/wireguard/wg0.conf
hljs ini
# /etc/wireguard/wg0.conf — Конфигурация сервера

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА1
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА2
AllowedIPs = 10.0.0.3/32

Замените eth0 именем вашего реального сетевого интерфейса. Найдите его с помощью ip route | grep default.

Включение IP-пересылки

hljs bash
# Включить временно
sudo sysctl -w net.ipv4.ip_forward=1

# Включить постоянно
sudo nano /etc/sysctl.conf
# Добавьте или раскомментируйте:
# net.ipv4.ip_forward=1

# Применить изменения
sudo sysctl -p

Правила брандмауэра

hljs bash
# С UFW
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw enable

# С iptables
sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Сохранить правила постоянно
sudo apt install iptables-persistent -y
sudo netfilter-persistent save

Запуск службы WireGuard

hljs bash
# Запустить интерфейс WireGuard
sudo wg-quick up wg0

# Автозапуск при загрузке системы
sudo systemctl enable wg-quick@wg0

# Проверить статус
sudo wg show

Конфигурация клиента

Конфигурация клиента Linux

hljs ini
# /etc/wireguard/wg0.conf — Конфигурация клиента

[Interface]
Address = 10.0.0.2/24
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_КЛИЕНТА
DNS = 1.1.1.1

[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА
Endpoint = IP_СЕРВЕРА:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Настройка клиента Windows

  1. Скачайте и установите WireGuard для Windows
  2. Откройте приложение → "Добавить туннель" → "Добавить пустой туннель"
  3. Вставьте конфигурацию и нажмите "Активировать"

Настройка клиента Android/iOS

hljs bash
# Генерация QR-кода на сервере
sudo apt install qrencode -y
qrencode -t ansiutf8 < /path/to/client.conf

Добавление новых клиентов

hljs bash
# Генерация ключей клиента
wg genkey | tee /etc/wireguard/client3_private.key | wg pubkey > /etc/wireguard/client3_public.key

# Добавить на сервер (без перезапуска)
sudo wg set wg0 peer $(cat /etc/wireguard/client3_public.key) allowed-ips 10.0.0.4/32

# Сохранить постоянно
sudo wg-quick save wg0

Устранение неполадок

hljs bash
# Просмотр логов WireGuard
sudo journalctl -u wg-quick@wg0 -f

# Статистика соединений
sudo wg show wg0

# Проверка IP-пересылки
cat /proc/sys/net/ipv4/ip_forward

# Проверка правил брандмауэра
sudo iptables -L -n -v
sudo iptables -t nat -L -n -v

После установки соединения WireGuard поле latest handshake в выводе sudo wg show должно быть актуальным. Если рукопожатия нет, проверьте IP/порт сервера, ключи и правила брандмауэра.

Заключение

WireGuard предоставляет современное и безопасное VPN-решение. Благодаря простой конфигурации и высокой производительности он идеально подходит как для личного использования, так и для корпоративных сетей.

Часто задаваемые вопросы

Какой порт использует WireGuard?

WireGuard по умолчанию использует UDP-порт 51820. Вы можете изменить его — замените значение ListenPort в файле конфигурации. Не забудьте открыть тот же порт в брандмауэре.

В чём разница между WireGuard и OpenVPN?

WireGuard намного проще (4000 строк кода), быстрее и использует современную криптографию. OpenVPN более зрелый с широкой поддержкой платформ. WireGuard рекомендуется для новых установок.

Как направить весь интернет-трафик через VPN?

Используйте AllowedIPs = 0.0.0.0/0, ::/0 в конфигурации клиента. Это направляет весь IPv4 и IPv6 трафик через VPN-туннель. На сервере должны быть включены IP-пересылка и NAT masquerade.

Сколько клиентов может подключиться?

У WireGuard нет теоретического ограничения на количество клиентов. Практический предел зависит от аппаратного обеспечения сервера. Добавьте отдельный блок [Peer] для каждого клиента и назначьте уникальный IP-адрес.

Что делать, если соединение WireGuard обрывается?

Проверьте статус соединения с помощью 'sudo wg show'. Если поле 'latest handshake' не актуально, соединения нет. Проверьте IP/порт сервера, ключи и правила брандмауэра. Перезапустите с помощью 'sudo wg-quick down wg0 && sudo wg-quick up wg0'.

Связанные статьи

Сканирование на вредоносное ПО и руткиты: rkhunter и ClamAV

Защитите Linux-сервер от вредоносного ПО и руткитов. Установка rkhunter и ClamAV, настройка сканирования, интерпретация результатов, планирование сканирований и реагирование на инциденты.

14 мин
вредоносное ПОруткитrkhunter

Настройка Fail2Ban: Защита SSH от брутфорс-атак

Защитите сервер от SSH брутфорс-атак с помощью Fail2Ban. Установка, настройка jail.local, джейлы для Nginx/Apache, белый список IP, мониторинг блокировок и email-уведомления.

13 мин
fail2banбрутфорсбезопасность ssh

Сетевая безопасность Zero Trust: руководство по базовой настройке

Принципы сетевой безопасности Zero Trust и практическая реализация: никогда не доверяй всегда проверяй, микросегментация, доступ на основе идентификации и реализация с существующими инструментами Linux.

14 мин
zero trustсетевая безопасностьмикросегментация
Сетевой трафикВходящий GbpsИсходящий Gbps