Вопрос или проблема
Я в отчаянии пытаюсь настроить мой 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
файлах, и стал источником этой ошибки.
Решение:
-
Удалил определения пиров для клиентов, изначально предназначенных для непосредственного общения друг с другом. Они не работают, потому что прямые конечные точки между VPN-клиентами не определены. Именно оттуда пришло ICMP-сообщение.
-
Добавил конкретные адреса пиров в оставшуюся часть определения пиров, указывая на сервер Wireguard,
192.168.1.10/32
для самого сервера и192.168.1.15/32
для клиента (и наоборот для другого клиента). -
Добавил правило брандмауэра в цепочку
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. Шаги по устранению неполадок
-
Удалите клиентские определения пиров, предполагающие прямое соединение. Такие определения не работают, так как в настройках не указаны прямые конечные точки между клиентами. Это и стало причиной сообщения ICMP.
-
Добавьте конкретные IP-адреса в оставшиеся определения пиров. В файле
wg0.conf
для каждого клиента укажите:- Для сервера (VPS) используйте
192.168.1.10/32
- Для мобильного клиента —
192.168.1.15/32
, и наоборот для других пир-определений.
- Для сервера (VPS) используйте
-
Настройте правила брандмауэра. Добавьте правило в цепь
FORWARD
, которое разрешает пересылку пакетов между интерфейсамиwg0
. Создайте специфические правила для трафика между внутренним и VPN-интерфейсом в обоих направлениях, чтобы гарантировать корректную маршрутизацию.
4. Проверка
После внесения всех изменений потребуется выполнить проверку сетевого соединения и маршрутизации:
- Пинг: Проверьте возможность пинга с Внутреннего сервера к Мобильному клиенту (и наоборот).
- Трассировка маршрута: Используйте команду
traceroute
, чтобы увидеть путь пакетов.
5. Заключение
Правильная настройка маршрутизации для Wireguard VPN-шлюза важна для обеспечения надежного соединения. Убедитесь, что каждое отдельное звено в вашей конфигурации правильно скорректировано, и следуйте рекомендованным шагам для устранения проблем. Если после выполнения всех рекомендаций проблема все еще существует, рассмотрите возможность использования инструментов диагностики, таких как tcpdump
, для более глубокого анализа сетевого трафика.
Это руководство позволит вам решить проблемы маршрутизации и обеспечить работу вашего Wireguard VPN в условиях перехода на IPv6.