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

Содержание статьи
Зачем настраивать VPN-ретранслятор?
Допустим, имеются два сервера: сервер A и сервер B.
- Соединение с сервером A отличное. Задержка минимальна, потерь пакетов нет.
- Соединение с сервером B нестабильное: наблюдаются высокая задержка и потеря пакетов.
- Связь между сервером A и сервером B стабильная.
Конечно, вам нужно настроить VPN на сервере A. Но что делать, если требуется, чтобы ваш интернет-трафик выглядел как исходящий с IP-адреса сервера B? В этом случае на помощь приходит VPN-ретранслятор.
Я не стану подробно разбирать каждый этап. Ограничусь основными шагами и важными моментами.
- Создайте собственный сервер 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.
Для активации данного интерфейса 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.
sudo systemctl restart ufw
Теперь трафик VPN от пользователя будет направлен на сервер B. Пользователи VPN будут получать публичный IP-адрес сервера B.

