WireGuard — это бесплатное программное приложение с открытым исходным кодом и протокол связи, который реализует методы виртуальной частной сети для создания безопасных соединений «точка-точка» в маршрутизируемых или мостовых конфигурациях.
1. Настройка соединения P-T-P.
1.1. Настраиваем сначала соединение типа Point-to-Point.
2. Настройка главного сервера.
2.1. Включаем Forwarding:
# echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.d/99-sysctl.conf # echo "net.ipv4.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf # echo "net.ipv6.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf # sysctl -p
2.2. Добавим подмену ip адреса:
# firewall-cmd --permanent --zone=public --add-masquerade # firewall-cmd --reload
2.3. Добавляем в файл конфигурации /etc/wireguard/wg0.conf в параметр AllowIPs подсеть со стороны второго сервера. Например второй сервер связан с подсетью 172.16.0.0/24. Тогда запись будет следующая:
AllowedIPs = 172.16.30.2/32, 172.16.0.0/24
2.4. И в конечном итоге он получается такой:
# nano /etc/wireguard/wg0.conf [Interface] Address = 172.16.30.1/24 # Отключаем перезапись конфига клиентом SaveConfig = false ListenPort = 41321 # Private Key основного сервера PrivateKey = SMWUid073s000000000tvGgeN/Ow4BX9gsLqXFY= [Peer] # Public Key второго узла PublicKey = vQyGpGrx00000000000000000cTieq/yIJJ3Y= AllowedIPs = 172.16.30.2/32, 172.16.0.0/24
2.5. Запускаем наш интерфейс:
# wg-quick up wg0
2.6. Смотрим настройки интерфейса:
# wg show wg0 interface: wg0 public key: RAalpQD0000Z7fP5L000000000006ugguVupB8ig= private key: (hidden) listening port: 41321
2.7. Проверяем, появился ли интерфейс, и доступен ли порт:
# ip a # ss -nltup
3. Настройка второстепенного сервера.
3.1. Установка производится аналогичным образом.
3.2. Включаем Forwarding:
# echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.d/99-sysctl.conf # echo "net.ipv4.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf # echo "net.ipv6.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf # sysctl -p
3.3. Добавим подмену ip адреса:
# firewall-cmd --permanent --zone=public --add-masquerade # firewall-cmd --reload
3.4. И так же добавляем в пире в параметр AllowIPs подсеть со стороны основного сервера. Например основной сервер связан с подсетью 172.16.5.0/24. Тогда запись будет следующая:
AllowedIPs = 172.16.30.2/32, 172.16.5.0/24
3.5. И в конечном итоге он получается такой:
# nano /etc/wireguard/wg0.conf [Interface] Address = 172.16.30.2/24 SaveConfig = true ListenPort = 41321 # Private Key второго узла PrivateKey = SNtUeP3cn7Y26zy0000Z00000000Di4MC1nl8AoR28= [Peer] # Public Key основного сервера PublicKey = RAalpQDMWkMZ7f0000sz00000000000gguVupB8ig= AllowedIPs = 172.16.30.1/32, 172.16.5.0/24 # Внешний IP основного сервера Endpoint = 93.78.115.123:41321
3.6. Запускаем наш интерфейс командой управления wireguard:
# wg-quick up wg0
3.7. Далее проверяем канал с первого сервера:
# ping 172.16.30.2 -c 3
3.8. Поднимаем интерфейс на втором сервере:
# ping 172.16.30.1 -c 3
3.9. И проверяем маршрутизацию пропинговав любой адрес с противоположной стороны. Если пинги идут, то останется только настроить маршруты на основных роутерах в подсетях 172.16.0.0/24 и 172.16.5.0/24 указав в качестве шлюзов ip адреса данных серверов (в каждой подсети свой шлюз), чтобы все устройства могли видеть остальных.