Вопрос или проблема
У меня есть два хоста в разных 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
).
Предпосылки для настройки
- На обоих хостах выставлен параметр
net.ipv4.ip_forward = 1
, что позволяет пересылать IPv4 пакеты между интерфейсами. - На каждом хосте настроены соответствующие команды в
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
, но не получаются необходимые ответы.
Рекомендации по устранению неполадок
-
Проверка конфигурации VXLAN:
- Убедитесь, что идентификатор VXLAN (
id 42
) совпадает на обоих хостах. Для установления мостовой связи это критично. - Убедитесь, что адреса
local
иremote
указаны правильно и соответствуют WireGuard IP-адресам.
- Убедитесь, что идентификатор VXLAN (
-
Проверка соединения между хостами:
- Используйте
tcpdump
для мониторинга трафика на интерфейсе WireGuard (например,sudo tcpdump -i wg0
). Убедитесь, что пакеты действительно проходят через туннель. - Проверьте наличие правил iptables, которые могут блокировать трафик.
- Используйте
-
Бриджи и VXLAN:
- Убедитесь, что оба мостовых интерфейса (
bridge0
) действительно активны и настроены правильно. Выполните командуbrctl show
и убедитесь, чтоvxlan0
присутствует вbridge0
.
- Убедитесь, что оба мостовых интерфейса (
-
Проблемы с ARP:
- Если ARP не работает, это может быть следствием конфигурации сети или проблем с forwarding. Попробуйте использовать
arping
для установки статического ARP для целевых IP адресов.
- Если ARP не работает, это может быть следствием конфигурации сети или проблем с forwarding. Попробуйте использовать
-
Логирование и отладка:
- Используйте логи WireGuard на обоих хостах для выявления возможных ошибок
[sudo wg show]
. - Просмотрите системные журналы (
journalctl -xe
), они могут содержать подсказки о том, что идет не так.
- Используйте логи WireGuard на обоих хостах для выявления возможных ошибок
Заключение
Установка VXLAN через туннель WireGuard может быть сложной задачей, но следуя описанным выше шагам и предложениям, вы сможете успешно создать L2-overlay-сеть. Убедитесь, что на всех уровнях (программном и аппаратном) все параметры установлены и что нет блокировок на уровне сети. Удачи в настройке! Если вы столкнетесь с дополнительными трудностями, не стесняйтесь задавать вопросы или искать помощь в специализированных IT-сообществах.