Как настроить перенаправление трафика Wireguard через промежуточный сервер?

В степях славного Казахстана расположена выдающаяся сеть, защищенная Wireguard. В Москве есть клиент на Windows 11, который успешно подключается к этой сети, и всё работает корректно. Однако, по каким-то причинам, в процессе передачи данных теряется множество пакетов, что значительно замедляет связь. В то же время, есть VPS, с которой установлено, что связь с Казахстаном и Москвой осуществляется без проблем. Поэтому возникла идея перенаправить трафик клиента через эту VPS.

Я пробовал следующую конфигурацию: 
<code>stone -n -d -d -d 1.2.3.4:51820/udp 51820/udp</code> 
и также использовал такой подход:
<pre><code>/sbin/iptables -t nat -A PREROUTING -i eth0 -p udp --dport 51280 -j DNAT --to-destination 1.2.3.4:51820</code></pre> 

Но, к сожалению, это не сработало! По данным tcpdump на VPS, пакеты приходят и уходят, однако Казахстан не видит ни одного пакета. Стоит отметить, что соединение Wireguard, инициированное непосредственно с VPS, функционирует отлично, значит, проблемы с блокировками нет. Я уже включил ip forwarding и проверил настройки ufw. Все системы работают на Debian 12, за исключением клиента на Windows 11. 

Что же мне делать?
  • 29 октября 2024 г. 19:32
Ответы на вопрос 2
Настройка перенаправления трафика WireGuard через промежуточный сервер (VPS) требует определенной настройки маршрутизации и правил NAT. Попробуем пройти через необходимые шаги, чтобы правильно настроить ваш сценарий.

1. **Убедитесь, что IP Forwarding включен на VPS:**

   Для проверки выполните команду:
   ```bash
   sysctl net.ipv4.ip_forward
   ```
   Если результат равен `0`, включите его:
   ```bash
   echo 1 > /proc/sys/net/ipv4/ip_forward
   ```
   Для того чтобы изменить это значение на постоянной основе, добавьте или измените следующую строку в файле `/etc/sysctl.conf`:
   ```
   net.ipv4.ip_forward=1
   ```
   Затем примените изменения:
   ```bash
   sysctl -p
   ```

2. **Настройка iptables на VPS:**

   Вам нужно настроить правила iptables на VPS для обработки NAT и маршрутизации входящего и исходящего трафика.

   Примените следующие команды, чтобы настроить NAT:
   ```bash
   # Замените "eth0" на интерфейс, подключенный к интернету (может быть "ens3", "eth1" и т. д.)
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   iptables -A FORWARD -i wg0 -j ACCEPT   # wg0 - это интерфейс WireGuard, измените на ваш
   iptables -A FORWARD -o wg0 -j ACCEPT
   ```

3. **Конфигурация клиента WireGuard:**

   На клиенте WireGuard вам нужно добавить в конфигурацию следующую строку для перенаправления трафика через VPS. Она должна выглядеть что-то вроде:
   ```
   [Interface]
   PrivateKey = <Ваш закрытый ключ>
   Address = 10.0.0.2/24    # Пример адреса на VPN-сети

   [Peer]
   PublicKey = <Публичный ключ сервера>
   Endpoint = <IP вашего VPS>:51820
   AllowedIPs = 0.0.0.0/0   # Для перенаправления всего трафика через этот туннель
   PersistentKeepalive = 25
   ```

4. **Настройка конфигурации WireGuard на VPS:**

   Убедитесь, что на VPS вы также настроили соответствующий конфигурационный файл WireGuard и что он настроен для приема трафика от клиента. Примерная конфигурация может выглядеть так:
   ```
   [Interface]
   PrivateKey = <Ваш закрытый ключ>
   Address = 10.0.0.1/24    # Пример адреса на VPN-сети

   [Peer]
   PublicKey = <Публичный ключ клиента>
   AllowedIPs = 10.0.0.2/32  # IP клиента
   ```

5. **Проверка соединения:**

   Проверьте подключение клиента к VPS. Используйте команды `wg` на обоих серверах, чтобы убедиться, что соединение установлено и передачи данных происходят.

6. **Тестирование:**

   После завершения всех настроек протестируйте соединение. Попробуйте выполнить пинг с клиента на ресурсы в Казахстане через VPS и проверьте, работает ли DNS, если у вас есть такая необходимость.

Если все еще возникают проблемы, пожалуйста, проверьте, без каких-либо блокировок или фильтрации трафика на уровне сети. Также рекомендуется выполнить `tcpdump` на VPS и клиенте, чтобы уточнить, куда именно трафик теряется.
iptables -t nat -A PREROUTING -p udp --dport 720 -i eth0 -j DNAT --to 5.196.211.5:720

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Плюс NAT в ядре. всё
ну и фаервол если зачем то он есть
Похожие вопросы