Установка WireGuard VPN на Debian 12

Wireguard – это VPN-протокол с открытым исходным кодом, альтернативный IPSec, IKEv2 и OpenVPN. Wiruguard разработан для операционных систем Linux и Unix, он работает в пространстве ядра Linux, что делает Wireguard более быстрым и надежным. Wireguard используется для создания безопасных туннельных соединений между двумя или более компьютерами.

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

Это руководство покажет вам, как установить Wireguard VPN на сервер Debian 12 и настроить клиент Wireguard на машине Linux.

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

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

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

Теперь давайте начнем.

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

Чтобы включить переадресацию портов, необходимо включить модуль ядра 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 (если необходимо).

# Port Forwarding for IPv4
net.ipv4.ip_forward=1

# Port forwarding for IPv6
net.ipv6.conf.all.forwarding=1

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

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

sudo sysctl -p

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

Установка UFW

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

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

sudo apt update && sudo apt install ufw -y

установить ufw

Затем выполните приведенную ниже команду ufw, чтобы добавить профиль приложения OpenSSH и включить UFW. Введите y и нажмите ENTER для подтверждения, после чего вы должны получить сообщение “Брандмауэр активен и включен при запуске системы“.

sudo ufw allow OpenSSH
sudo ufw enable

включить ufw

И наконец, проверьте состояние UFW с помощью следующей команды.

sudo ufw status

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

проверить ufw

Установка Wireguard Server

После настройки сервера Debian вы готовы создать Wireguard VPN Server на вашей машине 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
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

генерировать ключ сервера

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

cat /etc/wireguard/server.key
cat /etc/wireguard/server.pub

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

показать ключ сервера

Генерация ключа клиента 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
cat /etc/wireguard/clients/alice/alice.key | wg pubkey | tee /etc/wireguard/clients/alice/alice.pub

генерировать клиентский ключ

Наконец, выполните следующую команду, чтобы показать содержимое закрытого и открытого ключей для пользователя 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]
# Wireguard Server private key - server.key
PrivateKey = cNBb6MGaKhmgllFxSq/h9BdYfZOdyKvo8mjzb2STbW8=

# Wireguard interface will be run at 10.10.0.1
Address = 10.10.0.1/24

# Clients will connect to UDP port 51820
ListenPort = 51820

# Ensure any changes will be saved to the Wireguard config file
SaveConfig = true

Ниже подробно описаны параметры, которые будут использоваться в файле [Interface] секции:

  • PrivateKey: Введите содержимое приватного ключа сервера wireguard server.key.
  • Address: IP-адрес, который будет назначен интерфейсу Wireguard. В данном случае интерфейс wireguard будет иметь IP-адрес 10.10.0.1.
  • ListenPort: это порт, который будет использоваться клиентом для подключения к серверу wireguard. В данном случае будет использоваться порт 51820.
  • SaveConfig: значение true означает, что все изменения будут сохранены от текущего состояния интерфейса до выключения.

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

[Peer]
# Wireguard client public key - alice.pub
PublicKey = 3ZoaoVgHOioZnKzCrF/XALAv70V4vyJXpl/UO7AKYzA=

# clients’ VPN IP addresses you allow to connect
# possible to specify subnet ⇒ [10.10.0.0/24]
AllowedIPs = 10.10.0.2/24

Ниже приведены параметры, которые используются в программе [Peer] разделе:

PublicKey: Введите в этот параметр открытый ключ клиента wireguard. В данном случае содержимое открытого ключа alice.pub.
AllowedIPs (Разрешенные IP-адреса): Определите IP-адрес для клиента и направьте трафик на интерфейс wireguard.

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

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

sudo ufw allow 51820/udp

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

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

sudo ip route list default

В данном случае интернет-шлюзом по умолчанию является интерфейс eth0.

проверка шлюза по умолчанию

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

sudo nano /etc/wireguard/wg0.conf

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

[Interface]
...

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.

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

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

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

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

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

sudo systemctl status [email protected]

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

запустить службу проверки wireguard

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

sudo ip a show wg0

проверка интерфейса 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.

sudo apt install wireguard-tools resolvconf

установить инструменты wireguard

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

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

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

[Interface]
# Define the IP address for the client - must be matched with wg0 on the Wireguard Server
Address = 10.10.0.2/24

# specific DNS Server
DNS = 1.1.1.1

# Private key for the client – alice.key
PrivateKey = cPDg6SQHz/3l2R83lMWPzmR6/mMKnKp9PNImbtB6nGI=

[Peer]
# Public key of the Wireguard server – server.pub
PublicKey = APyBQvTkYVm0oakzcQUQViarwx1aIYz5wb/g2v2xdUE=

# Allow all traffic to be routed via Wireguard VPN
AllowedIPs = 0.0.0.0/0

# Public IP address of the Wireguard Server
Endpoint = 192.168.128.15:51820

# Sending Keepalive every 25 sec
PersistentKeepalive = 25

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

Ниже приведены некоторые параметры в [Interface] для клиентов wireguard:

  • Адрес: укажите внутренний IP-адрес интерфейса wireguard на клиентской машине.
  • DNS: настройка DNS-сервера по умолчанию для клиента.
  • PrivateKey: закрытый ключ клиента wireguard, в данном случае alice.key.

А внутри [Peer] раздел о конфигурации клиента wireguard:

  • PublicKey: это открытый ключ сервера wireguard, который представляет собой файл server.pub.
  • AllowedIPs: Разрешить маршрутизацию любого доступа через интерфейс wireguard.
  • Конечная точка: IP-адрес и порт сервера wireguard.
  • PersistentKeepalive: отправлять keepalive каждые x секунд для поддержания соединения.

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

sudo wg-quick up wg-alice

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

запустить wireguard на клиенте

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

sudo ip a show wg-alice

проверка интерфейса wireguard на клиенте

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

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

Если установка сервера wireguard прошла успешно, вы получите ответ от каждого целевого сервера, как показано ниже:

проверка ping

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

wg show

Будет показан аналогичный вывод, приведенный ниже.

показать соединения wireguard

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

sudo wg-quick down wg-alice

остановить wireguard на клиенте

Заключение

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *