Установка WireGuard сервера на Debian 12 от [А-до-Я]

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Wireguard — это VPN-протокол с открытым исходным кодом, альтернативный IPSec, IKEv2 и OpenVPN. Wiruguard разработан для операционных систем Linux и Unix, он работает на ядре Linux, что делает Wireguard более быстрым и надежным. Wireguard используется для создания защищенных туннельных соединений между двумя и более компьютерами.

Wireguard нацелен на замену VPN-протоколов, таких как IPSec, IKEv2 и OpenVPN. Wireguard легче, быстрее, проще в настройке и эффективнее. В то же время Wiregurad не пожертвовал аспектом безопасности VPN-протокола. Wireguard поддерживает современную криптографию, такую как Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и безопасные доверенные конструкции.

В этом руководстве вы узнаете, как установить Wireguard VPN на сервере Debian 12 и настроить клиент Wireguard на машине Linux.

Требования

Прежде чем приступить к работе, убедитесь, что вы соответствуете следующему:

- Linux-сервер под управлением Debian 12.
- Пользователь без полномочий root с привилегиями sudo.
- Клиентская машина — в данном случае с использованием дистрибутива на базе Debian.


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

Перед установкой Wireguard необходимо подготовить сервер Debian, внеся следующие изменения:

- Включить переадресацию портов через /etc/sysctl.conf
- Установить и настройка UFW


Теперь начнем.

# Сначала обновим систему
apt update
# Поставим судо
apt install sudo

Включаем переадресацию портов


Чтобы включить переадресацию портов, необходимо включить модуль ядра net.ipv4.ip_forward для IPv4 или net.ipv6.conf.all.forwarding для IPv6. Эти модули ядра можно включить через файл /etc/sysctl.conf.

Откройте файл /etc/sysctl.conf с помощью следующей команды редактора nano.

# Открываем файл на правку
sudo nano /etc/sysctl.conf

Вставьте следующую конфигурацию, чтобы включить переадресацию портов для IPv4 и IPv6 (при необходимости).

# Переадресация портов для IPv4
net.ipv4.ip_forward=1
# Переадресация портов для IPv6
net.ipv6.conf.all.forwarding=1

Сохраните файл через F2 и выйдите из редактора по завершении.

Теперь примените изменения с помощью команды sysctl, указанной ниже.

# Смотрим текущий конфиг
sudo sysctl -p

Установка UFW


По умолчанию в Debian используется брандмауэр iptables, и теперь вы установите UFW. Вы будете использовать как UFW, так и iptables для сервера Wirguard.

Выполните команду apt ниже, чтобы установить UFW в вашу систему Debian.

sudo apt install ufw -y


Далее выполните команду ufw, чтобы добавить профиль приложения OpenSSH и включить UFW. Введите y и нажмите ENTER для подтверждения, и вы должны получить сообщение "Firewall is active and enabled on system startup".

# Разрешаем SSH
sudo ufw allow OpenSSH
# Ставим в загрузку
sudo ufw enable

Наконец, проверьте статус UFW с помощью команды ниже.

# Смотрим статус
sudo ufw status

Если он запущен, вы должны получить вывод "Status: active". Вы также увидите, что профиль приложения OpenSSH добавлен в UFW.

Установка сервера Wireguard

После настройки сервера Debian вы готовы создать сервер Wireguard VPN на своей машине Debian. Для этого выполните следующие пункты:

- Установка Wireguard
- Генерация ключа сервера Wireguard
- Генерация ключа клиента Wireguard
- Настройка интерфейса Wireguard
- Настройка NAT для интерфейса Wireguard


Давайте сделаем это.

Установка Wireguard

Сначала установите пакет wireguard на свой сервер Debian, выполнив следующую команду.

# Ставим ваергард
sudo apt install wireguard -y

Генерация ключа сервера Wireguard

После установки пакета Wireguard следующей задачей является генерация сертификатов сервера, что можно сделать с помощью инструмента командной строки wg.

Выполните следующую команду для генерации закрытого ключа сервера Wireguard в /etc/wireguard/server.key. Затем измените разрешение закрытого ключа сервера на 0400, что означает, что вы отключите доступ на запись в файл.

# Создаем ключ и сохраняем его в файл.
wg genkey | sudo tee /etc/wireguard/server.key
-> sJTd/Q2thsHJlAQr1oKaQ0p4KaejvrpMMNaylaUZOn8=
# Выставляем нужные права
sudo chmod 0400 /etc/wireguard/server.key

Затем выполните следующую команду, чтобы сгенерировать открытый ключ сервера Wireguard в /etc/wireguard/server.pub.

# Генерируем публичный ключ
sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub
-> bAU9kCv/7wRe1KL3xqPII+dvmm1mlmOZPa3q6PM6F3Y=

Теперь, когда вы сгенерировали закрытый ключ для /etc/wireguard/server.key и открытый ключ для /etc/wireguard/server.pub для вашего сервера Wireguard, вы можете выполнить команду cat ниже, чтобы отобразить содержимое как закрытого, так и открытого ключей.

# Смотрим ключ
cat /etc/wireguard/server.key
-> sJTd/Q2thsHJlAQr1oKaQ0p4KaejvrpMMNaylaUZOn8=
# Смотрим ключ
cat /etc/wireguard/server.pub
-> bAU9kCv/7wRe1KL3xqPII+dvmm1mlmOZPa3q6PM6F3Y=

У вас может быть другой результат, но сгенерированные ключи выглядят следующим образом:

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


Сгенерировав ключ сервера Wireguard, следующая задача — сгенерировать ключи для клиентов. Вы можете сгенерировать клиентские ключи для каждого пользователя, но вы также можете использовать один ключ для нескольких пользователей.

В этом примере вы сгенерируете клиентский ключ для конкретного пользователя alice.

Для начала выполните следующую команду, чтобы создать новый каталог для хранения клиентских ключей. В этом случае открытый и закрытый ключи для пользователя alice будут сгенерированы в каталоге /etc/wireguard/clients/alice.

# Создаем каталог
mkdir -p /etc/wireguard/clients/alice

Теперь выполните следующую команду, чтобы сгенерировать закрытый ключ /etc/wireguard/clients/alice/alice.key и открытый ключ /etc/wireguard/clients/alice/alice.pub для пользователя alice.

# Генерируем закрытый ключ и записываем в файл
wg genkey | tee /etc/wireguard/clients/alice/alice.key
-> OONQGLiB8Ti+mpx3Ntfq725UoXfdoLtA2sNntKN7nVE=
# Смотрим файл, генерируем открытый ключ и записываем в файл
cat /etc/wireguard/clients/alice/alice.key | wg pubkey | tee /etc/wireguard/clients/alice/alice.pub
-> wwRmtz0ZLkMzSukLh9IcaNpwTUmgCLpAftIVQoKDXE4=

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

# Смотрим закрытый ключ
cat /etc/wireguard/clients/alice/alice.key
# Смотрим открытый ключ
cat /etc/wireguard/clients/alice/alice.pub

Будет отображен аналогичный вывод, подобный следующему:

Настройка интерфейса Wireguard

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

Создайте новую конфигурацию Wireguard /etc/wireguard/wg0.conf, используя следующую команду редактора nano.

# Будем править этот файл
sudo nano /etc/wireguard/wg0.conf

Вставьте следующую конфигурацию в файл.

[Interface]
# Закрытый ключ сервера - server.key
PrivateKey = sJTd/Q2thsHJlAQr1oKaQ0p4KaejvrpMMNaylaUZOn8=

# Интерфейс будет запущен на айпи 10.10.0.1 - серый
Address = 10.10.0.1/24

# Клиенты будут подключаться к порту 51820
ListenPort = 51820

# Убедитесь, что все изменения будут сохранены в файле конфигурации Wireguard
SaveConfig = true


Теперь добавьте следующий раздел [Peer] для клиентов Wireguard.

[Peer]
# Открытый ключ для клиента Элис
PublicKey = wwRmtz0ZLkMzSukLh9IcaNpwTUmgCLpAftIVQoKDXE4=
# С каких адресов можно подключаться - серые

AllowedIPs = 10.10.0.2/24

Сохраните и закройте файл, когда закончите.

Наконец, выполните следующую команду, чтобы открыть порт 51820/udp для клиентских подключений.

# Открываем порт 51820 удп
sudo ufw allow 51820/udp

Настройка NAT для интерфейса Wireguard

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

# Сморим шлюз по умолчанию
sudo ip route list default

В этом случае сетевым интернет-шлюзом по умолчанию является интерфейс ens3 (у меня).

Теперь откройте конфигурацию Wireguard /etc/wireguard/wg0.conf с помощью следующей команды редактора nano.

# Снова открываем файл
sudo nano /etc/wireguard/wg0.conf

Добавьте следующую конфигурацию в раздел [Interface] и обязательно измените интерфейс ens3 на интерфейс интернет-шлюза по умолчанию.

[Interface]
...
# Добавляем маршрут
PostUp = ufw route allow in on wg0 out on ens3
# НАТ для айпив4
PostUp = iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
# НАТ для айпив6
PostUp = ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
# Удаляем маршрут
PreDown = ufw route delete allow in on wg0 out on ens3
# НАТ для айпив4
PreDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
# НАТ для айпив6

PreDown = ip6tables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

По завершении сохраните и закройте файл.

На этом этапе вы настроили свой сервер Wireguard.

Управление службой Wireguard

Теперь, когда установка и настройка сервера Wireguard завершены, вы готовы запустить службу Wireguard в вашей системе Debian. Это можно сделать с помощью команды systemctl или с помощью утилиты wg-quick.

Чтобы запустить и включить сервер Wireguard, выполните следующую команду systemctl. С именем службы wg-quick@wg0 вы запустите Wireguard на интерфейсе wg0, который основан на конфигурации /etc/wireguard/wg0.conf.

# Стартуем
sudo systemctl start wg-quick@wg0.service
# Добавляем в загрузку
sudo systemctl enable wg-quick@wg0.service

Теперь проверьте службу wirguard@wg0 с помощью следующей команды.

# Проверка службы
sudo systemctl status wg-quick@wg0.service

Если служба запущена, будет отображен следующий вывод.

Далее выполните команду ниже, чтобы отобразить сведения о интерфейсе wireguard wg. И вы должны увидеть, что интерфейс wireguard wg0 имеет IP-адрес 10.10.0.1.

# смотрим айпи
sudo ip a show wg0

Вы также можете запустить или остановить Wireguard вручную с помощью команды wg-quick, указанной ниже.

# Старт
sudo wg-quick up /etc/wireguard/wg0.conf
# Стоп
sudo wg-quick down /etc/wireguard/wg0.conf

С этим вы настроили сервер Wireguard и запустили его в фоновом режиме с помощью команды systemctl. Теперь ваш клиент готов подключиться к серверу Wireguard.

Настройка клиента Wireguard в дистрибутиве на базе Debian

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

Установите пакет wireguard-tools на клиентскую машину через APT. Клиентская машина — это дистрибутив на основе Debian, поэтому будет использоваться менеджер пакетов APT.

# Сначала обновим систему
apt update
# Поставим судо
apt install sudo
# Ставим тулзы и
sudo apt install wireguard-tools resolvconf -y

После установки wireguard-tools создайте новую конфигурацию клиента wireguard /etc/wireguard/wg-alice.conf с помощью следующего редактора nano.

# Правим файл
sudo nano /etc/wireguard/wg-alice.conf

Вставьте следующую конфигурацию в файл.

[Interface]
# Определите IP-адрес для клиента - он должен совпадать с wg0 на сервере Wireguard
Address = 10.10.0.2/24

# Определяем ДНС сервер
DNS = 8.8.8.8

# Закрытый ключ Элис
PrivateKey = OONQGLiB8Ti+mpx3Ntfq725UoXfdoLtA2sNntKN7nVE=

[Peer]
# Открытый ключ сервера
PublicKey = bAU9kCv/7wRe1KL3xqPII+dvmm1mlmOZPa3q6PM6F3Y=

# Разрешаем маршрутизацию всего трафика через ВПН
AllowedIPs = 0.0.0.0/0

# Белый айпи-адрес сервера куда подключаемся
Endpoint =1.1.1.1:51820

# Шлем кипэлайвы каждый 25 сек.
PersistentKeepalive = 25


Сохраните и закройте файл, когда закончите.

Затем выполните команду wg-quick, указанную ниже, чтобы запустить Wireguard на интерфейсе wg-alice.

sudo wg-quick up wg-alice

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

После этого выполните команду ниже, чтобы проверить детали интерфейса wg-alice. И вы должны увидеть интерфейс wg-alice с локальным IP-адресом 10.10.0.2.

sudo ip a show wg-alice

Затем проверьте подключение клиентского компьютера к Интернету, выполнив следующую команду.

ping -c3 10.10.0.1
ping -c3 1.1.1.1
ping -c3 duckduckgo.com


Если установка сервера Wireguard прошла успешно, вы получите ответ от каждого целевого сервера примерно следующего вида:

Кроме того, вы также можете детализировать соединения между сервером Wireguard и клиентом, выполнив следующую команду на сервере Wireguard или клиентском компьютере.

wg show

Аналогичный вывод будет показан ниже.

Наконец, чтобы остановить соединение Wireguard на клиентском компьютере, выполните команду wg-quick, указанную ниже.

sudo wg-quick down wg-alice

Для Windows систем.

Скачиваем инсталлятор с официального сайта https://www.wireguard.com/install/ и устанавливаем.

После установки запускам программу, выбираем из нижнего меню пункт - "Добавить пустой туннель...". В "Названии" пишем имя туннеля, а в основное окно вставляем следующий конфиг:

[Interface]
Address = 10.10.0.2/24
DNS = 8.8.8.8
PrivateKey = OONQGLiB8Ti+mpx3Ntfq725UoXfdoLtA2sNntKN7nVE=

[Peer]
PublicKey = bAU9kCv/7wRe1KL3xqPII+dvmm1mlmOZPa3q6PM6F3Y=
AllowedIPs = 0.0.0.0/0
Endpoint =1.1.1.1:51820
PersistentKeepalive = 25


И нажимаем кнопку сохранить.

После этого можно нажать кнопку подключиться. Если все нормально, то должна заработать связь. Новый айпи можно увидеть по адрес 2ip.ru. Если связь не работает, то проверяйте свой файерволл - в моем случае мне мешал ДокторВеб.

Заключение

В заключение, вы завершили пошаговую установку Wireguard VPN на сервере Debian 12. Вы также настроили клиентскую машину на базе Debian с Wireguard и подключились к серверу Wireguard. Учитывая это, теперь вы можете добавить больше клиентов, добавив больше ключей Wireguard и конфигурацию Peer.
 
Сверху Снизу