VXLAN через туннель Wireguard

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

У меня есть два хоста в разных IP-сетях, которые соединены через Wireguard. Оба этих хоста могут пинговать друг друга.
IP Wireguard первого хоста: 10.8.0.2
IP Wireguard второго хоста: 10.8.0.4

Я хочу настроить наложение VXLAN через эту настройку Wireguard. Для этого я добавил команды настройки VXLAN в файл wg0.conf на обоих хостах.

На 10.8.0.2 (IP VXLAN: 10.8.1.2)

PostUp = ip link add name bridge0 type bridge
PostUp = ip link set bridge0 up
PostUp = ip link add vxlan0 type vxlan id 42 local  10.8.0.2 remote 10.8.0.4 dev wg0 dstport 4789
PostUp = ip addr add 10.8.1.2/24 dev vxlan0
PostUp = ip link set vxlan0 up
PostUp = ip link set vxlan0 master bridge0
PostDown = ip link set vxlan0 nomaster
PostDown = ip link delete vxlan0
PostDown = ip link delete bridge0 

На 10.8.0.4 (IP VXLAN: 10.8.1.4)

PostUp = ip link add name bridge0 type bridge
PostUp = ip link set bridge0 up
PostUp = ip link add vxlan0 type vxlan id 42 local 10.8.0.4 remote 10.8.0.2 dev wg0 dstport 4789
PostUp = ip addr add 10.8.1.4/24 dev vxlan0
PostUp = ip link set vxlan0 up
PostUp = ip link set vxlan0 master bridge0
PostDown = ip link set vxlan0 nomaster
PostDown = ip link delete vxlan0
PostDown = ip link delete bridge0

На обоих хостах net.ipv4.ip_forward = 1

На 10.8.0.4
Когда я пингую 10.8.1.2, возникает ошибка

ping 10.8.1.2
PING 10.8.1.2 (10.8.1.2) 56(84) bytes of data.
From 10.8.1.4 icmp_seq=1 Destination Host Unreachable
From 10.8.1.4 icmp_seq=2 Destination Host Unreachable
From 10.8.1.4 icmp_seq=3 Destination Host Unreachable
^C
--- 10.8.1.2 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4073ms
pipe 4

Tcpdump показывает запросы

sudo tcpdump -i vxlan0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on vxlan0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
11:44:01.236081 ARP, Request who-has 10.8.1.2 tell 10.8.1.4, length 28
11:44:02.255832 ARP, Request who-has 10.8.1.2 tell 10.8.1.4, length 28
11:44:03.279999 ARP, Request who-has 10.8.1.2 tell 10.8.1.4, length 28
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel

ИЗМЕНЕНИЕ:

brctl show bridge0
bridge name     bridge id               STP enabled     interfaces
bridge0         8000.12cd00736e5c       no              vxlan0

На 10.8.0.2
ping 10.8.1.4 тоже не работает, но интересно, что запросы и ответы также присутствуют

ping 10.8.1.4
PING 10.8.1.4 (10.8.1.4) 56(84) bytes of data.
^C
--- 10.8.1.4 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2077ms
sudo tcpdump -i vxlan0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on vxlan0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
15:16:33.461571 ARP, Request who-has 10.8.1.4 tell XPS-13-9360, length 28
15:16:33.512632 ARP, Reply 10.8.1.4 is-at 12:cd:00:73:6e:5c (oui Unknown), length 28
15:16:34.513291 ARP, Request who-has 10.8.1.4 tell XPS-13-9360, length 28
15:16:34.805377 ARP, Reply 10.8.1.4 is-at 12:cd:00:73:6e:5c (oui Unknown), length 28
15:16:35.538017 ARP, Request who-has 10.8.1.4 tell XPS-13-9360, length 28
15:16:35.829203 ARP, Reply 10.8.1.4 is-at 12:cd:00:73:6e:5c (oui Unknown), length 28
15:16:49.346396 IP6 fe80::10cd:ff:fe73:6e5c > ip6-allrouters: ICMP6, router solicitation, length 16
^C
7 packets captured
7 packets received by filter
0 packets dropped by kernel 

ИЗМЕНЕНИЕ:

brctl show bridge0
bridge name bridge id       STP enabled interfaces
bridge0     8000.faa20a14f62a   no      vxlan0

Моя конечная цель – иметь возможность достигать устройства уровня 2 в обеих сетях с этих хостов.

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

VXLAN через туннель WireGuard: Подробное руководство по построению L2-сети

Ваша задача заключается в создании L2-overlay с использованием VXLAN (Virtual Extensible LAN) через туннель WireGuard между двумя хостами в разных IP-сетях. Давайте разберем шаги, которые необходимо предпринять для успешной настройки этой конфигурации, а также некоторые потенциальные проблемы и их решения.

Обзор текущей настройки

Вы имеете два хоста с следующими конфигурациями WireGuard:

  • Хост 1 (10.8.0.2): Виртуальный IP для VXLAN: 10.8.1.2
  • Хост 2 (10.8.0.4): Виртуальный IP для VXLAN: 10.8.1.4

Каждый хост имеет собственный wg0.conf, в котором вы настроили VXLAN интерфейсы и мосты (bridge0).

Предпосылки для настройки

  1. На обоих хостах выставлен параметр net.ipv4.ip_forward = 1, что позволяет пересылать IPv4 пакеты между интерфейсами.
  2. На каждом хосте настроены соответствующие команды в PostUp и PostDown для создания и удаления мостов и VXLAN интерфейсов.

Проблема с пингом (Destination Host Unreachable)

Согласно описанию вашей проблемы, при попытке пинга – ping 10.8.1.2 с хоста 10.8.0.4 и ping 10.8.1.4 с хоста 10.8.0.2 пакетики теряются. Рассмотрим основные наблюдения:

  • На хосте 10.8.0.4 не принимаются ARP-ответы на запросы к 10.8.1.2.
  • На хосте 10.8.0.2 фиксируются ARP-запросы к 10.8.1.4, но не получаются необходимые ответы.

Рекомендации по устранению неполадок

  1. Проверка конфигурации VXLAN:

    • Убедитесь, что идентификатор VXLAN (id 42) совпадает на обоих хостах. Для установления мостовой связи это критично.
    • Убедитесь, что адреса local и remote указаны правильно и соответствуют WireGuard IP-адресам.
  2. Проверка соединения между хостами:

    • Используйте tcpdump для мониторинга трафика на интерфейсе WireGuard (например, sudo tcpdump -i wg0). Убедитесь, что пакеты действительно проходят через туннель.
    • Проверьте наличие правил iptables, которые могут блокировать трафик.
  3. Бриджи и VXLAN:

    • Убедитесь, что оба мостовых интерфейса (bridge0) действительно активны и настроены правильно. Выполните команду brctl show и убедитесь, что vxlan0 присутствует в bridge0.
  4. Проблемы с ARP:

    • Если ARP не работает, это может быть следствием конфигурации сети или проблем с forwarding. Попробуйте использовать arping для установки статического ARP для целевых IP адресов.
  5. Логирование и отладка:

    • Используйте логи WireGuard на обоих хостах для выявления возможных ошибок [sudo wg show].
    • Просмотрите системные журналы (journalctl -xe), они могут содержать подсказки о том, что идет не так.

Заключение

Установка VXLAN через туннель WireGuard может быть сложной задачей, но следуя описанным выше шагам и предложениям, вы сможете успешно создать L2-overlay-сеть. Убедитесь, что на всех уровнях (программном и аппаратном) все параметры установлены и что нет блокировок на уровне сети. Удачи в настройке! Если вы столкнетесь с дополнительными трудностями, не стесняйтесь задавать вопросы или искать помощь в специализированных IT-сообществах.

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

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