Установка и настройка личного VPN-сервера WireGuard на Debian 11 и Debian 10

В этом руководстве вы узнаете, как установить и настроить сервер VPN с использованием WireGuard на системах Debian 11 bullseye и Debian 10 Buster. WireGuard оптимизирован для работы с ядром Linux, функционируя непосредственно в нем, что позволяет создать быстрый, безопасный и современный VPN-туннель.

Характеристики VPN WireGuard

  • Быстрый и легкий, с производительностью, превосходящей OpenVPN.
  • Поддержка множества платформ. WireGuard совместим с Linux, BSD, macOS, Windows, Android, iOS и OpenWRT.
  • Аутентификация пользователей происходит через обмен открытыми ключами, схожий с использованием SSH-ключей.
  • Он присваивает клиентам VPN статические IP-адреса для туннеля. Это может не всем прийтись по вкусу, однако в определённых ситуациях это может оказаться полезным.
  • Устройства могут плавно переходить между Wi-Fi и мобильной сетью, не теряя связь.
  • Его задача — заменить OpenVPN и IPSec в большинстве случаев применения.

Требования

Для работы с этим руководством вам понадобится VPS (виртуальный частный сервер), который способен обходить блокировки на веб-сайты, недоступные в вашем регионе или в результате интернет-цензуры. Рекомендую использовать VPS от Kamatera, который предоставляет следующие возможности:

  • Бесплатный доступ на 30 дней.
  • Стоимость начинается от 4 долларов в месяц за 1 ГБ оперативной памяти.
  • VPS с высокой производительностью на платформе KVM.
  • Девять центров обработки данных расположены по всему миру, включая такие страны, как США, Канада, Великобритания, Германия, Нидерланды, Гонконг и Израиль.

Воспользуйтесь учебным пособием, представленным ниже, чтобы развернуть свой VPS сервер на платформе Kamatera.

  • Как развернуть сервер Linux VPS на платформе Kamatera

После того как вы получите VPS с установленной операционной системой Debian, выполните следующие шаги.

Данный учебник исходит из предположения, что как VPN-сервер, так и VPN-клиент функционируют на платформе Debian.

Установите WireGuard на сервер и настольный компьютер с Debian.

Зайдите на свой сервер с операционной системой Debian. WireGuard доступен в репозиториях Debian 11 (Bullseye), поэтому для его установки просто выполните следующие команды.

sudo apt update sudo apt install wireguard wireguard-tools linux-headers-$(uname - r)

Пользователям Debian 10 необходимо подключить репозиторий backport, используя следующую команду.

echo "deb http://deb. debian. org/debian buster-backports main" | sudo tee /etc/apt/sources. list. d/buster-backports. list

После этого произведите установку WireGuard.

sudo apt update sudo apt - t buster-backports install wireguard wireguard-tools wireguard-dkms linux-headers-$(uname - r)

Для установки WireGuard на локальном компьютере с Debian (в качестве VPN-клиента) примените аналогичные команды. Имейте в виду, что для корректной настройки DNS-сервера также потребуется установить пакет openresolv на клиенте.

sudo apt install openresolv

Создайте пару ключей — открытый и закрытый.

Сервер

Используйте следующую команду на сервере Debian для генерации пары открытых и закрытых ключей, которые будут размещены в директории /etc/wireguard/.

wg genkey | sudo tee /etc/wireguard/server_private. key | wg pubkey | sudo tee /etc/wireguard/server_public. key

Debian-wireguard-VPN-server-generate-public-private-key

Клиент

Введите следующую команду для генерации пары открытого и закрытого ключей на локальном компьютере с операционной системой Debian (клиент VPN).

wg genkey | sudo tee /etc/wireguard/client_private. key | wg pubkey | sudo tee /etc/wireguard/client_public. key

Формирование конфигурационного файла для WireGuard

Сервер

Для создания конфигурационного файла WireGuard на сервере Debian воспользуйтесь текстовым редактором командной строки, например, Nano. Сетевой интерфейс будет называться wg0.

sudo nano /etc/wireguard/wg0.conf

Скопируйте данный текст и поместите его в свой файл конфигурации. Обязательно используйте ваш собственный закрытый ключ сервера и открытый ключ клиента.

[Interface] Address = 10.10.10.1/24 ListenPort = 51820 PrivateKey = cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc=[Peer] Открытый ключ =AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4= AllowedIPs = 10.10.10.2/32

Debian-wireguard-VPN-server-configuration-file-wg0

  • Адрес: Укажите приватный IP-адрес вашего VPN-сервера. В данном случае я применяю сетевой диапазон 10.10.10.0/24, чтобы избежать конфликтов с вашей домашней сетью. (Чаще всего для домашних маршрутизаторов используются диапазоны 192.168.0.0/24 или 192.168.1.0/24). Приватный IP-адрес VPN-сервера — 10.10.10.1.
  • Частный ключ: Это ключ VPN-сервера, расположенный в файле /etc/wireguard/server_private. key на сервере.
  • Порт для подключения: VPN-сервер WireGuard будет принимать данные на UDP-порту 51820, который установлен как стандартный.
  • Общий ключ клиента VPN располагается в файле /etc/wireguard/client_public. key на устройстве клиента.
  • Разрешенные IP-адреса: это адреса, которые клиент VPN имеет право применять. В данном случае клиенту разрешено использовать исключительно IP-адрес 10.10.10.2 в пределах VPN-туннеля.

Сохраните изменения и закройте документ. (В текстовом редакторе Nano сохраните файл, нажав Ctrl+O, затем подтвердите, нажав Enter. Для выхода нажмите Ctrl+X.)

Настройте права доступа к файлу так, чтобы лишь пользователь root имел возможность читать его.

sudo chmod 600 /etc/wireguard/ - R

Клиент

Воспользуйтесь текстовым редактором в командной строке, таким как Nano, чтобы создать конфигурационный файл WireGuard на вашем локальном компьютере с операционной системой Debian. Интерфейс сети будет называться wg-client0.

sudo nano /etc/wireguard/wg-client0.conf

Скопируйте текст ниже и вставьте его в файл конфигурации. Не забудьте использовать ваш собственный личный клиентский ключ и серверный общий ключ.

[Interface] Address = 10.10.10.2/24 DNS = 10.10.10.1 PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=[Peer] Открытый ключ =kQvxOJI5Km4S1c7WXu2UZFpB8mHGuf3Gz8mmgTIF2U0=Разрешённые IP-адреса = 0.0.0.0/0 Конечная точка =12.34.56.78:51820 PersistentKeepalive = 25

  • Укажите личный IP-адрес клиента VPN.
  • Укажите адрес 10.10.10.1 (VPN-сервер) в качестве основного DNS-сервера. Настройка будет выполнена с помощью команды resolvconf.Для резервирования можно добавить несколько DNS-серверов, например: DNS = 10.10.10.1 8.8.8.8.
  • Приватный ключ: Приватный ключ клиента, который находится в файле /etc/wireguard/client_private. key на клиентском устройстве.

Необходимо настроить скрытие IP-адресов на серверном файрволе, чтобы сервер выполнял функции виртуального маршрутизатора для VPN-клиентов. Для этого будет использован UFW, представляющий собой интерфейс для управления файрволом iptables. Установите UFW на Debian с помощью команды:

sudo apt install ufw

Для начала необходимо открыть доступ для SSH-трафика.

sudo ufw allow 22/tcp

Далее определите название главного сетевого интерфейса на вашем сервере.

ip addr

Как можно заметить, на моем сервере Debian он называется ens3.

debian-wireguard-firewall

Для настройки маскировки IP требуется добавить команду iptables в конфигурационный файл UFW.

sudo nano /etc/ufw/before. rules

В таблице фильтров изначально предусмотрены определенные правила. В конце данного файла добавьте следующие строки, заменив ens3 на название вашего сетевого интерфейса.

# Правила таблицы NAT *nat :POSTROUTING ACCEPT [0:0] - A POSTROUTING - o ens3 - j MASQUERADE # Завершите каждую таблицу строкой 'COMMIT', иначе эти правила не будут обработаны COMMIT

В текстовом редакторе Nano можно переместиться в конец файла, нажав сочетание клавиш Ctrl+W, а затем Ctrl+V.

Таблица NAT в UFW: POSTROUTING с использованием MASQUERADE.

Указанные строки добавят правило (-A) в конец цепочки POSTROUTING таблицы nat. Это установит связь вашей виртуальной частной сети с Интернетом и обеспечит скрытие вашей сети от внешнего мира. В результате Интернет будет видеть лишь IP-адрес вашего VPN-сервера, не имея доступа к IP-адресу вашего VPN-клиента, подобно тому, как ваш домашний маршрутизатор защищает вашу частную сеть.

По умолчанию UFW блокирует пересылку пакетов. Мы можем разрешить её для нашей локальной сети. В этом файле найдите цепочку ufw-before-forward и добавьте следующие три строки, которые позволят пересылку пакетов, если исходный или конечный IP-адрес находится в диапазоне 10.10.10.0/24.

# разрешить пересылку для доверенной сети - A ufw-before-forward - s 10.10.10.0/24 - j ACCEPT - A ufw-before-forward - d 10.10.10.0/24 - j ACCEPT

разрешить пересылку пакетов в ufw

Сохраните изменения в файле и закройте его. После этого активируйте UFW.

sudo ufw enable

Если вы уже активировали UFW, вы можете воспользоваться командой systemctl для его перезапуска.

sudo systemctl restart ufw

Теперь, если вы выполните команду для отображения списка правил в цепочке POSTROUTING таблицы NAT:

sudo iptables - t nat - L POSTROUTING

Вы сможете ознакомиться с правилом Masquerade.

wireguard-IP-Masquerading-ufw-debian

На шестом этапе необходимо настроить DNS-резольвер на вашем сервере.

Так как мы настроили VPN-сервер в качестве DNS-сервера для клиента, необходимо запустить DNS-резольвер на самом VPN-сервере. Для этого можно установить DNS-сервер bind9.

sudo apt install bind9

После установки BIND он запустится автоматически. Вы можете проверить его состояние с помощью:

systemctl status bind9

named.service - BIND Domain Name Server Загружено: успешно (/lib/systemd/system/named.service; активировано; настройка от производителя: активирована) Статус:действует активно с вс 2020-05-17 08:11:26 UTC; 37 секунд назад Документы: man:named(8) Главный PID: 13820 (named) Задачи: 5 (лимит: 1074) Память: 14.3M CGroup: /system. slice/named.service └─13820 /usr/sbin/named - f - u bind

Если программа не функционирует, попробуйте активировать её, используя следующий метод:

sudo systemctl start bind9

Измените файл настроек DNS-сервера BIND.

sudo nano /etc/bind/named.conf.options

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

allow-recursion < 127.0.0.1; 10.10.10.0/24; >;

резольвер DNS BIND для WireGuard

Сохраните файл и закройте его. После этого внесите изменения в файлы, расположенные по адресу /etc/default/named.

sudo nano /etc/default/named

Добавьте значение -4 к параметру OPTIONS, чтобы удостовериться, что BIND способен выполнять запросы к корневым DNS-серверам.

OPTIONS="-u bind -4"

Сохраните изменения и закройте документ.

По умолчанию BIND активирует DNSSEC, что обеспечивает достоверность и целостность ответов DNS. Тем не менее, его функционирование может быть нарушено из-за изменения доверенного якоря и других факторов. Для корректной работы системы необходимо восстановить управляемую базу данных ключей с помощью указанных команд.

sudo rndc managed-keys destroy sudo rndc reconfig

Перезапустите BIND9, чтобы изменения начали действовать.

sudo systemctl restart bind9

После этого необходимо ввести следующую команду, чтобы разрешить VPN-клиентам подключаться к порту 53.

sudo ufw insert 1 allow in from 10.10.10.0/24

Разрешите доступ к порту WireGuard в брандмауэре.

Используйте следующую команду для открытия UDP-порта 51820 на сервере.

sudo ufw allow 51820/udp

Активируйте WireGuard.

сервер

Для запуска WireGuard выполните следующую команду на сервере.

sudo wg-quick up /etc/wireguard/wg0.conf

sudo wg-quick down /etc/wireguard/wg0.conf

Вы можете также воспользоваться системой systemd для запуска WireGuard.

Активируйте автоматический запуск при старте системы.

Используйте следующую команду для проверки его статуса. Он должен быть активным (в работе).

Сервер WireGuard теперь настроен для принятия клиентских подключений.

Клиент

Активируйте автоматический запуск при старте системы.

Узнайте его состояние.

Откройте этот веб-сайт: http://icanhazip.com/, чтобы узнать ваш публичный IP-адрес. Если VPN настроен правильно, на странице отобразится публичный IP-адрес вашего VPN-сервера, а не вашего устройства.

Вы можете использовать следующую команду для определения вашего текущего внешнего IP-адреса.

curl https://icanhazip.com

Рекомендации по решению проблем

Убедитесь, что UDP-порт 51820 доступен.

Установите на сервере сетевой анализатор трафика tshark. Это консольная версия Wireshark.

sudo apt install tshark

Если вас спросят: «Должны ли обычные пользователи иметь доступ к захвату пакетов?», отвечайте утвердительно. После установки выполните команду, которая добавит вашу учетную запись в группу wireshark, чтобы обеспечить возможность захвата пакетов.

sudo adduser your-username wireshark

После этого начните использовать tshark для перехвата пакетов на UDP-порту 51820. Подмените ens3 на ваш активный сетевой интерфейс.

tshark - i ens3 - f "udp port 51820"

Если клиент WireGuard способен установить соединение с UDP-портом 51820 на сервере, вы сможете наблюдать захват пакетов с помощью tshark, как показано ниже. Как видно, клиент инициировал рукопожатие, и сервер ответил на него. После успешного подключения клиент начинает отправлять пакеты keepalive.

Capturing on 'ens3' ** (tshark:902085) 02:47:41.865227 [Main MESSAGE] -- Capture started. ** (tshark:902085) 02:47:41.866056 [Main MESSAGE] -- File: "/tmp/wireshark_eth0JVEWT1.pcapng" 1 105.092578905 11.22.33.44 → 12.34.56.78 WireGuard 190 Handshake Initiation , sender=0x3F1A04AB 2 110.464628716 12.34.56.78 → 11.22.33.44 WireGuard 134 Handshake Response , sender=0x34ED7471, receiver=0xD4B23800 3 110.509517074 11.22.33.44 → 12.34.56.78 WireGuard 74 Keepalive , receiver=0x34ED7471, counter=0

Если клиент WireGuard не в состоянии установить соединение с UDP-портом 51820 сервера, вы будете наблюдать только пакеты, связанные с инициацией рукопожатия, при этом ответ на рукопожатие отсутствует.

С Capturing на 'ens3' ** (tshark:902085) 02:47:41.865227 [Основное СООБЩЕНИЕ] -- Захват начат. ** (tshark:902085) 02:47:41.866056 [Основное СООБЩЕНИЕ] -- Файл: "/tmp/wireshark_eth0JVEWT1.pcapng" 1 105.092578905 11.22.33.44 → 12.34.56.78 WireGuard 190 Инициация Ручного Обмена, sender=0x3F1A04AB 2 149.670118573 11.22.33.44 → 12.34.56.78 WireGuard 190 Инициация Ручного Обмена, sender=0x7D584974 3 152.575188680 11.22.33.44 → 12.34.56.78 WireGuard 190 Инициация Ручного Обмена, sender=0x8D2407B9 4 153.706876729 12.34.56.78 → 11.22.33.44 WireGuard 190 Инициация Ручного Обмена, sender=0x47690027 5 154.789959772 11.22.33.44 → 12.34.56.78 WireGuard 190 Инициация Ручного Обмена, sender=0x993232FC 6 157.956576772 11.22.33.44 → 12.34.56.78 WireGuard 190 Инициация Ручного Обмена, sender=0x06AD433B 7 159.082825929 12.34.56.78 → 11.22.33.44 WireGuard 190 Инициация Ручного Обмена, sender=0x8C089E1

Тестирование Ping

Чтобы проверить функционирование туннеля, вы можете выполнить команду ping с VPN-сервера на VPN-клиент (ping 10.10.10.2). Если вы получите сообщение об ошибке в результате пинга,

ping: sendmsg: Требуемый ключ недоступен

Возможно, параметр AllowedIPs указан с ошибкой, например, присутствует опечатка.

Если ошибка при выполнении ping выглядит так:

ping: sendmsg: Требуется адрес назначения

Это может указывать на наличие ошибки в ваших конфигурационных файлах, касающейся приватного или публичного ключа.

Не получается получить доступ к Интернету.

Если VPN-туннель установлен успешно, но публичный IP-адрес клиента остается прежним, это может указывать на проблемы с правилами маскирования или пересылки в конфигурационном файле UFW. В моем случае в файле /etc/ufw/before. rules была ошибка, из-за которой мой компьютер не мог получить доступ к Интернету.

Учтите, что я не советую устанавливать SaveConfig=true в секции [Interface] конфигурационного файла WireGuard. Параметр SaveConfig заставляет WireGuard сохранять настройки при завершении работы. Таким образом, если вы добавите новые [Peer] в конфигурацию и затем перезапустите WireGuard, ваши изменения будут потеряны.

Активация отладочного журналирования в ядре Linux

При использовании ядра Linux версии 5.6 или выше вы можете активировать журналирование отладки для WireGuard, введя следующую команду.

sudo su - echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control

После этого у вас есть возможность ознакомиться с журналами отладки с помощью

sudo dmesg - wH

sudo journalctl - kf

Перезапуск

Если ваш VPN по-прежнему не функционирует, попробуйте перезагрузить сервер VPN.

После этого отключите клиент VPN.

Обновите программное обеспечение на клиенте VPN.

sudo apt update; sudo apt upgrade

После этого перезапустите клиент VPN.

Установка новых VPN клиентов

WireGuard предназначен для связывания одного IP-адреса с одним VPN-клиентом. Чтобы подключить дополнительных VPN-клиентов, нужно сгенерировать уникальную пару приватного и публичного ключей для каждого из них, а затем внести публичный ключ каждого клиента в конфигурационный файл сервера (/etc/wireguard/wg0.conf) следующим образом:

[Interface] Address = 10.10.10.1/24 PrivateKey = UIFH+XXjJ0g0uAZJ6vPqsbb/o68SYVQdmYJpy/FlGFA= ListenPort = 51820 [Peer] PublicKey = 75VNV7HqFh+3QIT5OHZkcjWfbjx8tc6Ck62gZJT/KRA= AllowedIPs = 10.10.10.2/32 [Peer] PublicKey = YYh4/1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8= AllowedIPs = 10.10.10.3/32 [Peer] PublicKey = EVstHZc6QamzPgefDGPLFEjGyedJk6SZbCJttpzcvC8= AllowedIPs = 10.10.10.4/32

Каждый клиент VPN получит статический приватный IP-адрес (например, 10.10.10.2, 10.10.10.3, 10.10.10.4 и так далее). Перезапустите сервер WireGuard, чтобы активировать внесённые изменения.

После этого, как обычно, настройте конфигурацию WireGuard на каждом клиенте VPN.

Конфигурация VPN-клиента на устройствах iOS и Android.

Поскольку я обладаю iPhone, я продемонстрирую, как настроить клиент WireGuard на устройстве iOS. Сначала загрузите приложение WireGuard из App Store. После установки откройте его и нажмите на кнопку «Добавить туннель».

Существует три способа создания нового туннеля WireGuard.

  • сформировать из документа или архивного файла
  • сгенерировать QR-код
  • Сформировать из основ.

Рекомендуется выбрать метод QR-кода, так как он является более удобным. Для генерации публичного и приватного ключей WireGuard для iOS-клиента выполните следующую команду на сервере.

wg genkey | sudo tee /etc/wireguard/ios_private. key | wg pubkey | sudo tee /etc/wireguard/ios_public. key

Создайте конфигурационный файл WireGuard для iOS-клиента.

sudo nano /etc/wireguard/ios.conf

Добавьте следующие фразы.

[Interface] Address = 10.10.10.3DNS = 10.10.10.1
PrivateKey =mNiZvB+sASN/+ZiJkMyan1ZZOzCXkrjYPlbg7rZJ7Fc=[Peer] Открытый ключ =OMaXX7XD+wEYWfYyFcZZBN4vFSC16A1e8t80ONiJKWY=Разрешённые IP-адреса = 0.0.0.0/0 Конечная точка =12.34.56.78:51820 PersistentKeepalive = 25

  • Адрес: Введите приватный IP-адрес для iOS-клиента.
  • DNS: укажите 10.10.10.1 (VPN-сервер) в качестве основного DNS-сервера. При необходимости можно добавить дополнительные DNS-серверы для резервирования, например: DNS = 10.10.10.1, 8.8.8.8. Учтите, что приложение для iOS не поддерживает запись в формате DNS = 10.10.10.1 8.8.8.8.
  • Приватный ключ клиента iOS находится в файле /etc/wireguard/ios_private. key.
  • Публичный ключ сервера находится в файле /etc/wireguard/server_public. key на сервере.
  • AllowedIPs : 0.0.0.0/0 охватывает весь Интернет, что указывает на необходимость маршрутизации всего интернет-трафика через VPN.
  • Эндпоинт: Публичный IP-адрес и порт VPN-сервера. Убедитесь, что вы заменили 12.34.56.78 на фактический публичный IP-адрес вашего сервера.
  • PersistentKeepalive: Каждые 25 секунд отправляйте аутентифицированный пустой пакет к пир-узлу для поддержания соединения. Если функция PersistentKeepalive отключена, VPN-сервер может не иметь возможности отправлять пинг VPN-клиенту.

Сохраните файл и закройте его. После этого выполните следующую команду на сервере WireGuard VPN, чтобы создать QR-код на основе конфигурационного файла для iOS.

sudo apt install qrencode sudo cat /etc/wireguard/ios.conf | qrencode - t ansiutf8

После этого отсканируйте QR-код в приложении WireGuard для iOS, чтобы загрузить настройки из файла /etc/wireguard/ios.conf в клиент WireGuard на вашем устройстве.

После интеграции туннеля на iOS-клиенте, необходимо также внести изменения, добавив [peer] в конфигурационный файл сервера WireGuard.

sudo nano /etc/wireguard/wg0.conf

[Interface] Address = 10.10.10.1/24 PrivateKey = UIFH+XXjJ0g0uAZJ6vPqsbb/o68SYVQdmYJpy/FlGFA= ListenPort = 51820 [Peer] PublicKey = 75VNV7HqFh+3QIT5OHZkcjWfbjx8tc6Ck62gZJT/KRA= AllowedIPs = 10.10.10.2/32 [Peer] # клиент iOS PublicKey = YYh4/1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8= AllowedIPs = 10.10.10.3/32

Сохраните файл и закройте его. После этого перезапустите сервер WireGuard VPN.

Теперь у вас появилась возможность установить соединение с VPN WireGuard прямо из приложения для
Добавление нового туннеля WireGuard в Windows.

Теперь необходимо внести дополнительную информацию.

[Interface] PrivateKey = mNiZvB+sASN/+ZiJkMyan1ZZOzCXkrjYPlbg7rZJ7Fc=Адрес =10.10.10.4/24 DNS = 10.10.10.1 [Узел] # Сервер VPN PublicKey =OMaXX7XD+wEYWfYyFcZZBN4vFSC16A1e8t80ONiJKWY=Разрешённые IP-адреса = 0.0.0.0/0 Конечная точка =12.34.56.78:51820 PersistentKeepalive = 25

  • Адрес: Укажите приватный IP-адрес для клиента Windows.
  • DNS: установите 10.10.10.1 (VPN-сервер) в качестве DNS-сервера. Также можно указать несколько резервных DNS-серверов, например: DNS = 10.10.10.1, 8.8.8.8. Учтите, что в приложении Windows не поддерживается синтаксис DNS = 10.10.10.1 8.8.8.8.
  • Приватный ключ клиента Windows формируется автоматически.
  • Публичный ключ сервера находится в файле /etc/wireguard/server_public. key на сервере.
  • AllowedIPs : 0.0.0.0/0 охватывает весь Интернет, что подразумевает, что весь трафик должен маршрутизироваться через VPN.
  • Эндпоинт: Публичный IP-адрес и порт VPN-сервера. Убедитесь, что вы заменили 12.34.56.78 на фактический публичный IP-адрес вашего сервера.
  • PersistentKeepalive: Каждые 25 секунд отправляйте аутентифицированный пустой пакет к одноранговому узлу для поддержания соединения. В случае отключения PersistentKeepalive, VPN-сервер может не суметь выполнить пинг клиента VPN.

конфигурация WireGuard для Windows

Сохраните настройки.

После того как туннель будет добавлен на клиенте Windows, необходимо также внести изменения в конфигурационный файл сервера WireGuard, добавив [peer].

sudo nano /etc/wireguard/wg0.conf

[Interface] Address = 10.10.10.1/24 PrivateKey = UIFH+XXjJ0g0uAZJ6vPqsbb/o68SYVQdmYJpy/FlGFA= ListenPort = 51820 [Peer] PublicKey = 75VNV7HqFh+3QIT5OHZkcjWfbjx8tc6Ck62gZJT/KRA= AllowedIPs = 10.10.10.2/32 [Peer] # клиент iOS PublicKey = YYh4/1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8= AllowedIPs = 10.10.10.3/32 [Peer] # клиент Windows PublicKey = wJpwC/gCWXZTGa5lQReKowRvymaaEUav0N1qeK74HlQ= AllowedIPs = 10.10.10.4/32

Сохраните изменения и закройте файл. После этого перезапустите сервер VPN WireGuard.

Теперь вы можете настроить соединение WireGuard VPN на операционной системе Windows.

Политическая маршрутизация, раздельное туннелирование и переключатель VPN.

Теперь я расскажу о том, как применять политическую маршрутизацию, сплит-туннелирование и VPN-выключатель с WireGuard VPN. Учтите, что их совместное использование не рекомендуется. Если вы решите использовать политическую маршрутизацию, лучше не активировать сплит-туннелирование или VPN-выключатель, и наоборот.

Политическая навигация

По умолчанию весь трафик, проходящий через VPN-клиент, направляется на VPN-сервер. Однако иногда возникает необходимость направлять только определённые виды трафика, исходя из протокола транспортного уровня и порта назначения. Этот подход называется политической маршрутизацией.

Настройка политической маршрутизации осуществляется на клиентском ПК, и необходимо завершить процесс клиента WireGuard.

Далее внесите изменения в файл конфигурации клиента.

sudo nano /etc/wireguard/wg-client0.conf

К примеру, добавив три строки в раздел [interface], WireGuard сформирует таблицу маршрутизации под названием “1234” и внедрит правило ip в эту таблицу. В данном случае трафик будет проходить через VPN-сервер исключительно при использовании TCP в качестве транспортного протокола и при назначении порта 25, то есть когда клиент отправляет электронные письма.

Table = 1234 PostUp = ip rule add ipproto tcp dport 25 table 1234 PreDown = ip rule delete ipproto tcp dport 25 table 1234

wireguard-vpn-policy-routing-debian

Сохраните изменения в файле и закройте его. После этого перезапустите клиент WireGuard.

Туннелирование с делением на участки.

По умолчанию весь трафик клиента VPN направляется через VPN-сервер. Чтобы настроить разделение туннелирования, позволяющее маршрутизировать только трафик к IP-диапазону 10.10.10.0/24 через WireGuard VPN, выполните следующие шаги. Это особенно полезно для создания частной сети, объединяющей несколько облачных серверов, так как клиенты VPN будут находиться на этих серверах. При использовании полного VPN-туннеля может возникнуть риск потери соединения с облачными ресурсами.

Измените файл настроек клиента.

sudo nano /etc/wireguard/wg-client0.conf

AllowedIPs = 0.0.0.0/0

AllowedIPs = 10.10.10.0/24

Трафик будет направляться через VPN только если конечный адрес принадлежит IP-диапазону 10.10.10.0/24. Не забудьте сохранить изменения и закрыть файл, после чего перезапустите клиент WireGuard.

Функция защиты при отключении VPN

Ваш компьютер по умолчанию может подключаться к Интернету через стандартный шлюз в случае разрыва VPN-соединения. Рекомендуется активировать функцию kill switch, чтобы избежать передачи нешифрованных данных через интерфейсы, отличные от WireGuard.

Приостановите работу клиента WireGuard.

Измените файл настроек клиента.

sudo nano /etc/wireguard/wg-client0.conf

Включите следующие две строки в раздел [interface].

PostUp = iptables - I OUTPUT ! - o %i - m mark ! --mark $(wg show %i fwmark) - m addrtype ! --dst-type LOCAL - j REJECT PreDown = iptables - D OUTPUT ! - o %i - m mark ! --mark $(wg show %i fwmark) - m addrtype ! --dst-type LOCAL - j REJECT

[Interface] Address = 10.10.10.2/24 DNS = 10.10.10.1 PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI=PostUp = iptables - I OUTPUT ! - o %i - m mark ! --mark $(wg show %i fwmark) - m addrtype ! --dst-type LOCAL - j REJECT
PreDown = iptables - D OUTPUT ! - o %i - m mark ! --mark $(wg show %i fwmark) - m addrtype ! --dst-type LOCAL - j REJECT
[Peer]
PublicKey =kQvxOJI5Km4S1c7WXu2UZFpB8mHGuf3Gz8mmgTIF2U0=Разрешённые IP-адреса = 0.0.0.0/0 Конечная точка =12.34.56.78:51820 PersistentKeepalive = 25

Сохраните файл и закройте его. После этого откройте клиент WireGuard.

Установка ядра Linux версии 5.x на систему Debian 10.

На данный момент в Debian 10 используется ядро Linux версии 4.19. В первом шаге мы добавили репозиторий backport для этой системы. В данном репозитории на момент написания доступно ядро Linux 5.10. Как вам известно, модуль wireguard доступен в ядре Linux, начиная с версии 5.4. Если мы установим ядро Linux 5.10 на Debian 10, то при обновлении системы сборка модуля wireguard не потребуется. На моем сервере Debian 10 ранее возникали сложности с компиляцией модуля wireguard через wireguard-dkms.

Имейте в виду, что на момент чтения этой статьи репозиторий backport для Debian 10 мог удалить ядро 5.10 и добавить ядро 5.11. В этом случае просто замените 5.8 на 5.9 в приведенных ниже командах.

Для установки ядра Linux версии 5.8 на облачные серверы с операционной системой Debian 10, используйте следующую команду.

sudo apt install linux-image-5.10.0-0.bpo.7-cloud-amd64 linux-headers-5.10.0-0.bpo.7-cloud-amd64

Для установки ядра Linux 5.8 на компьютер с Debian 10 используйте следующую команду.

sudo apt install linux-image-5.10.0-0.bpo.7-amd64 linux-headers-5.10.0-0.bpo.7-amd64

После этого перезагрузите вашу систему Debian 10.

sudo shutdown - r now

Убедитесь, что вы знаете версию вашего ядра Linux.

uname - r

5.10.0-0.bpo.7-cloud-amd64

Хотя пакет wireguard-dkms больше не требуется, он является зависимостью для wireguard, и, следовательно, удалить его невозможно. Вероятно, при обновлении wireguard вы столкнетесь с следующей ошибкой.

Ошибка! Файл dkms.conf для этого модуля включает директиву BUILD_EXCLUSIVE, которая не соответствует этому ядру/архитектуре. Это указывает на то, что он не должен быть собран

Это свидетельствует о том, что wireguard-dkms пытается создать модуль wireguard для ядра Linux, но так как в версии 5.10 уже имеется встроенный модуль wireguard, процесс сборки блокируется. Поэтому эту ошибку можно проигнорировать.

Заключение

На этом всё! Надеюсь, этот учебник оказался полезным для вас при установке и настройке WireGuard на Debian. Если вы считаете этот материал ценным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций.

Читайте также:  Конвертация bin в iso в Linux