🖧 Как настроить WireGuard VPN на Rocky Linux 8

Мануал

WireGuard – это бесплатная VPN с открытым исходным кодом и современной криптографией.

Wireguard работает в архитектуре сервер-клиент, где сервер WireGuard отвечает за маршрутизацию трафика клиентов в определенные сети.

В этом руководстве мы рассмотрим, как установить сервер WireGuard VPN на Rocky Linux 8.

Установка WireGuard VPN сервера на Rocky Linux 8

Ниже описаны шаги, как установить WireGuard VPN сервер на Rocky Linux 8.

Шаг 1. Установка релиза Epel

Установите релиз EPEL на Rocky Linux 8.

Это поможет нам загрузить пакеты WireGuard, которые недоступны в стандартном репозитории Rocky Linux.

sudo dnf install epel-release elrepo-release -y

Шаг 2. Установка сервера WireGuard VPN на Rocky Linux 8

Установите wireguard vpn и необходимые зависимости, как показано ниже:

$ sudo yum install kmod-wireguard wireguard-tools

ELRepo.org Community Enterprise Linux Repository - el8                                                                                        15 kB/s | 272 kB     00:18    
Dependencies resolved.
=============================================================================================================================================================================
 Package                                   Architecture                     Version                                                   Repository                        Size
=============================================================================================================================================================================
Installing:
 kmod-wireguard                            x86_64                           4:1.0.20210606-1.el8_4.elrepo                             elrepo                           110 k
 wireguard-tools                           x86_64                           1.0.20210424-1.el8                                        epel                             125 k

Transaction Summary
=============================================================================================================================================================================
Install  2 Packages

Total download size: 235 k
Installed size: 641 k
Is this ok [y/N]: y

Шаг 3. Настройка WireGuard VPN на Rocky Linux 8

После загрузки следующим шагом будет настройка VPN-сервера WireGuard на Rocky Linux 8.

Создайте рабочий каталог WireGuard, в котором WireGuard будет хранить файлы конфигурации.

sudo mkdir /etc/wireguard

Шаг 4. Генерация ключей WireGuard

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

Генерация закрытых ключей для WireGuard

Используйте команду wg genkey для генерации закрытых ключей WireGuard.

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

umask 077 | wg genkey | sudo tee /etc/wireguard/wireguard.key

Убедитесь, что файл был записан по указанному выше пути:

# cat /etc/wireguard/wireguard.key 
6Eh08BtDiAqkTJ0rC6AbXi+UXyg+ZZoDU4n/ariG2Hg=
Генерация открытых ключей для Wireguard

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

wg pubkey < /etc/wireguard/wireguard.key > /etc/wireguard/wireguard.pub.key

Проверьте содержимое файла открытого ключа.

[root@Rocky ~]# cat /etc/wireguard/wireguard.pub.key 
BXfVP+JcQbwZUkhHtVJQIVEOw4oXM1fj1FDkC1f0ais=

Шаг 5. Создание сетевой конфигурации для WireGuard

Создайте сетевую конфигурацию для wireguard, как показано ниже.

Не забудьте использовать закрытый ключ вашего сервера.

$ sudo vim /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.10.1/24
SaveConfig = true
ListenPort = 51820
DNS	   = 8.8.8.8,10.10.10.1
PrivateKey = <SERVER-PRIVATE-KEY>
PostUp = firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
PostDown = firewall-cmd --remove-port=51820/udp; firewall-cmd --zone=public --remove-masquerade; firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE

Шаг 6. Включим переадресацию IP-адресов на Rocky Linux 8

Включите IP-переадресацию на Rocky Linux, чтобы обеспечить маршрутизацию пакетов для VPN-клиентов к необходимым пунктам назначения.

Добавьте строку net.ipv4.ip_forward = 1 в файл /etc/sysctl.conf.

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

Перезагрузите настройки sysctl:

sudo sysctl -p

Шаг 7. Запуск сервера WireGuard VPN

Запустите сервер WireGuard VPN с помощью инструмента wg-quick.

# sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.10.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] mount `8.8.8.8 10.10.10.1' /etc/resolv.conf
[#] firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
success
success
success
success

Проверьте и убедитесь, что интерфейс Wireguard поднят.

# ifconfig wg0
wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 10.10.10.1  netmask 255.255.255.0  destination 10.10.10.1
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Вы также можете управлять службой Wireguard с помощью Systemd.

Чтобы запустить службу:

sudo systemctl start wg-quick@wg0

Чтобы проверить статус службы:

# systemctl status wg-quick@wg0
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
   Loaded: loaded (/usr/lib/systemd/system/wg-quick@.service; disabled; vendor preset: disabled)
   Active: active (exited) since Thu 2021-08-12 18:41:23 EDT; 3s ago
     Docs: man:wg-quick(8)
           man:wg(8)
           https://www.wireguard.com/
           https://www.wireguard.com/quickstart/
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
  Process: 76862 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
 Main PID: 76862 (code=exited, status=0/SUCCESS)

Aug 12 18:41:19 Rocky wg-quick[76862]: [#] ip link add wg0 type wireguard
Aug 12 18:41:19 Rocky wg-quick[76862]: [#] wg setconf wg0 /dev/fd/63
Aug 12 18:41:19 Rocky wg-quick[76862]: [#] ip -4 address add 10.10.10.1/24 dev wg0
Aug 12 18:41:19 Rocky wg-quick[76862]: [#] ip link set mtu 1420 up dev wg0
Aug 12 18:41:19 Rocky wg-quick[76862]: [#] firewall-cmd --add-port=51820/udp; firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j 
Aug 12 18:41:20 Rocky wg-quick[76862]: success
Aug 12 18:41:21 Rocky wg-quick[76862]: success
Aug 12 18:41:22 Rocky wg-quick[76862]: success
Aug 12 18:41:23 Rocky wg-quick[76862]: success
Aug 12 18:41:23 Rocky systemd[1]: Started WireGuard via wg-quick(8) for wg0.

Настройка клиента WireGuard на Rocky Linux 8

После успешной настройки сервера WireGuard  нам нужно настроить клиент WireGuard на другой машине Rocky Linux 8.

Установите пакет Wireguard на Rocky Linux

dnf install epel-release elrepo-release -y
dnf install kmod-wireguard wireguard-tools -y

Настройте закрытый и открытый ключи для клиентской машины Rocky Linux:

sudo su -
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Настройте интерфейс WireGuard для клиента Rocky Linux

$ sudo vi /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <Client-private-key>
Address = 10.10.10.2/24

[Peer]
PublicKey = <server-public-key>
Endpoint = <server-ip-address>:51820
AllowedIPs = 0.0.0.0/0

Убедитесь, что в приведенной выше конфигурации используются правильные данные для PrivateKey, PublicKey и Endpoint.

На VPN-сервере выполните приведенную ниже команду, чтобы разрешить одноранговое соединение с клиентской машиной

sudo wg set wg0 peer <client-public-key> allowed-ips 10.0.0.2

На клиентской машине запустите интерфейс Wireguard с помощью приведенной ниже команды:

$ sudo wg-quick up wg0

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.10.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Вы успешно подключитесь к VPN-серверу.

Ваш трафик будет направлен на VPN-сервер.

Заключение

Wireguard – это VPN-решение корпоративного класса, но с открытым исходным кодом, которое легко настроить и управлять.

Мы успешно настроили VPN-сервер WireGuard на Rocky Linux 8.

Не стесняйтесь связаться с нами, если вы столкнетесь с трудностями во время развертывания.

cм. также:

 

 

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