WireGuard — это бесплатное программное приложение с открытым исходным кодом и протокол связи, который реализует методы виртуальной частной сети для создания безопасных соединений «точка-точка» в маршрутизируемых или мостовых конфигурациях.
1. Настройка главного сервера.
1.1. Устанавливаем wireguard.
1.1.1. Первый вариант установки. (Именно этот вариант установки сработал после обновления AlmaLinux до версии 8.5)
# dnf install epel-release # dnf config-manager --set-enabled powertools # dnf copr enable jdoss/wireguard # dnf install wireguard-dkms wireguard-tools
1.1.2. Второй вариант установки. (Именно этот вариант установки сработал на ОС RockyLinux)
# dnf install elrepo-release epel-release
# dnf install kmod-wireguard wireguard-tools
Внимание! В случае возникновения необъяснимых ошибок уже при запуске интерфейса wg0, командами описанными ниже, нужно попробовать другой вариант установки. Разница у них в установке пакетов: wireguard-dkms или kmod-wireguard. В каких-то ОС работает первый вариант, в каких-то второй.
1.2. Проверяем, подключен ли нужный драйвер:
# lsmod | grep 8021q 8021q 40960 0 garp 16384 1 8021q mrp 20480 1 8021q
1.3. Если этих строк нет, добавляем драйвер в ядро:
# modprobe 8021q
1.4. Генерируем приватный и публичный ключи:
# wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
1.5. Настраиваем конфигурационный файл для интерфейса wg0 и меняем права доступа:
# touch /etc/wireguard/wg0.conf # chmod 600 /etc/wireguard/{privatekey,wg0.conf}
1.6. Открываем порт (будем использовать порт 41321):
# firewall-cmd --permanent --zone=public --add-port=41321/udp # firewall-cmd --reload
1.7. Смотрим приватный/публичный ключи главного сервера:
# cat /etc/wireguard/privatekey SMWUid073s000000000tvGgeN/Ow4BX9gsLqXFY= # cat /etc/wireguard/publickey RAalpQDMW000000000M761Vc56ugguVupB8ig=
1.8. Настраиваем интерфейс wg0:
# nano /etc/wireguard/wg0.conf [Interface] Address = 172.16.30.1/24 # Отключаем перезапись конфига клиентом SaveConfig = false ListenPort = 41321 # Private Key сервера PrivateKey = SMWUid073s000000000tvGgeN/Ow4BX9gsLqXFY= [Peer] # Public Key второго узла PublicKey = vQyGpGrx00000000000000000cTieq/yIJJ3Y= AllowedIPs = 172.16.30.2/32 PersistentKeepalive = 15
1.9. Команды для управления wireguard:
# wg-quick up wg0 # wg-quick down wg0 # wg show wg0 interface: wg0 public key: RAalpQD0000Z7fP5L000000000006ugguVupB8ig= private key: (hidden) listening port: 41321
1.10. Добавляем сервис в автозагрузку и запускаем его:
# systemctl enable --now wg-quick@wg0
1.11. Проверяем, появился ли интерфейс, и доступен ли порт:
# ip a # ss -nltup
2. Настройка второстепенного сервера
2.1. Установка производится аналогичным образом.
2.2. Смотрим приватный/публичный ключи:
# cat /etc/wireguard/privatekey SNtUeP3cn700000000Zc0000pDi4MC1nl8AoR28= # cat /etc/wireguard/publickey vQyGpGrx00000000000000000cTieq/yIJJ3Y=
2.3. Настраиваем интерфейс wg0:
$ sudo nano /etc/wireguard/wg0.conf [Interface] Address = 172.16.30.2/24 SaveConfig = true ListenPort = 41321 # Private Key второго узла PrivateKey = SNtUeP3cn700000000Zc0000pDi4MC1nl8AoR28= [Peer] # Public Key основного сервера PublicKey = RAalpQDMW000000000M761Vc56ugguVupB8ig= AllowedIPs = 172.16.30.1/32 # Внешний IP основного сервера Endpoint = 93.78.115.123:41321 PersistentKeepalive = 15
2.4. Добавляем сервис в автозагрузку и запускаем его:
# systemctl enable --now wg-quick@wg0
2.5. Командами управления wireguard:
# wg-quick up wg0 # wg-quick down wg0 # wg show wg0
2.6. Далее проверяем канал с основного сервера:
# ping 172.16.30.2 -c 3
2.7. Проверяем канал со второго узла:
# ping 172.16.30.1 -c 3
Если всё правильно сделано, то оба узла должны видеть друг друга.