Как выполнить настройку VPN-моста с использованием WireGuard

В этом кратком руководстве вы узнаете, как настроить VPN-мост между двумя серверами, чтобы пользователи, подключающиеся к VPN на сервере A, получали публичный IP-адрес сервера B.

Как настроить релейный сервер WireGuard VPN

Зачем настраивать VPN-ретранслятор?

Допустим, имеются два сервера: сервер A и сервер B.

  • Соединение с сервером A отличное. Задержка минимальна, потерь пакетов нет.
  • Соединение с сервером B нестабильное: наблюдаются высокая задержка и потеря пакетов.
  • Связь между сервером A и сервером B стабильная.

Конечно, вам нужно настроить VPN на сервере A. Но что делать, если требуется, чтобы ваш интернет-трафик выглядел как исходящий с IP-адреса сервера B? В этом случае на помощь приходит VPN-ретранслятор.

Читайте также:  Лучшие дистрибутивы Linux для программирования и советы по выбору

Я не стану подробно разбирать каждый этап. Ограничусь основными шагами и важными моментами.

  • Создайте собственный сервер WireGuard VPN на Ubuntu версий 22.04, 20.04 или 18.04.

Конфигурация WireGuard VPN между сервером A и сервером B

  • Сервер A функционирует как клиент VPN.
  • Сервер B функционирует как VPN-сервер.

Вы можете воспользоваться учебником, упомянутым в первом шаге. Однако есть одно исключение: необходимо создать новый файл конфигурации WireGuard на сервере A. На этом сервере будет два файла конфигурации WireGuard: один для подключения к клиентским устройствам, а другой — для соединения с сервером B (vpn-relay.conf).

sudo nano /etc/wireguard/vpn-relay.conf

Включите следующие строки. Необходимо при необходимости обновить закрытые и открытые ключи. Кроме того, замените 12.34.56.78 на внешний IP-адрес сервера B.

[Interface] Address = 10.10.10.200/32 PrivateKey = 7UKv5aEX2pVRA4Ncig81fSflaSSFRcoJOm75T9Ia4yM= #Маршрутизация по политике. Обязательно исключите порт 22. Table = 1234 PostUp = ip rule add dport 25-20480 table 1234; PreDown = ip rule delete dport 25-20480 table 1234; [Peer] #Сервер B PublicKey = ahUcxMSfNRYI0Kf9VFtVDB9TWoxX5cxi4thqHmz1NRI= AllowedIPs = 0.0.0.0/0 Endpoint = 12.34.56.78:51820 PersistentKeepalive = 25

В описанной конфигурации была применена маршрутизация на основе политик, благодаря чему основной объем трафика с сервера A будет направляться на сервер B, за исключением трафика SSH. Необходимо исключить порт SSH, чтобы обеспечить возможность подключения к серверу A по SSH.

Читайте также:  Десять самых популярных серверных дистрибутивов Linux и советы по их выбору для ваших нужд

Для активации данного интерфейса WireGuard выполните

sudo systemctl restart wg-quick@vpn-relay

После выполнения этого этапа выполните следующую команду на сервере A для проверки публичного IP-адреса.

curl -4 https://icanhazip.com

При корректной настройке WireGuard в результате выполнения команды вы должны наблюдать публичный IP-адрес сервера B.

Конфигурация брандмауэра для установления их соединения

Теперь необходимо сконфигурировать брандмауэр на сервере A для перенаправления трафика от VPN-клиентов на сервер B.

Откройте файл настроек UFW.

sudo nano /etc/ufw/before.rules

Скорее всего, в конце этого документа у вас уже есть следующие строки.

# Правила таблицы NAT *nat :POSTROUTING ACCEPT [0:0] - A POSTROUTING - s 10.10.10.0/24 - o enp3s0 - j MASQUERADE # Закончите каждую таблицу строкой 'COMMIT', иначе эти правила не будут обработаны COMMIT

# Правила таблицы NAT *nat :POSTROUTING ACCEPT [0:0] - A POSTROUTING - s 10.10.10.0/24 - d 0.0.0.0/0 - o vpn-relay - j MASQUERADE # Закончите каждую таблицу строкой 'COMMIT', иначе эти правила не будут обработаны COMMIT

Сохраните изменения в файле и закройте его. После этого перезапустите UFW.

Читайте также:  Конфигурация аутентификации через сертификаты на VPN-сервере OpenConnect (ocserv)

sudo systemctl restart ufw

Теперь трафик VPN от пользователя будет направлен на сервер B. Пользователи VPN будут получать публичный IP-адрес сервера B.