Как исправить маршрутизацию для Wireguard VPN Gateway

Вопрос или проблема

Я в отчаянии пытаюсь настроить мой Wireguard-VPN, так как моё интернет-соединение было переключено на IPV6 (DS-lite).

Моя настройка (сырые данные):

  • NetCup VPS (выступает в качестве контактной точки IPv4 для моих мобильных устройств из Интернета)
  • Внутренний сервер Wireguard (выступает в качестве шлюза между внутренней и внешней сетью)
  • Iphone с установленным клиентом Wireguard, подключённый только через мобильную сеть

Текущий статус:

  • VPN-туннель работает между VPS и внутренним сервером Wireguard, а также между VPS и мобильным клиентом
  • VPS (VPN-адрес 192.168.1.10) может пинговать обоих точек (192.168.1.1 и 192.168.1.15)
  • Внутренний сервер Wireguard (192.168.1.1) может пинговать VPS (192.168.1.10), но не может достучаться до мобильного клиента (192.168.1.15) –> ICMP: Хост назначения недоступен.
  • tcpdump на сервере VPS не показывает никаких ICMP-запросов, поступающих от моего внутреннего сервера Wireguard, когда пытаюсь пинговать 192.168.1.15
  • Мобильный клиент (192.168.1.15) может пинговать VPS (192.168.1.10) через VPN-туннель, но не может достучаться до внутреннего сервера Wireguard (192.168.1.1)

Мне кажется, что это проблема маршрутизации на внутреннем шлюз-сервере. Маршруты установлены с помощью wg-quick следующим образом:

default via 192.168.2.1 dev enp0s10 proto static metric 100
169.254.0.0/16 dev enp0s10 scope link metric 1000
192.168.1.0/24 dev wg0 proto kernel scope link src 192.168.1.1
192.168.2.0/24 dev enp0s10 proto kernel scope link src 192.168.2.2 metric 100

IP-перенаправление активно.

Есть идеи, что я мог упустить?

Любая помощь будет высоко оценена!

Это решение изначально было опубликовано как исправление в вопросе. Опубликовано здесь (с грамматическими исправлениями) как ответ сообщества, поскольку оригинальный автор сам этого не сделал.


После ещё нескольких часов поисков я наконец нашёл решение, которое сработало для меня.

Неудачное ICMP-сообщение ping (192.168.1.1 к 192.168.1.15) дало ключевую подсказку для нахождения решения. Кроме указания, что целевой адрес недоступен, оно также говорило:

sendmsg: требуется адрес назначения

Это сообщение было выдано Wireguard.

Недостаток определения конечной точки для парных записей, сделанных для двух VPN-клиентов в их соответствующих wg0.conf файлах, и стал источником этой ошибки.

Решение:

  1. Удалил определения пиров для клиентов, изначально предназначенных для непосредственного общения друг с другом. Они не работают, потому что прямые конечные точки между VPN-клиентами не определены. Именно оттуда пришло ICMP-сообщение.

  2. Добавил конкретные адреса пиров в оставшуюся часть определения пиров, указывая на сервер Wireguard, 192.168.1.10/32 для самого сервера и 192.168.1.15/32 для клиента (и наоборот для другого клиента).

  3. Добавил правило брандмауэра в цепочку FORWARD, которое позволяет пересылку пакетов между wg0 как входящим и исходящим устройством. В первом случае я создал специальные правила трафика между внутренним интерфейсом и VPN-интерфейсом (в обоих направлениях). Я не уверен, что это действительно оказало влияние.

Ответ или решение

Решение проблемы маршрутизации для VPN-шлюза Wireguard

Настройка VPN с использованием Wireguard может быть сложной задачей, особенно в условиях перехода на IPv6 и использования технологии DS-lite. Ваша ситуация, связанная с проблемами маршрутизации между различными узлами, требует внимательного анализа конфигурации и настройки. Давайте рассмотрим основные шаги, необходимые для решения возникшей проблемы.

1. Понять текущую конфигурацию сети

Первое, что нужно сделать — это убедиться, что вы правильно понимаете взаимодействие между всеми элементами вашей сети:

  • NetCup VPS — это точка контакта по IPv4 для вашего мобильного устройства.
  • Внутренний сервер Wireguard — это шлюз между внутренней и внешней сетями.
  • Мобильный клиент (iPhone) подключен через сотовую сеть только.

Ваша текущая конфигурация указывает, что VPN-туннель установлен, и оба пира (VPS и Внутренний сервер) могут видеть друг друга. Но возникают проблемы с пингом между Внутренним сервером и Мобильным клиентом.

2. Анализ проблемы маршрутизации

Сообщение об ошибке ICMP: Destination Host unreachable указывает на то, что внутренний сервер Wireguard не может маршрутизировать пакеты к мобильному клиенту. В данном случае ключевым моментом является сообщение, полученное от Wireguard:

sendmsg: Destination Address required

Это говорит о том, что ваш внутренний сервер Wireguard не знает, куда отправлять пакеты на клиент. Давайте разберем основные шаги, которые вам понадобятся для исправления этой проблемы.

3. Шаги по устранению неполадок

  1. Удалите клиентские определения пиров, предполагающие прямое соединение. Такие определения не работают, так как в настройках не указаны прямые конечные точки между клиентами. Это и стало причиной сообщения ICMP.

  2. Добавьте конкретные IP-адреса в оставшиеся определения пиров. В файле wg0.conf для каждого клиента укажите:

    • Для сервера (VPS) используйте 192.168.1.10/32
    • Для мобильного клиента — 192.168.1.15/32, и наоборот для других пир-определений.
  3. Настройте правила брандмауэра. Добавьте правило в цепь FORWARD, которое разрешает пересылку пакетов между интерфейсами wg0. Создайте специфические правила для трафика между внутренним и VPN-интерфейсом в обоих направлениях, чтобы гарантировать корректную маршрутизацию.

4. Проверка

После внесения всех изменений потребуется выполнить проверку сетевого соединения и маршрутизации:

  • Пинг: Проверьте возможность пинга с Внутреннего сервера к Мобильному клиенту (и наоборот).
  • Трассировка маршрута: Используйте команду traceroute, чтобы увидеть путь пакетов.

5. Заключение

Правильная настройка маршрутизации для Wireguard VPN-шлюза важна для обеспечения надежного соединения. Убедитесь, что каждое отдельное звено в вашей конфигурации правильно скорректировано, и следуйте рекомендованным шагам для устранения проблем. Если после выполнения всех рекомендаций проблема все еще существует, рассмотрите возможность использования инструментов диагностики, таких как tcpdump, для более глубокого анализа сетевого трафика.

Это руководство позволит вам решить проблемы маршрутизации и обеспечить работу вашего Wireguard VPN в условиях перехода на IPv6.

Оцените материал
Добавить комментарий

Капча загружается...