Почему рукопожатие WireGuard изменяет IP-адреса назначения и источника после активации eth0?

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

Каждый раз, когда я подключаю кабель Ethernet к eth0, кажется, что это изменяет источник и назначение пакетов WireGuard, на которые отвечают. В этой ситуации интерфейс WireGuard не может функционировать.

Моя настройка – Raspberry Pi 5. Raspberry Pi 5 подключен к интернету через wlan0. Все исходящие данные, которые не поступают из локальной сети, отправляются через интерфейс VPN wg1. Это работает корректно. Я помечаю пакеты WireGuard меткой 0x15 на входе, чтобы они возвращались обратно через wlan0 к источнику.

  • wlan0 IP: 192.168.5.160
  • eth0 IP: 192.168.6.1

Ниже представлено нормальное поведение, когда я устанавливаю соединение wg0 снаружи:

pi5 kernel: Входящее соединение:  IN=wlan0 OUT= MAC= SRC=<WANIP> DST=192.168.5.160 LEN=176 TOS=0x00 PREC=0x00 TTL=63 ID=48888 DF PROTO=UDP SPT=44311 DPT=51820 LEN=156 MARK=0x15
pi5 kernel: Исходящее соединение:  IN= OUT=lo SRC=192.168.5.160 DST=WANIP LEN=120 TOS=0x08 PREC=0x80 TTL=64 ID=2721 PROTO=UDP SPT=51820 DPT=44311 LEN=100 MARK=0x15

Теперь ниже показано, что происходит после подключения eth0:

pi5 kernel: Входящее соединение:  IN=wlan0 OUT= MAC= SRC=WANIP DST=192.168.5.160 LEN=176 TOS=0x00 PREC=0x00 TTL=63 ID=56930 DF PROTO=UDP SPT=60019 DPT=51820 LEN=156 MARK=0x15
pi5 kernel: Исходящее соединение:  IN= OUT=lo SRC=192.168.6.1 DST=192.168.5.160 LEN=120 TOS=0x08 PREC=0x80 TTL=64 ID=7723 PROTO=UDP SPT=51820 DPT=60019 LEN=100

Пакет ответа, похоже, использует IP-адрес источника из интерфейса eth0, а назначение установлено на интерфейс wlan0. Также метка потеряна. Если я вытащу кабель eth0, всё снова начнет работать, как и выше. Я немного в замешательстве. Настройка маршрута по умолчанию не изменяется, когда кабель eth0 подключен.

Есть идеи, куда мне стоит посмотреть?

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

Судя по вашему описанию, проблема заключается в изменении маршрутизации и обработке сетевых пакетов после подключения кабеля Ethernet на интерфейсе eth0. Давайте рассмотрим несколько аспектов, которые могут объяснить изменение поведения WireGuard при включении eth0.

1. Изменение маршрутов

Когда вы подключаете интерфейс eth0, система может автоматически добавлять новый маршрут по умолчанию через eth0, если он имеет более низкий метрик (cost). Проверьте маршруты с помощью команды:

ip route

Убедитесь, что маршрут по умолчанию по-прежнему установлен на wlan0. Если это не так, измените метрики маршрутов или удалите ненужные маршруты.

2. Конфликт IP-адресов и подсетей

Убедитесь, что сети интерфейсов wlan0 и eth0 не конфликтуют. Вы упомянули, что wlan0 имеет IP 192.168.5.160, а eth0 — 192.168.6.1. Если другие устройства в сети 192.168.6.0/24 пытаются передавать пакеты на IP-адрес 192.168.5.160, это может привести к путанице.

3. Правила iptables и маркировка пакетов

Ваши правила iptables, возможно, корректно работают только для интерфейса wlan0. Проверьте, не пересекаются ли правила для eth0 и wlan0. Также убедитесь, что маркеры пакетов не теряются в результате изменения маршрутизации. Посмотрите, есть ли правила, которые сбрасывают или игнорируют пакеты с установленной маркировкой:

iptables -t mangle -L -v

4. Параметры WireGuard

Убедитесь, что в конфигурации WireGuard правильно указан ListenPort и что он настроен на обработку входящих соединений по адресу wlan0. Обратите внимание, что WireGuard может использовать только доступные IP-адреса. Проверьте конфигурацию на наличие привязки к неправильному интерфейсу.

5. Логи и диагностика

Понаблюдайте за логами системы и WireGuard при подключении eth0. Возможные ошибки могут указывать на проблемы с разрешением или маршрутизацией:

journalctl -xe | grep wg

Также проверьте, не возникают ли ошибки в системных логах (dmesg), которые помогут вам понять, почему происходит изменение источника/назначения IP.

Заключение

Попробуйте выполнить указанные шаги, чтобы диагностировать и решить проблему. Если проблема сохраняется, подготовьте больше информации о конфигурации маршрутов, правилах iptables и настройках WireGuard. Это поможет более точно определить источник проблемы.

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

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