3.9.12 WireGuard - зашифрованные виртуальные частные сети
Установка
Настройка на сервере
Настройка на клиенте
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Сервер графический
- Версия ПО: wireguard-tools-1.0.20210914-1
WireGuard — коммуникационный протокол, реализующий зашифрованные виртуальные частные сети (VPN). Был разработан для простого использования технологии VPN, высокой производительности и низкой поверхности атаки. WireGuard нацелен на лучшую производительность и большую мощность, чем IPsec и OpenVPN. Протокол WireGuard передаёт трафик по протоколу UDP.
На нашем Youtube-канале вы можете подробнее ознакомиться с созданием и настройкой виртуальных частных сетей, просмотрев видео Настройка VPN с помощью WireGuard, а также найти много другой полезной информации.
Установка
Модули Wireguard доступны в последних обновлениях РЕД ОС, поэтому необходимо выполнить обновление. Для этого перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf update
После обновления установите пакеты:
dnf install wireguard-tools -y
Настройка на сервере
Затем потребуется сгенерировать на сервере публичные и закрытые ключи для wireguard:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Будет создано 2 файла - /etc/wireguard/privatekey и /etc/wireguard/publickey.
Назначьте права доступа к файлу приватного (закрытого) ключа:
chmod 600 /etc/wireguard/privatekey
Проверьте название сетевого интерфейса, выполнив команду:
ip a
Название интерфейса будет использовано далее в конфигурационном файле /etc/wireguard/wg0.conf. Создайте его со следующим содержимым:
nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = SdjJ/QjO4IGn1+QCQxkekDzqRgNyEzDokJIg8wylDlk=
Address = 10.0.0.1/24 #Указывается адрес для vpn-сети, может быть изменен по вашему усмотрению
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Нажмите «Ctrl+O» для записи изменений и закрытия редактора.
Выполните команду:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.d/ipv4forwarding.conf sysctl -p
Запустите systemd-демон с wireguard:
systemctl enable wg-quick@wg0.service systemctl start wg-quick@wg0.service systemctl status wg-quick@wg0.service ● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0 Loaded: loaded (/usr/lib/systemd/system/wg-quick@.service; enabled; vendor preset: disabled) Active: active (exited) since Fri 2022-09-09 16:10:07 MSK; 5s 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: 5682 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS) Main PID: 5682 (code=exited, status=0/SUCCESS) CPU: 51ms сен 09 16:10:06 localhost.localdomain systemd[1]: Starting WireGuard via wg-quick(8) for wg0... сен 09 16:10:06 localhost.localdomain wg-quick[5682]: [#] ip link add wg0 type wireguard сен 09 16:10:07 localhost.localdomain wg-quick[5682]: [#] wg setconf wg0 /dev/fd/63 сен 09 16:10:07 localhost.localdomain wg-quick[5682]: [#] ip -4 address add 10.0.0.1/24 dev wg0 сен 09 16:10:07 localhost.localdomain wg-quick[5682]: [#] ip link set mtu 1420 up dev wg0 сен 09 16:10:07 localhost.localdomain wg-quick[5682]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MAS
wg genkey | tee /etc/wireguard/USERNAME_privatekey | wg pubkey | tee /etc/wireguard/USERNAME_publickey
Вместо USERNAME впишите имя пользователя, для которого требуется создать файл.
Далее добавьте в конфигурационный файл wg0.conf секцию клиента:
nano /etc/wireguard/wg0.conf
[Peer]
PublicKey = <USERNAME_publickey>
AllowedIPs = 10.0.0.2/32 #В данном поле указывается разрешенный диапазон IP для клиентов
Вместо <USERNAME_publickey> необходимо вписать содержимое файла /etc/wireguard/USERNAME_publickey.
Затем перезагрузите сервис systemd с wireguard:
systemctl restart wg-quick@wg0 systemctl status wg-quick@wg0
Настройка на клиенте
На клиентской машине создайте текстовый файл с конфигурацией клиента:
nano USERNAME_wb.conf [Interface] PrivateKey = <CLIENT_PRIVATE_KEY> Address = 10.0.0.2/32 DNS = 77.88.8.8 [Peer] PublicKey = <SERVER_PUBKEY> Endpoint = <SERVER_IP>:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 20
Здесь <CLIENT_PRIVATE_KEY> заменяется на приватный ключ клиента, то есть содержимое файла /etc/wireguard/USERNAME_privatekey на сервере; <SERVER_PUBKEY> заменяется на публичный ключ сервера, то есть на содержимое файла /etc/wireguard/publickey на сервере; <SERVER_IP> заменяется на IP сервера.
Затем установите на клиенте пакет wireguard:
dnf install wireguard-tools
Скопируйте созданный конфигурационный файл:
cp <USERNAME>_wb.conf /etc/wireguard/wg0.conf
и активируйте wireguard соединение командой:
wg-quick up wg0
После активации соединения с сервером должно отобразиться примерно следующее:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/32 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] mount `77.88.8.8' /etc/resolv.conf [#] 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 [#] nft -f /dev/fd/63
Деактивировать соединение можно командой:
wg-quick down wg0
После деактивации будет отображено примерно следующее сообщение:
[#] ip -4 rule delete table 51820 [#] ip -4 rule delete table main suppress_prefixlength 0 [#] ip link delete dev wg0 [#] umount /etc/resolv.conf [#] nft -f /dev/fd/63
Дата последнего изменения: 31.03.2023
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.