Установка и настройка WireGuard на Ubuntu 20.04

О чём это руководство
WireGuard — простой, быстрый и безопасный VPN с обменом по публичным ключам. В этом руководстве пошагово показано, как развернуть WireGuard на двух машинах с Ubuntu 20.04 (сервер и клиент). Приведены команды, конфиги, проверки статуса и рекомендации по безопасности. Подойдёт администраторам Linux и продвинутым пользователям.
Важно: все команды выполняются от имени root или через sudo. Заменяйте примерные значения (server-private-key, client-private-key, server-ip-address, eth0) на реальные.
Короткая терминология
- WireGuard: современный VPN с криптографией на основе пары ключей (public/private).
- Peer: удалённый узел в сетевой конфигурации WireGuard.
- wg-quick: утилита для быстрого поднятия интерфейсов WireGuard.
Требования
- Две машины с Ubuntu 20.04 (одна будет сервером, вторая — клиентом).
- На сервере должен быть доступ к интернет-шлюзу и настроен root/sudo.
- На обеих машинах свободен порт UDP 51820 (или другой порт по вашему выбору).
Начало: обновление и подготовка
Обновите пакеты и установите iptables (если не установлен):
apt-get update -y
apt-get install iptables -yЕсли у вас используется nftables, учитывайте совместимость правил NAT и форвардинга.
Установка WireGuard
WireGuard доступен в стандартных репозиториях Ubuntu 20.04:
apt-get install wireguard -yАльтернатива: для более новых версий пакета используйте официальный PPA или backports, но для большинства задач стандартного пакета достаточно.
Конфигурация сервера WireGuard
- Сгенерируйте приватный и публичный ключ на сервере:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickeyПроверьте файлы:
ls /etc/wireguard
cat /etc/wireguard/privatekey
cat /etc/wireguard/publickey- Создайте конфигурацию интерфейса wg0:
nano /etc/wireguard/wg0.confВставьте:
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = server-private-key
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADEПояснения:
- Address — внутренний адрес для интерфейса WireGuard на сервере.
- ListenPort — UDP-порт, на котором слушает WireGuard.
- PrivateKey — содержимое /etc/wireguard/privatekey или путь/замена на фактический ключ.
- PostUp/PostDown — правила iptables для NAT и форвардинга. Замените eth0 на имя реального внешнего интерфейса (ip a покажет имя).
- Ограничьте права на ключи и конфиг:
chmod 600 /etc/wireguard/{privatekey,wg0.conf}- Поднимите интерфейс и включите сервис systemd:
wg-quick up wg0
systemctl start [email protected]
systemctl enable [email protected]
systemctl status [email protected]Проверьте интерфейс:
wg show wg0
ip a show wg0Если интерфейс не поднимается, проверьте логи systemd: journalctl -u [email protected]
Включение переадресации IP
Разрешите пересылку IPv4, отредактировав /etc/sysctl.conf:
nano /etc/sysctl.confУбедитесь, что строка присутствует и не закомментирована:
net.ipv4.ip_forward=1Примените изменения:
sysctl -pЕсли нужна поддержка IPv6, добавьте и настройте net.ipv6.conf.all.forwarding=1 и соответствующие правила фаервола.
Настройка клиента WireGuard
На клиенте также установите пакет и сгенерируйте ключи:
apt-get install wireguard -y
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickeyСоздайте конфигурацию клиента:
nano /etc/wireguard/wg0.confПример содержимого:
[Interface]
PrivateKey = client-private-key
Address = 10.0.0.2/24
[Peer]
PublicKey = server-public-key
Endpoint = server-ip-address:51820
AllowedIPs = 0.0.0.0/0Пояснения:
- AllowedIPs = 0.0.0.0/0 — весь трафик клиента будет идти через VPN. Для маршрутизации только к подсетям сервера указывайте конкретные сети.
Добавьте клиента на сервере (добавление peer без редактирования файла):
wg set wg0 peer client-public-key allowed-ips 10.0.0.2Запустите интерфейс на клиенте:
wg-quick up wg0
wgПроверьте, что последняя рукопожатие (handshake) прошло и есть передача данных.
Контроль доступа и безопасность
- Храните privatekey с правами 600 и только для root.
- Используйте нестандартный порт UDP для усложнения распознавания (без замены безопасности криптографии).
- Включите и настройте UFW/iptables для ограничения доступа к порту WireGuard только с нужных источников или по требованиям.
- Логируйте изменения конфигураций и периодически меняйте ключи при подозрении на компрометацию.
- Для корпоративных развертываний рассмотрите использование управления конфигурациями (Ansible, Salt).
Отладка и распространённые проблемы
- Интерфейс не поднимается
- Проверьте права файлов ключей (600).
- Убедитесь, что сеть не блокирует UDP-порт.
- Посмотрите логи: journalctl -u [email protected]
- Нет доступа в интернет через VPN
- Проверьте PostUp правила NAT (eth0 заменён корректно).
- Убедитесь, что net.ipv4.ip_forward=1 применён (sysctl -p).
- Клиент не видит сервер
- Проверьте public-key на обеих сторонах.
- Убедитесь, что Endpoint включает порт UDP и сервер слушает на нём.
Резервные сценарии и возврат изменений
Если нужно быстро отключить WireGuard и вернуть состояние:
wg-quick down wg0
systemctl stop [email protected]
# удалить peer если добавляли через wg set
wg set wg0 peer remove Если вы использовали iptables в PostUp, PostDown удалит правила при опускании интерфейса. Проверьте таблицу NAT: iptables -t nat -L -n
Лучшие практики и альтернативы
- Для простой приватности подойдёт конфигурация «весь трафик через VPN» (AllowedIPs 0.0.0.0/0). Для доступа к отдельным подсетям указывайте конкретные сети.
- Если требуется централизованное управление пользователями и ключами, рассмотрите использование стека с управлением конфигураций (Ansible) или внешних решений типа PiVPN для упрощённой выдачи конфигов.
- Для мобильных клиентов используйте официальные приложения WireGuard на Android/iOS и импортируйте конфиг QR-кодом.
Критерии приёмки
- Сервер поднят и слушает порт: wg show wg0 показывает listening port.
- Клиент установил соединение: wg показывает успешный latest handshake и трафик.
- Переадресация IP включена и NAT настроен: sysctl -p и iptables показывают соответствующие правила.
- Конфиденциальность ключей: privatekey доступны только root и права 600.
Контрольный список по ролям
Системный администратор:
- Установить wireguard и iptables.
- Сгенерировать ключи и сохранить их в /etc/wireguard.
- Настроить PostUp/PostDown и включить ip_forward.
- Настроить backup конфигураций.
Инженер по безопасности:
- Проверить права доступа к ключам.
- Настроить мониторинг и журналирование.
- Провести аудит правил фаервола.
Оператор поддержки:
- Проверять статусы служб systemctl и журналов.
- Помогать при проблемах с Endpoint и DNS.
Быстрый чеклист для запуска
- apt-get update && apt-get install wireguard
- Сгенерировать ключи на сервере и клиенте
- Настроить /etc/wireguard/wg0.conf на обеих сторонах
- chmod 600 на ключах
- wg-quick up wg0 на сервере и клиенте
- sysctl -p и проверка iptables
Мини-методология развертывания (шаги)
- Подготовка ОС и бэкап конфигураций.
- Установка пакета WireGuard.
- Генерация ключей и создание конфигов.
- Тест поднятия интерфейса и проверка связи.
- Настройка NAT/форвардинга и правил безопасности.
- Документирование и мониторинг.
Часто встречающиеся команды для быстрого доступа
wg show
wg-quick up wg0
wg-quick down wg0
systemctl status [email protected]
journalctl -u [email protected] --since "1 hour ago"
ip a show wg0
iptables -t nat -L -nЗаключение
Вы успешно развернули базовую схему WireGuard на Ubuntu 20.04. Дальше можно добавить дополнительные peers, настроить авторотацию ключей, интегрировать с системами управления конфигурациями и усилить фаервол. WireGuard обеспечивает простую и быструю защиту трафика; при соблюдении правил безопасности он подходит для большинства задач.
Краткое напоминание: всегда храните privatekey в недоступном для обычных пользователей месте, проверяйте правила NAT и тестируйте подключение после каждого изменения конфигурации.
Резюме
- WireGuard лёгок в установке и конфигурации.
- Ключи и разрешения — критичная часть безопасности.
- Тестируйте handshake и трафик для уверенности в работе VPN.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента