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, чтобы добавить профиль приложения OpenSSH и включить UFW. Введите y и нажмите ENTER для подтверждения, после чего вы должны получить сообщение “Брандмауэр активен и включен при запуске системы“.
sudo ufw allow OpenSSH sudo ufw enable
И наконец, проверьте состояние UFW с помощью следующей команды.
sudo ufw status
Если команда запущена, вы должны получить вывод “Статус: активен”. Вы также увидите, что на OpenSSH профиль приложения добавлен в 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]
Если служба запущена, будет показан следующий результат.
Далее выполните приведенную ниже команду ip, чтобы показать подробную информацию об интерфейсе wireguard wg0. Вы должны увидеть, что интерфейс 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.
sudo apt install wireguard-tools resolvconf
После установки инструментов 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
Если все прошло успешно, будет показан аналогичный вывод, приведенный ниже.
После этого выполните приведенную ниже команду ip, чтобы проверить детали интерфейса 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
Заключение
В заключение можно сказать, что вы завершили пошаговую установку Wireguard VPN на сервер Debian 12. Вы также настроили клиентскую машину на базе Debian с Wireguard и подключились к серверу Wireguard. Теперь вы можете добавить больше клиентов, добавив больше ключей Wireguard и конфигурацию пиров.