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 и безопасные доверенные конструкции.

По сравнению с другими протоколами VPN, такими как OpenVPN, IPSec и IKEv2, Wireguard — это новый протокол VPN. Wireguard выпущен в 2015 году Джейсоном А. Доненфельдом в качестве альтернативного протокола VPN. Он был объединен с ядром Linux v5.6 Линусом Торвальдсом в 2020 году и в том же году портирован на FreeBSD 13.

В этом примере стоит задача объединить две локальные сети, в каждой в качестве роутеров установлены сервера Ubuntu 22.04

Головной офис: 192.168.3.0/24
В нем находится терминальный сервер. Необходимо иметь доступ к компьютерам в локальной сети филиала и печатать на сетевые принтеры.

Филиал: 192.168.1.0/24
В филиале находятся сетевые сканеры, которые должны сохранять отсканированные документы на терминальном сервере.

Следующие действия выполняем на обоих серверах WireGuard

1. Устанавливаем Wireguard

apt update
apt install wireguard

cd /etc/wireguard
umask 077

2. Выполним генерацию ключей:

wg genkey > privatekey
wg pubkey < privatekey > publickey
umask 022

В результате у нас есть пара ключей – приватный и публичный – на каждом сервере.

Просмореть ключи можно командами:

cat /etc/wireguard/privatekey
cat /etc/wireguard/publickey

Предположим, что в головном офисе:
приватный ключ: gYunpXqy/JBx6JeGEJpP8SWNHZznPb9bPEm2L7CqCna=
публичный ключ: BbET67XhqcBANKFV4Ffm6o4a8UfrbmSexaWuT7WqYeD=

Удаленный офис:
приватный ключ:YgV2CYbyLUMQ+cBYKfAviniqXc72dSqqeoyE6BsbRnu=
публичный ключ: HrYYLk3zKYhcBLmZRZBZh6N2k7j/Fpz9j5NojMHTXmh=

3. Настройка сервера Wireguard в головном офисе

Address – сетевой интерфейс для Wireguard
SaveConfig – позволяет автоматически сохранять изменения в конфигурационный файл при управлении службой через CLI
Privatekey – приватный ключ в головном офисе
Publickey – публичный ключ в филиале

nano /etc/wireguard/wg0.conf

[Interface]
Address = 10.10.8.1/24
SaveConfig = true
ListenPort = 53822
Privatekey = gYunpXqy/JBx6JeGEJpP8SWNHZznPb9bPEm2L7CqCna=

[Peer]
Publickey = HrYYLk3zKYhcBLmZRZBZh6N2k7j/Fpz9j5NojMHTXmh=
AllowedIPs = 10.10.8.0/24, 192.168.1.0/24

Чтобы принимать входящие соединения по порту 53822:

iptables -A INPUT -p udp --dport 53822 -j ACCEPT

4. Настройка сервера Wireguard в удаленном офисе

Address – сетевой интерфейс для Wireguard
SaveConfig – позволяет автоматически сохранять изменения в конфигурационный файл при управлении службой через CLI
Endpoint – адрес удаленного сервера в сети Интернет, к которому будем подключатся
Privatekey – приватный ключ в филиале
Publickey – публичный ключ в головном офисе
Endpoint – ip-адрес и порт подключения сервера в головном офисе
PersistentKeepalive – Периодичность попыток проверки доступности удаленной стороны соединения. Параметр, необходимый для стабильной работы канала.

nano /etc/wireguard/wg0.conf

[Interface]
Address = 10.10.8.101/24
SaveConfig = true
Privatekey = YgV2CYbyLUMQ+cBYKfAviniqXc72dSqqeoyE6BsbRnu=

[Peer]
Publickey = BbET67XhqcBANKFV4Ffm6o4a8UfrbmSexaWuT7WqYeD=
Endpoint = xxx.xxx.xxx.xxx:53822
AllowedIPs = 10.10.8.0/24, 192.168.3.0/24
PersistentKeepalive = 25

5. Завершение настройки в головном офисе.

В раздел [Interface]

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE

где enp1s0 – имя сетевого интерфейса, смотрящего в локальную сеть

6. Включаем и запускаем службу WireGuard

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

sudo systemctl enable wg-quick@wg0

Запустим службу, выполните:
sudo systemctl start wg-quick@wg0

Проверим статус службы

sudo systemctl status wg-quick@wg0

Проверим, что интерфейс с именем wg0 запущен и работает на сервере Ubuntu с помощью команды :

sudo wg
sudo ip a show wg0
Объединение двух локальных сетей через WireGuard

Одна мысль о “Объединение двух локальных сетей через WireGuard

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

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