Гид по технологиям

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

• 9 min read • Инструкции • Обновлено 27 Nov 2025
WireGuard на Ubuntu 22.04 — установка и настройка
WireGuard на Ubuntu 22.04 — установка и настройка

Схема подключения WireGuard: сервер и клиент, обмен ключами и туннелирование трафика

Коротко: установите пакет wireguard на сервере и клиенте, сгенерируйте ключи (wg genkey / wg pubkey), задайте приватные адреса IPv4/IPv6 в конфигурации /etc/wireguard/wg0.conf, включите переадресацию в /etc/sysctl.conf, добавьте правила UFW/IPTables для маскарадинга и порт 51820/UDP, затем включите сервис [email protected] и запустите wg-quick на клиенте. В статье приведён пошаговый SOP, чеклисты для разных ролей, рекомендации по безопасности, отладке и миграции.

Введение

WireGuard — современная кроссплатформенная реализация VPN с открытым исходным кодом. Использует асимметричную криптографию (пары приватных/публичных ключей) для установки зашифрованных туннелей. Поддерживает IPv4 и IPv6, проще и быстрее, чем классические IPSec/OpenVPN, и работает на Linux, Windows, macOS, iOS, Android и встраиваемых устройствах.

Эта подробная инструкция показывает, как установить WireGuard на сервер Ubuntu 22.04 и подключить к нему клиент Ubuntu 22.04. Помимо базовых шагов, включены контрольные списки (SOP), сценарии отката, отладка и рекомендации по безопасности.

Важное

  • По умолчанию WireGuard использует UDP-порт 51820. Можно изменить, но не забудьте открыть порт в фаерволе.
  • Приватные ключи должны храниться в root-only файлах с правами 600 (chmod go=).
  • Для IPv6 используйте уникальные префиксы ULA (fd00::/8) или глобальные префиксы, если у провайдера есть /64+/48.

Содержание

  • Предварительные требования
  • Быстрая инструкция (Quickstart)
  • Пошаговая настройка (с сохранёнными командами)
  • Выбор диапазонов IPv4 и IPv6
  • Конфигурация сервера и файрвола
  • Настройка клиента и маршрутизации всего трафика
  • Добавление пира на сервере
  • Запуск, проверка и отключение
  • Рекомендации по безопасности
  • Отладка и типичные ошибки с устранением
  • SOP: как добавить нового клиента (шаблон)
  • Риски и меры смягчения
  • Советы по миграции и совместимости
  • Роль‑ориентированные чеклисты
  • Краткий глоссарий
  • Список полезных команд
  • Заключение

Предварительные требования

  • Сервер с Ubuntu 22.04 с доступом по sudo (поддерживает IPv4/IPv6 по возможности).
  • Клиент с Ubuntu 22.04 (локальный десктоп или удалённый хост).
  • Непользователь root с привилегиями sudo.
  • UFW (Uncomplicated Firewall) установлен и включён.
  • Система обновлена:
$ sudo apt update && sudo apt upgrade

Важно: эти шаги рассчитаны на стандартный сетевой стек Linux. Если вы используете облачные сети (AWS, GCP, Azure), проверьте сетевые ACL и security groups.

Быстрая инструкция (Quickstart)

  1. На сервере: sudo apt install wireguard
  2. Сгенерировать ключи: wg genkey | sudo tee /etc/wireguard/private.key; sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
  3. Создать /etc/wireguard/wg0.conf с PrivateKey, Address и ListenPort
  4. Включить ip_forward в /etc/sysctl.conf и применить sudo sysctl -p
  5. Добавить PostUp/PreDown для NAT и ufw в wg0.conf, открыть порт: sudo ufw allow 51820/udp
  6. systemctl enable –now [email protected]
  7. На клиенте сгенерировать ключи, создать конфиг клиента с Peer PublicKey сервера, запустить wg-quick up wg0

Шаг 1 — Установка WireGuard и генерация пары ключей (сервер)

Ubuntu 22.04 содержит WireGuard в репозиториях, установите пакет:

$ sudo apt install wireguard

Сгенерируйте приватный ключ и сохраните в безопасный файл:

$ wg genkey | sudo tee /etc/wireguard/private.key
$ sudo chmod go= /etc/wireguard/private.key

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

$ sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Запишите обе строки (приватная — храните локально и не публикуйте; публичная — понадобится клиентам).

Шаг 2 — Выбор адресных диапазонов IPv4 и IPv6

Выделите приватный пул адресов для туннеля.

IPv4: используйте один из приватных блоков:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

Пример: 10.8.0.0/24 (сервер 10.8.0.1, клиенты 10.8.0.2/32 …)

IPv6: для ULA используйте fd00::/8 и получите уникальный /64. RFC рекомендует генерировать уникальный префикс; в примере ниже — процедура хеширования timestamp+machine-id для получения 5 байтов суффикса и формирования префикса fdXX:XXXX:XXXX::/64 (описано в исходном тексте). Пример результата:

fd4d:9c8e:c4bc::/64

Сервер: fd4d:9c8e:c4bc::1/64, пира: fd4d:9c8e:c4bc::2/64 и т.д.

Примечание: если у вас есть глобальный IPv6-префикс от провайдера — используйте его вместо ULA, но учитывайте рекламу маршрутов и безопасность.

Шаг 3 — Создание конфигурации WireGuard на сервере

Откройте конфиг для редактирования:

$ sudo nano /etc/wireguard/wg0.conf

Вставьте базовый блок (замените server_private_key на ваш приватный ключ):

[Interface]
PrivateKey = server_private_key
Address = 10.8.0.1/24, fd4d:9c8e:c4bc::/64
ListenPort = 51820
SaveConfig = true

Сохраните (Ctrl + X, Y).

Совет: храните конфиги только для root и с правами 600, особенно если в них есть приватные ключи.

Шаг 4 — Включение IP‑форвардинга

Откройте /etc/sysctl.conf и раскомментируйте строки для IPv4 и IPv6:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Затем примените:

$ sudo sysctl -p

Вы должны увидеть net.ipv4.ip_forward = 1 и net.ipv6.conf.all.forwarding = 1.

Это позволяет серверу маршрутизировать пакеты от пиров в публичный интернет.

Шаг 5 — Настройка фаервола и маскарадинга

Найдите внешний интерфейс сервера:

$ ip route list default

Пример вывода: default via 209.23.8.1 dev eth0 — значит внешний интерфейс eth0.

Добавьте правила в /etc/wireguard/wg0.conf (после SaveConfig):

PostUp = ufw route allow in on wg0 out on eth0
PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on eth0
PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Откройте порт WireGuard в UFW (51820/udp по умолчанию):

$ sudo ufw allow 51820/udp
$ sudo ufw disable && sudo ufw enable

Проверьте статус:

$ sudo ufw status

Вы должны увидеть правило для 51820/udp (IPv4 и IPv6).

Замечание: если ваша инфраструктура использует nftables вместо iptables, настройте соответствующие правила.

Шаг 6 — Запуск сервиса WireGuard

Включите и запустите systemd-сервис wg-quick:

$ sudo systemctl enable [email protected]
$ sudo systemctl start [email protected]
$ sudo systemctl status [email protected]

Вывод systemctl и wg-quick покажет добавленные адреса и применённые PostUp-правила.

Шаг 7 — Установка и настройка клиента (peer)

На клиенте установите wireguard:

$ sudo apt update
$ sudo apt install wireguard

Генерируем пару ключей аналогично серверу:

$ wg genkey | sudo tee /etc/wireguard/private.key
$ sudo chmod go= /etc/wireguard/private.key
$ sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

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

[Interface]
PrivateKey = peer_private_key
Address = 10.8.0.2/24
Address = fd4d:9c8e:c4bc::2/64

[Peer]
PublicKey = 
AllowedIPs = 10.8.0.0/24, fd4d:9c8e:c4bc::/64
Endpoint = 209.23.10.202:51820
PersistentKeepalive = 15

Если вы хотите направить через туннель весь трафик клиента, настройте маршрут и правила на клиенте (пример в исходном тексте использует таблицу 200 и правила PostUp/PreDown).

DNS: добавьте DNS в секцию Interface, например:

DNS = 209.208.127.65 2001:4860:4860::8888

Если вы используете systemd-resolved/resolvconf, установите и настройте resolvconf при необходимости:

$ sudo apt install resolvconf

Запустите туннель:

$ sudo wg-quick up wg0

Проверьте статус:

$ sudo wg

Шаг 8 — Добавление пира на сервере

Скопируйте публичный ключ пира (peer public key) и выполните на сервере:

$ sudo wg set wg0 peer  allowed-ips 10.8.0.2,fd4d:9c8e:c4bc::2

Или добавьте секцию [Peer] в /etc/wireguard/wg0.conf и сохраните; если SaveConfig = true, wg-quick обновит состояние.

Проверьте текущие пира:

$ sudo wg

Шаг 9 — Подключение и проверка

Поднимите интерфейс на клиенте:

$ sudo wg-quick up wg0

Проверьте маршруты и связь:

$ ip route get 10.0.8.1
$ ip -6 route get fd4d:9c8e:c4bc::1
$ sudo wg

Отключение:

$ sudo wg-quick down wg0

Удаление пира с сервера:

$ sudo wg set wg0 peer  remove

Рекомендации по безопасности

  • Храните приватные ключи только в файлах с правами 600 и доступом root.
  • Обновляйте kernel и пакеты WireGuard — баги в сетевом стеке потенциально критичны.
  • Минимизируйте список AllowedIPs для пиров: используйте /32 (IPv4) и /128 (IPv6) для отдельных клиентов, если хотите запретить доступ к другим внутренним сетям.
  • persistent-keepalive 15 полезен для клиентов за NAT.
  • Отключайте или ограничивайте доступ админских интерфейсов по IP — например, разрешайте SSH только с определённых IP.
  • При использовании облачных провайдеров проверьте правила NAT/ACL на уровне облака.

Отладка: типичные ошибки и их устранение

  1. Туннель поднят, но пакеты не проходят
    • Проверьте ip_forward. sudo sysctl net.ipv4.ip_forward
    • Убедитесь в маскарадинге: iptables -t nat -L -n
    • Проверьте правила UFW: sudo ufw status verbose
  2. Клиент не может дойти до сервера (Endpoint unreachable)
    • Проверьте, открыт ли UDP-порт 51820/udp на сервере и облачных security groups.
    • Проблемы с NAT: клиент за двойным NAT может не принимать ответ, persistent-keepalive помогает.
  3. DNS не работает у клиента
    • Проверьте секцию DNS в конфиге клиента и резолверы на сервере.
  4. IPv6 не работает
    • Проверьте, поддерживает ли хост/провайдер IPv6 и разрешена ли пересылка для IPv6.
  5. Разные версии пакета/ядра
    • На некоторых старых ядрах может потребоваться установка backport или обновление до ядра с поддержкой WireGuard.

Команды для диагностики:

sudo wg
ip a show wg0
ip route show table 200
sudo journalctl -u [email protected]
sudo iptables -t nat -L -n
sudo ip6tables -t nat -L -n
sudo ufw status verbose

SOP: добавление нового клиента (короткая пошаговая инструкция для администратора)

  1. На клиенте/генераторе: сгенерировать пару ключей.
  2. На сервере: добавить [Peer] секцию в /etc/wireguard/wg0.conf или выполнить wg set wg0 peer allowed-ips ,
  3. На сервере сохранить конфиг и перезапустить сервис (если редактировали файл) или применить через wg set.
  4. На клиенте создать /etc/wireguard/wg0.conf с PublicKey сервера, Endpoint и AllowedIPs, затем wg-quick up wg0.
  5. Проверить доступность и маршруты.
  6. При необходимости добавить persistent-keepalive=15 для клиентов за NAT.

Шаблон [Peer] для wg0.conf на сервере (пример):

[Peer]
PublicKey = 
AllowedIPs = 10.8.0.2/32, fd4d:9c8e:c4bc::2/128

Критерии приёмки

  • Сервер имеет активный интерфейс wg0 с назначенными адресами.
  • Клиент успешно подключается и присутствует в выводе sudo wg.
  • Пакеты из клиента до внешних адресов идут через сервер (проверка public ip).

Инцидентный план и откат

Если после внесения изменений сеть перестала работать:

  1. Удалите недавно добавленные PostUp правила или верните конфигурацию wg0.conf из резервной копии.
  2. Отключите WireGuard сервис: sudo systemctl stop [email protected]
  3. Временно отключите UFW (если подозреваете, что правила блокируют доступ): sudo ufw disable
  4. Верните sysctl-флаги (net.ipv4.ip_forward=0) если нужно быстро отрубить маршрутизацию.
  5. Восстановите конфигурации из бэкапов и прокомментируйте проблемные строки.

Меры безопасности и жёсткая настройка

  • Используйте отдельные ключи на каждое устройство и минимальные AllowedIPs.
  • Сегментируйте доступ: не давайте клиентам доступ к управляемым внутренним ресурсам, если это не нужно.
  • Ведите журнал изменений конфигураций и храните резервные копии /etc/wireguard/*.conf.
  • Ограничивайте доступ к публичному порту WireGuard с помощью geoIP/ACL, если возможно.

Дополнительно: можно настроить дополнительные правила iptables для логирования и блокировки подозрительного трафика через туннель.

Когда WireGuard не подходит (контрпримеры)

  • Вам нужна сложная политика маршрутизации и большой набор динамических прав для туннелей — тогда IPSec c централизованным менеджментом может быть удобнее.
  • Требуется deep packet inspection / контроль на уровне приложений внутри VPN — WireGuard сам по себе не предоставляет DPI-функций.
  • Если у вас устаревшие устройства без поддержки современного ядра, возможно потребуется OpenVPN/legacy.

Альтернативы и сравнение (кратко)

  • OpenVPN: больше опций, TLS-аутентификация, но медленнее и сложнее в настройке.
  • IPSec (strongSwan): стандартизованный, хорошо подходит для филиалов, но сложнее конфигурировать.
  • Tailscale/Netmaker: облачные/peer-to-peer решения на базе WireGuard с удобным управлением и каталогом устройств.

Совместимость и миграция

  • Имеющиеся настройки OpenVPN/IPSecurе нельзя «конвертировать» автоматически — потребуется заново спроектировать адресацию и правила.
  • Если мигрируете пользователей: подготовьте инструкции и скрипты для генерации ключей и установки клиентских конфигов.

Роль‑ориентированные чеклисты

Администратор сервера:

  • Установить wireguard
  • Сгенерировать server private/public key
  • Настроить wg0.conf, PostUp/PreDown
  • Включить sysctl forwarding
  • Открыть порт в UFW
  • Проверить сервис systemctl

Администратор клиента:

  • Сгенерировать ключи клиента
  • Подготовить client wg0.conf с PublicKey сервера
  • Настроить DNS и маршруты
  • Протестировать подключение и доступ к ресурсам

Пользователь (конечный):

  • Получить .conf файл или QR-код для мобильного клиента
  • Подключиться через wg-quick или приложение
  • Проверить доступ к корпоративным ресурсам

Короткий чек-лист тестов и критериев приёмки

  • wg0 поднят на сервере с адресом 10.8.0.1
  • Клиент получает IP 10.8.0.2 и успешный handshake в sudo wg
  • На клиенте внешний IP соответствует IP сервера (при полном туннелировании)
  • DNS-резолвинг работает через туннель
  • IPv6, если настроен, маршрут проходит по wg0

Фактбокс — важные значения и команды

  • Стандартный порт: 51820/UDP
  • MTU в примерах: 1420 (может потребоваться корректировка для PPPoE)
  • Keepalive: 15 сек (для NAT-клиентов)
  • Основные команды: wg, wg-quick, ip, iptables/ip6tables, ufw, systemctl

Краткий глоссарий (1‑строчная дефиниция)

  • Peer — удалённый участник туннеля WireGuard с публичным ключом.
  • AllowedIPs — список адресов, которые направляются через туннель.
  • PersistentKeepalive — периодический пакет для поддержания состояния NAT.
  • PostUp/PreDown — команды, выполняемые при поднятии и опускании интерфейса.

Полезные команды (cheat sheet)

wg show                 # показать состояние
sudo wg-quick up wg0    # поднять интерфейс
sudo wg-quick down wg0  # опустить интерфейс
sudo systemctl start [email protected]
sudo systemctl enable [email protected]
sudo iptables -t nat -L -n
sudo ip -brief address show

Заключение

WireGuard — надёжный и лёгкий в использовании VPN-стек. Эта инструкция покрывает установку на Ubuntu 22.04, генерацию ключей, назначение IPv4/IPv6, настройку фаервола и маршрутизации, а также рекомендации по безопасности, операционные SOP и сценарии отладки. Следуйте контрольным спискам для воспроизводимости и поддерживайте резервные копии конфигураций. Если остались вопросы — опишите окружение и шаг, на котором возникла проблема, чтобы получить точную помощь.

Важно

Не забывайте делать бэкапы /etc/wireguard/*.conf и хранить приватные ключи безопасно.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро