Установка WireGuard на Ubuntu: Настройка VPN сервера и клиента | AdminWiki

Установка WireGuard на Ubuntu: Полное руководство для DevOps

19 декабря 2025 7 мин. чтения #devops #ubuntu #vpn #wireguard #безопасность #сетевые технологии

Что такое WireGuard и почему он лучше?

WireGuard — это современный, быстрый и безопасный VPN-протокол, который завоевал популярность благодаря своей простоте и производительности. Если ты работаешь с облачными сервисами или удаленными серверами, WireGuard станет твоим надежным инструментом для создания защищенных туннелей.

Важное преимущество: WireGuard работает на уровне ядра Linux, что обеспечивает минимальные задержки и максимальную скорость по сравнению с традиционными VPN-решениями.

Подготовка системы Ubuntu к установке

Перед началом установки WireGuard убедись, что у тебя:

  • Ubuntu 20.04 LTS, 22.04 LTS или новее
  • Права суперпользователя (sudo)
  • Статический IP-адрес для сервера (рекомендуется)
  • Открытые порты в фаерволе (по умолчанию 51820/UDP)

Обновление системы и установка зависимостей

Давай начнем с обновления пакетов системы:

bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y software-properties-common

Установка WireGuard на Ubuntu

WireGuard входит в официальные репозитории Ubuntu начиная с версии 20.04. Установка выполняется одной командой:

bash
sudo apt install -y wireguard

Внимание: Если ты используешь Ubuntu 18.04 или более старую версию, потребуется добавить PPA репозиторий: sudo add-apt-repository ppa:wireguard/wireguard

Проверка установки

Убедись, что WireGuard установился корректно:

bash
wg --version
modinfo wireguard

Настройка WireGuard сервера

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

Первым делом сгенерируем приватный и публичный ключи для сервера:

bash
cd /etc/wireguard
umask 077
wg genkey | tee privatekey | wg pubkey > publickey

Создание конфигурационного файла сервера

Создай файл конфигурации /etc/wireguard/wg0.conf:

config
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = [ТВОЙ_ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА]

# Клиент 1
[Peer]
PublicKey = [ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА_1]
AllowedIPs = 10.0.0.2/32

Настройка IP Forwarding

Для работы маршрутизации необходимо включить форвардинг IP-пакетов:

bash
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Настройка фаервола UFW

Если ты используешь UFW, добавь правило для порта WireGuard:

bash
sudo ufw allow 51820/udp
sudo ufw allow ssh
sudo ufw enable

Запуск WireGuard сервера

Запусти сервер WireGuard и добавь его в автозагрузку:

bash
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo systemctl status wg-quick@wg0

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

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

На клиентской машине также сгенерируем пару ключей:

bash
wg genkey | tee client_privatekey | wg pubkey > client_publickey

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

Создай конфиг для клиента client.conf:

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

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

Добавление клиента на сервер

Вернись на сервер и добавь публичный ключ клиента в конфигурацию:

bash
sudo wg set wg0 peer [ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА] allowed-ips 10.0.0.2
sudo wg-quick save wg0

Проверка работы WireGuard

Убедись, что туннель работает корректно:

bash
# На сервере
sudo wg show

# На клиенте (после подключения)
ping 10.0.0.1

Управление WireGuard

Команда Описание
sudo systemctl start wg-quick@wg0 Запустить интерфейс
sudo systemctl stop wg-quick@wg0 Остановить интерфейс
sudo systemctl restart wg-quick@wg0 Перезапустить интерфейс
sudo wg show Показать статус и подключенных пиров

Частые проблемы и решения

Проблема: Нет соединения с сервером

  • Проверь, открыт ли порт 51820/udp на фаерволе
  • Убедись, что IP-адрес сервера доступен из сети
  • Проверь правильность публичного ключа сервера в конфиге клиента

Проблема: Нет интернета через VPN

  • Убедись, что IP forwarding включен (cat /proc/sys/net/ipv4/ip_forward)
  • Проверь правила iptables в PostUp/PostDown
  • Убедись, что в конфиге клиента AllowedIPs = 0.0.0.0/0

Безопасность и лучшие практики

Важно для безопасности:

  • Регулярно обновляй WireGuard до последней версии
  • Используй сильные приватные ключи (они генерируются автоматически)
  • Ограничивай доступ по IP для SSH и других сервисов
  • Регулярно проверяй логи на предмет подозрительной активности

FAQ: Ответы на частые вопросы

Как добавить нового клиента?

Для добавления нового клиента:

  1. Сгенерируй ключи на клиенте
  2. Добавь секцию [Peer] в конфиг сервера с новым IP и публичным ключом
  3. Перезапусти WireGuard на сервере
  4. Настрой конфиг на клиенте с IP сервера и его публичным ключом

WireGuard vs OpenVPN: Что лучше?

WireGuard выигрывает по:

  • Скорости (работа на уровне ядра)
  • Простоте конфигурации
  • Безопасности (меньше кода = меньше уязвимостей)
  • Производительности на мобильных устройствах

Как сделать резервное копирование конфигурации?

Скопируй директорию /etc/wireguard и сохрани приватные ключи в безопасном месте:

bash
sudo tar -czf wireguard_backup.tar.gz /etc/wireguard/

Заключение

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

Помни: WireGuard — это инструмент, который становится тем лучше, чем больше ты его используешь. Экспериментируй с настройками, добавляй новых клиентов и не забывай о безопасности.

Следующие шаги: Попробуй настроить WireGuard на нескольких серверах для создания mesh-сети или интегрируй его с Docker для изоляции контейнеров.

Поделиться:
Сохранить гайд? В закладки браузера