Как настроить VPN-соединение WireGuard «точка-сайт» в Debian 12

Показательный сценарий: Майя использует VPS на Debian 12 в качестве персональной VPN-точки доступа, когда работает из кафе. Ее ноутбук должен подключаться к VPS через зашифрованный туннель WireGuard и передавать свой интернет-трафик IPv4 через этот сервер. Этот пример не является отчетом о реальном тестировании; приведенные ниже публичные IP-адреса, ключи и вывод терминала являются лишь примерами или иллюстративными макетами.

Данная конфигурация представляет собой VPN типа «точка-сайт»: один клиент подключается к одному серверу. Она использует встроенные инструменты WireGuard из Debian, один пир, переадресацию IPv4 и NAT для IPv4. Предполагается, что VPS имеет публичный или переадресованный IPv4-адрес, его можно администрировать с помощью sudo, и к нему можно получить доступ через UDP-порт 51820. В пошаговом руководстве не рассматривается настройка маршрутизируемого IPv6 или частной сети за VPS.

Сначала спланируйте адреса и подъездные пути.

В примере 10.8.0.0/24для VPN используется сеть 10.8.0.1на сервере и 10.8.0.2на первом клиенте Maya. Используйте подсеть, которая не пересекается с сетями Wi-Fi, офисными или облачными сетями клиента. Коллизия может направить трафик по неправильному маршруту, даже если рукопожатие прошло успешно.

WireGuard использует аутентификацию по открытому ключу. Серверу необходим открытый ключ клиента, а клиенту — открытый ключ сервера; каждый закрытый ключ хранится на устройстве, которому он принадлежит. Документация WireGuard в Debian описывает настройку пакетов и узлов, а краткое руководство WireGuard описывает генерацию ключей и работу функции поддержания соединения. См. документацию WireGuard в Debian и краткое руководство WireGuard .

Настройка сервера Debian 12

1. Установите инструменты.

Обновите индекс пакетов и установите WireGuard и nftables, которые предоставят пример правила маскировки IPv4. Запустите эти команды на VPS:

sudo apt update
sudo apt install wireguard nftables

В Debian WireGuard входит в состав wireguardметапакета и его инструментов. Если сервер уже использует менеджер брандмауэра, такой как UFW, firewalld или правила, управляемые провайдером, определите его активный набор правил, прежде чем что-либо добавлять. Не заменяйте существующую конфигурацию брандмауэра этим примером.

В терминале Debian отображается сообщение об обновлении и установке пакетов WireGuard и nftables.
В терминале отображается этап установки пакета; вывод пакета может отличаться в зависимости от состояния зеркала и системы.

2. Найдите общедоступный интерфейс и включите переадресацию.

Уточните в таблице маршрутизации, какой интерфейс использует Debian для доступа к внешнему IPv4-адресу:

ip route get 1.1.1.1

В примере маршрут использует eth0. На вашем VPS может отображаться другое имя, например ens3или enp1s0; используйте имя из вашего собственного вывода в правиле NAT позже. Также обратите внимание на публичный IPv4-адрес сервера или DNS-имя. Если сервер находится за маршрутизатором, перенаправьте UDP-трафик 51820 с этого маршрутизатора на хост Debian.

Для полноценного туннелирования необходима переадресация IPv4. Включите её сейчас, и она сохранится после перезагрузки:

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sysctl net.ipv4.ip_forward

Последняя команда должна вывести сообщение об ошибке net.ipv4.ip_forward = 1. Этот параметр разрешает пересылку пакетов; сам по себе он не открывает брандмауэр и не обеспечивает NAT.

В терминале Debian отображается маршрут через eth0 и включенная переадресация IPv4.
Поиск маршрута определяет интерфейс, используемый для исходящего трафика IPv4, а команда sysctl подтверждает, что пересылка включена.

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

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

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'

По возможности сгенерируйте пару ключей клиента на клиентском устройстве. На клиентском компьютере под управлением Linux с wireguard-toolsустановленными следующими программами:

umask 077
wg genkey | tee client.key | wg pubkey > client.pub

Для телефона создайте новый туннель в официальном приложении WireGuard и позвольте ему сгенерировать ключи профиля. Скопируйте на сервер только открытый ключ клиента. Держите его client.keyв секрете; никогда не вставляйте его в конфигурацию сервера и не отправляйте в чат. В руководстве Debian Bookwormwg(8) описаны команды клавиш и поля интерфейса.

4. Создайте интерфейс сервера и добавьте удаленный узел.

Создайте /etc/wireguard/wg0.confструктуру, содержащую следующие данные. Замените каждый заглавный символ-заполнитель соответствующим реальным ключом. Прочитайте закрытый ключ сервера локально с помощью команды sudo cat /etc/wireguard/server.key`catch`; поместите открытый ключ клиента в раздел `peer`.

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Защитите файл, поскольку он содержит закрытый ключ:

sudo chown root:root /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf

AllowedIPs = 10.8.0.2/32Назначает этому участнику один VPN-адрес и предотвращает его присвоение другим участником. Каждому дополнительному устройству присваивайте свою собственную пару ключей и отдельный адрес, например 10.8.0.3/32, . Не используйте один и тот же профиль клиента на нескольких устройствах, если вам требуется отдельная авторизация или идентификация.

В терминале Debian отображается процесс генерации ключей WireGuard и интерфейс wg0 с клиентским узлом.
В интерфейсе сервера отображается информация об одном узле с его выделенным туннельным адресом; отображаемая ключевая информация носит исключительно иллюстративный характер.

5. Добавьте NAT для IPv4 и разрешите доступ к порту WireGuard.

Для примера полного туннеля IPv4 исходящие пакеты 10.8.0.0/24должны проходить через общедоступный интерфейс с NAT источника. Добавьте эквивалентное правило в существующую конфигурацию nftables сервера или менеджера брандмауэра. Эта автономная таблица nftables иллюстрирует правило; замените eth0на интерфейс, обнаруженный на шаге 2:

table ip wg_nat {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    ip saddr 10.8.0.0/24 oifname "eth0" masquerade
  }
}

Если вы используете конфигурацию из Debian nftables.service, объедините таблицу с конфигурацией, которую служба загружает при загрузке, и проверьте весь файл sudo nft -c -f /etc/nftables.confперед его перезагрузкой. Перед применением проверьте, не удаляет ли ваша текущая конфигурация или не заменяет ли существующие правила. NAT сам по себе не отменяет политику пересылки, которая отбрасывает трафик: разрешите пересылку с wg0на WAN-интерфейс и обратный трафик в вашем активном брандмауэре. В nft(8)руководстве Debian описана загрузка правил nftables и операторы NAT.

Как в брандмауэре провайдера VPS, так и в любом брандмауэре хоста разрешите входящий UDP-трафик 51820. Не открывайте TCP-трафик 51820 для этого туннеля WireGuard. Сохраняйте правило доступа SSH при изменении политики брандмауэра и используйте консоль провайдера или другой способ восстановления, если перезагрузка брандмауэра может привести к разрыву соединения.

В конфигурации nftables отображается маскировка IPv4 для подсети VPN 10.8.0.0/24 через eth0.
Правило сопоставляет трафик VPN IPv4, исходящий через выбранный WAN-интерфейс, и применяет маскировку.

Настройте и подключите клиентское устройство.

6. Создайте профиль клиента.

Создайте новый туннель в клиентском приложении WireGuard или сохраните конфигурацию, подобную этой, на клиенте Linux. Замените закрытый ключ, открытый ключ сервера и конечную точку реальными значениями. Приведенный ниже адрес TEST-NET является лишь примером и не позволит установить соединение с реальным сервером.

[Interface]
Address = 10.8.0.2/32
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0Маршрутизаторы IPv4 направляют трафик через туннель, поэтому это вариант полного туннеля IPv4. Для узкого разделенного туннеля, достигающего только адреса сервера WireGuard, используйте 10.8.0.0/24вместо этого. Чтобы достичь локальной сети за сервером, укажите фактическую подсеть этой локальной сети в конфигурации клиента AllowedIPs, добавьте обратный маршрут или подходящий NAT и разрешите трафик через брандмауэр сервера; эти шаги зависят от маршрутизатора локальной сети и выходят за рамки данного примера.

PersistentKeepalive = 25Это помогает клиенту за NAT оставаться доступным после периодов бездействия. Это необязательно; в документации WireGuard говорится, что большинству пользователей это не нужно, но указывается, что 25 секунд — это широко полезный интервал, когда сопоставление NAT должно оставаться открытым. Это DNSполе поддерживается некоторыми клиентами и клиентами на основе wg-quick; если ваше приложение игнорирует его, настройте DNS через собственные элементы управления этого приложения.

Редактор конфигурации клиента отображает адрес WireGuard, конечную точку, полный маршрут IPv4 и поле keepalive.
Профиль клиента направляет трафик IPv4 через сервер; конечная точка TEST-NET является временным, а не рабочим адресом.

7. Запустите туннель и проверьте рукопожатие.

В Debian активация сетевого интерфейса при загрузке выполняется с помощью команды:

sudo systemctl enable --now wg-quick@wg0
sudo wg show

Импортируйте или активируйте профиль клиента после того, как станет доступен UDP-порт 51820. wg showУбедитесь, что ожидаемый пир отображается и latest handshakeобновляется после отправки клиентом трафика. В wg-quick(8)руководстве для Debian Bookworm описан вспомогательный инструмент настройки интерфейса, используемый модулем systemd.

Отсутствие рукопожатия указывает, прежде всего, на недоступность или несоответствие ключей: подтвердите адрес и порт конечной точки, правила брандмауэра UDP, открытый ключ сервера в профиле клиента, открытый ключ клиента wg0.confи правильное системное время. Рукопожатие без работающего трафика обычно указывает на переадресацию, NAT, перекрытие маршрутов или правило цепочки переадресации брандмауэра.

В терминале Debian отображается включенная служба wg-quick и подтверждение соединения с использованием счетчиков трафика.
Сервис активирован, и на экране отображается информация о соединении и передаче; значения приведены для наглядности.

8. Проверьте трафик и разберитесь с ограничениями IPv6.

После подключения клиента сначала проверьте адрес туннеля сервера, затем проверьте публичный IPv4-адрес, видимый внешней службой проверки IPv4-адресов:

ping -c 3 10.8.0.1
curl -4 https://ifconfig.me

Если ICMP разрешен, пинг должен достигать сервера. Проверка внешнего IPv4 должна показать публичный исходящий адрес VPS для данной конфигурации полного туннелирования. Если публичный адрес не меняется, проверьте настройки AllowedIPsпереадресации, имя интерфейса NAT и политику переадресации брандмауэра.

Этот пример относится только к IPv4. AllowedIPs = 0.0.0.0/0Он не маршрутизирует IPv6, поэтому клиент с подключением по IPv6 может по-прежнему отправлять трафик IPv6 за пределы туннеля. Не следует описывать эту конфигурацию как полноценный туннель с двойной поддержкой конфиденциальности. Для передачи IPv6 через WireGuard необходимо выделить и маршрутизировать IPv6-адреса для туннеля, включить пересылку IPv6, настроить соответствующие правила брандмауэра и маршрутизации, а также добавить ::/0клиента только после того, как этот путь будет работать от начала до конца. Поддержка провайдеров может различаться. В противном случае, осознанно выбирайте политику разделения туннелей и проверяйте поведение клиента в отношении IPv6.

На стандартном экране VPN телефона отображается активный профиль VPN для ноутбука с указанием адреса сервера и туннеля.
Активен стандартный профиль VPN-клиента, в котором указаны конечная точка сервера и IP-адрес туннеля; параметры управления различаются в зависимости от приложения.
В терминале Debian отображается проверка IPv4-адреса и успешный пинг до сервера WireGuard.
Терминал проверяет исходящий IPv4-адрес и отправляет пинг на WireGuard-адрес сервера; вывод является иллюстративным.

Типичные проблемы и быстрая заключительная проверка.

  • Без подтверждения соединения: необходимо подтвердить входящий UDP-пакет 51820 на межсетевых экранах провайдера и хоста, публичный IP-адрес или DNS конечной точки, а также открытый ключ каждого из партнеров.
  • Установление соединения работает, но веб-сайты не загружаются: подтвердите net.ipv4.ip_forward=1, что правило NAT использует фактический исходящий интерфейс, и брандмауэр разрешает переадресованный трафик.
  • Сбои происходят только в некоторых сетях: проверьте, 10.8.0.0/24не пересекается ли локальная или удаленная сеть. При необходимости перенумеруйте туннель, обновив одновременно и узлы, и правило брандмауэра.
  • Это работает до тех пор, пока не будет включена опция «Подтвердить перезагрузку wg-quick@wg0» и пока настройки брандмауэра и sysctl не сохранятся в рамках обычной конфигурации системы.
  • В IPv6 по-прежнему используется локальное соединение: это ожидаемо в данном примере, работающем только с IPv4. Перед тем как полагаться на утверждение о полной конфиденциальности туннеля, настройте и протестируйте маршрут туннеля IPv6.

Перед завершением настройки убедитесь, что служба сервера активна, wg showсообщает о недавнем рукопожатии и увеличении счетчиков передачи, клиент может связаться с сервером 10.8.0.1, а проверка исходящего трафика IPv4 сообщает публичный адрес сервера. Перезагрузите систему только после того, как будут установлены постоянные настройки брандмауэра и переадресации, затем повторите эти проверки. Для дополнительных узлов выдайте отдельные пары ключей и уникальные IP-адреса туннелей, затем удалите устройство, удалив запись о узле и перезагрузив интерфейс.

Оставить комментарий

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Безопасная диагностика аварийного режима Ubuntu Server. Чтение журналов загрузки, проверка монтирования корневого каталога и файла fstab, восстановление неисправного модуля, обработка ошибок файловой системы и проверка чистой перезагрузки.

Как настроить VPN-соединение WireGuard «точка-сайт» в Debian 12

Как настроить VPN-соединение WireGuard «точка-сайт» в Debian 12

Настройте VPN-сервер WireGuard на Debian 12 для одного удалённого клиента. Сконфигурируйте ключи, переадресацию IPv4, NAT в nftables, доступ к брандмауэру и проверки соединений.

Пошаговое руководство по усилению безопасности Debian 12 для соответствия требованиям CIS.

Пошаговое руководство по усилению безопасности Debian 12 для соответствия требованиям CIS.

Обеспечьте безопасность рабочей станции Debian 12, используя тщательно разработанный алгоритм, соответствующий стандартам CIS: выберите правильный профиль, установите необходимые обновления, проверьте службы и доступ, настройте nftables и задокументируйте подтверждающие данные.

Debian 12 на VPS с небольшим объемом оперативной памяти: как уменьшить количество сбоев MySQL из-за нехватки памяти.

Debian 12 на VPS с небольшим объемом оперативной памяти: как уменьшить количество сбоев MySQL из-за нехватки памяти.

Диагностика ошибок нехватки памяти в MySQL на Debian 12, проверка лимитов памяти VPS, настройка файла подкачки и оптимизация памяти базы данных и параллельной обработки, без обещания универсального решения.

Как создать рабочий стол Debian в виде неизменяемой системы на основе OSTree

Как создать рабочий стол Debian в виде неизменяемой системы на основе OSTree

Узнайте, как создать и протестировать рабочий стол OSTree на основе Debian в виртуальной машине, включая подготовку дерева системы, интеграцию с загрузкой, проверку развертывания и откат.

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

Configure an SSHFS boot mount in Debian with SSH keys, fstab, and systemd automount. Includes reboot checks, permissions, timeouts, and troubleshooting.

Подготовка дома к октябрьским морозам в Москве и Подмосковье: отопление, трубы и крыша

Подготовка дома к октябрьским морозам в Москве и Подмосковье: отопление, трубы и крыша

Чек-лист на октябрь 2026 года для Москвы и Московской области: окна, отопление, защита труб от замерзания, безопасный осмотр кровли и подготовка снегоуборочного инвентаря. Разбираем, что проверить жильцу и кому сообщать о неисправности.

Что сажать в Москве и Подмосковье в октябре 2026 года: овощи, зелень, цветы и подзимние посевы

Что сажать в Москве и Подмосковье в октябре 2026 года: овощи, зелень, цветы и подзимние посевы

Практический календарь посадок для Москвы и Московской области на октябрь 2026 года: озимый чеснок, подзимние овощи и зелень, луковичные цветы, комнатные посевы, заморозки и план работ по неделям.

Тренды подкастинга, которые вам необходимо знать в 2026 году: дорожная карта для начинающих.

Тренды подкастинга, которые вам необходимо знать в 2026 году: дорожная карта для начинающих.

Новичок в подкастинге? Узнайте о трендах 2026 года, формирующих видеоконтент, поиск подкастов, стенограммы, ИИ, аналитику, монетизацию и практический план запуска.

Мастер-класс по пользовательскому контенту: создавайте контент, который вызывает доверие и побуждает к действию.

Мастер-класс по пользовательскому контенту: создавайте контент, который вызывает доверие и побуждает к действию.

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