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 появился в RouterOS с 7 версии. Рекомендую попробовать!