Запуск WireGuard на Debian 11 и Ubuntu Server 22.04

Краткая инструкция по быстрому запуску и начальной настройке VPN-сервера и клиента WireGuard на ОС Debian GNU/Linux 11 и Ubuntu Server 22.04

На сервере и клиенте устанавливаем пакет wireguard

# apt install wireguard

и переходим в каталог /etc/wireguard/

# cd /etc/wireguard/

Затем на сервере установим iptables

# apt install iptables

Далее откроем файл /etc/sysctl.conf

# nano /etc/sysctl.conf

и раскомментируем строку:

net.ipv4.ip_forward=1

Проверяем

# /sbin/sysctl -p

консоль должна показать сообщение:

net.ipv4.ip_forward = 1

Теперь необходимо сгенерировать ключи

# wg genkey | tee privatekey | wg pubkey | tee publickey

консоль покажет примерно такое сообщение:

V7EWBnlhpBTAB8l6VI6qRGtiAWme1cbNr4bSZjIFySY=

Затем понадобится открыть файл с приватным ключом. Для этого выведем содержимое файла privatekey

# cat privatekey

и консоль покажет нам этот ключ:

EKz3dmgbimPjAX3UpQSjTWgy1xzOsqpwqgRdmHRB6Hs=

Его необходимо скопировать в буфер для вставки в конфигурационный файл.

Создадим и откроем конфигурационный файл сервера wg0.conf

# touch wg0.conf
# nano wg0.conf

и внесём такое содержимое:

[Interface]
PrivateKey = EKz3dmgbimPjAX3UpQSjTWgy1xzOsqpwqgRdmHRB6Hs=
Address = 192.168.100.1/24
SaveConfig = true
PostUp = /sbin/iptables -A FORWARD -i %i -j ACCEPT; /sbin/iptables -A FORWARD -o %i -j ACCEPT; /sbin/iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = /sbin/iptables -D FORWARD -i %i -j ACCEPT; /sbin/iptables -D FORWARD -o %i -j ACCEPT; /sbin/iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
ListenPort = 51820

После этого зададим права на все файлы в этом каталоге

# chmod 600 *

И также нам понадобится публичный ключ. Выводим его в сообщение в консоли

# cat publickey

консоль покажет его нам:

V7EWBnlhpBTAB8l6VI6qRGtiAWme1cbNr4bSZjIFySY=

Его необходимо будет скопировать в буфер.

Теперь на клиенте сгенерируем ключи

# wg genkey | tee privatekey | wg pubkey | tee publickey

консоль покажет:

4MfvfJaz1xmAErmVfX+8J/AhDdibm87tReUTzAuYDxM=

После этого понадобится открыть файл с приватным ключом. Для этого выведем содержимое файла privatekey

# cat privatekey

консоль покажет его:

cGahpRN7gAtOAhJBRmz2j3TvWNVT8CqS9bCtdxDFZ18=

Скопируем этот ключ в буфер.

Далее создадим и откроем файл конфигурации клиента wg-client.conf

# touch wg-client.conf
# nano wg-client.conf

и пропишем в него такие параметры:

[Interface]
PrivateKey = cGahpRN7gAtOAhJBRmz2j3TvWNVT8CqS9bCtdxDFZ18=
Address = 192.168.100.11/32

[Peer]
PublicKey = V7EWBnlhpBTAB8l6VI6qRGtiAWme1cbNr4bSZjIFySY=
Endpoint = 192.168.1.30:51820
AllowedIPs = 192.168.100.0/24

Endpoint — «белый» IP-адрес сервера

Теперь выведем на экран публичный ключ

# cat publickey

консоль покажет нам его:

4MfvfJaz1xmAErmVfX+8J/AhDdibm87tReUTzAuYDxM=

Скопируем его в буфер.

После этого на сервере снова открываем файл конфигурации wg0.conf

# nano wg0.conf

и в конце файла допишем конфигурацию клиента (peer)

[Peer]
PublicKey = 4MfvfJaz1xmAErmVfX+8J/AhDdibm87tReUTzAuYDxM=
AllowedIPs = 192.168.100.11/32

Теперь запустим сервер

# wg-quick up wg0

Консоль должна показать нам примерно такое сообщение:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.100/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] /sbin/iptables -A FORWARD -i wg0 -j ACCEPT; /sbin/iptables -A FORWARD -o wg0 -j ACCEPT; /sbin/iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

Переходим на клиент и запустим его

# wg-quick up wg-client

Здесь консоль должна показать такое сообщение:

[#] ip link add wg-client type wireguard
[#] wg setconf wg-client /dev/fd/63
[#] ip -4 address add 192.168.100.11/32 dev wg-client
[#] ip link set mtu 1420 up dev wg-client
[#] ip -4 route add 192.168.100.0/24 dev wg-client

Проверяем конфигурации сетевых интерфейсов

# ip a

консоль должна показать:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:68:38:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.33/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe68:3885/64 scope link
       valid_lft forever preferred_lft forever
4: wg-client: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.100.11/32 scope global wg-client
       valid_lft forever preferred_lft forever

И также — на сервере

# ip a

консоль покажет:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:d8:c5:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.30/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fed8:c517/64 scope link
       valid_lft forever preferred_lft forever
8: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 192.168.100.1/24 scope global wg0
       valid_lft forever preferred_lft forever

Чтобы убедиться, что обе машины видят друг друга, пропингуем их:

на клиенте

# ping 192.168.100.1

на сервере

# ping 192.168.100.11

Запустим команду wg на сервере

# wg

Она покажет нам в консоли краткую статистику текущих подключений

И в самом конце нам понадобится включить службы в автозагрузку. Для этого выполняем такие команды:

на сервере

# systemctl enable wg-quick@wg0

и на клиенте

# systemctl enable wg-quick@wg-client

На этом первоначальная настройка завершена. В YouTube есть отличный ролик, где описаны более тонкие моменты в конфигурациях. Ссылка — https://www.youtube.com/watch?v=Buv3dEQ8IZA

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

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