Вопрос или проблема
Я пытаюсь расширить сетевой уровень 2 (Vlan) через сетевой уровень 3, используя туннели vxlan … я создал лабораторию, где у меня есть две виртуальные машины,
- Я создал туннель vxlan между двумя основными интерфейсами виртуальных машин
- Я создал 2 подинтерфейса vlan под вторым интерфейсом для каждой машины
- Я связал каждый подинтерфейс vlan с подинтерфейсом vxlan в отдельных мостах для каждой машины
- Я назначил IP-адрес для каждого моста (10.1.100.1/24, 10.1.100.2/24, 10.1.100.3/24, 10.1.100.4/24)
===> теперь, когда я пытаюсь выполнить ping с одного моста на другой (в одном и том же теге vlan), это не работает
[root@Asguard ~]# ping 192.168.100.1 -I 192.168.100.3
PING 192.168.100.1 (192.168.100.1) from 192.168.100.3 : 56(84) bytes of data.
From 192.168.100.3 icmp_seq=10 Destination Host Unreachable
ping: sendmsg: No route to host
From 192.168.100.3 icmp_seq=11 Destination Host Unreachable
From 192.168.100.3 icmp_seq=12 Destination Host Unreachable
From 192.168.100.3 icmp_seq=14 Destination Host Unreachable
From 192.168.100.3 icmp_seq=15 Destination Host Unreachable
From 192.168.100.3 icmp_seq=16 Destination Host Unreachable
From 192.168.100.3 icmp_seq=17 Destination Host Unreachable
это скрипт, который я запускаю на каждой виртуальной машине
VM1 :
#!/bin/bash
# Настройка моста и интерфейсов
ip link add br10 type bridge
ip link add br20 type bridge
ip link set br10 up
ip link set br20 up
# VLAN 10 на мосту br10
ip link add link enp0s9 name enp0s9.10 type vlan id 10
ip link set enp0s9.10 master br10
ip link set enp0s9.10 up
# VLAN 20 на мосту br20
ip link add link enp0s9 name enp0s9.20 type vlan id 20
ip link set enp0s9.20 master br20
ip link set enp0s9.20 up
# VXLAN на обоих мостах
ip link set vxlan1000 master br10
ip link set vxlan1000 up
#ip link add vxlan1000_2 type vxlan id 1000 dev enp0s3 remote 10.1.25.235 dstport 4789
ip link set vxlan1000 master br20
ip link set vxlan1000 up
ip addr add 192.168.100.1/24 dev br10
ip addr add 192.168.100.2/24 dev br20
VM2
#!/bin/bash
# Настройка моста и интерфейсов
ip link add br11 type bridge
ip link add br22 type bridge
ip link set br11 up
ip link set br22 up
# VLAN 10 на мосту br11
ip link add link enp0s8 name enp0s8.10 type vlan id 10
ip link set enp0s8.10 master br11
ip link set enp0s8.10 up
# VLAN 20 на мосту br22
ip link add link enp0s8 name enp0s8.20 type vlan id 20
ip link set enp0s8.20 master br22
ip link set enp0s8.20 up
# VXLAN на обоих мостах
ip link add vxlan1001 type vxlan id 1000 dev enp0s3 remote 10.1.25.31 dstport 4789
ip link set vxlan1001 master br11
ip link set vxlan1001 up
#ip link add vxlan1000_2 type vxlan id 1000 dev enp0s3 remote 10.1.25.235 dstport 4789
ip link set vxlan1001 master br22
ip link set vxlan1001 up
ip addr add 192.168.100.3/24 dev br11
ip addr add 192.168.100.4/24 dev br22
!!!
Я хочу знать, как Linux обрабатывает тегирование и инкапсуляцию, чтобы они работали вместе для расширения vxlan
Ответ или решение
Проблема с VLAN через VxLAN Туннель: Подробный Анализ и Решения
Введение
Расширение сетей второго уровня (Layer 2) через сети третьего уровня (Layer 3) — это распространенная задача, особенно в контексте виртуализированных сред и облачных решений. VxLAN (Virtual Extensible LAN) представляет собой одно из решений для преодоления ограничений традиционных VLAN, позволяя создавать виртуальные сети поверх IP-сетей. В данной статье мы рассмотрим вашу проблему с интеграцией VLAN через VxLAN туннели на виртуальных машинах, проанализируем конфигурации и предложим возможные пути решения.
Описание Проблемы
Ваша цель заключается в том, чтобы два VM (виртуальные машины) могли взаимодействовать друг с другом через VLAN, используя VxLAN для инкапсуляции и передачи трафика. Однако вы столкнулись с трудностями при попытке пинга между мостами, что подтверждается сообщением об ошибке "Destination Host Unreachable" из командной строки Linux.
Анализ Конфигурации
Ваши сценарии конфигурации на каждой виртуальной машине предоставляют важные данные. Рассмотрим их более подробно.
Конфигурация VM1
- Настройка мостов (br10 и br20) и интерфейсов VLAN.
- Создание VxLAN интерфейса (vxlan1000) и его привязка к обоим мостам.
- Присвоение IP-адресов для каждого моста.
Конфигурация VM2
- Аналогично первой, VM2 создает свои мосты (br11 и br22) и интерфейсы VLAN.
- Создание VxLAN интерфейса (vxlan1001) с удаленным IP-адресом VM1.
- Присвоение IP-адресов для мостов.
Общая Замечание
Обратите внимание, что на каждой VM вы используете один и тот же идентификатор VxLAN (1000) для создания туннелей. Это важный аспект, который должны учитывать при настройке.
Взаимодействие VxLAN и VLAN
VxLAN инкапсулирует Ethernet кадры внутри UDP пакетов, что позволяет передавать VLAN трафик через IP-сети. Linux управляет тегированием и инкапсуляцией следующим образом:
- Тегирование: При получении Ethernet кадра VLAN, Linux добавляет метку VxLAN (включая идентификатор VNI – VxLAN Network Identifier).
- Инкапсуляция: Затем Ethernet кадр инкапсулируется в UDP пакет, с использованием IP заголовков, позволяющих передавать пакет в IP-сети.
- Декодирование: Как только пакет прибывает на конечный узел (другую VM), Linux извлекает VxLAN заголовок, затем обрабатывает VLAN метки и восстанавливает оригинальный Ethernet кадр.
Возможные Причины Ошибок
Исходя из вашего описания, приведенные ошибки могут быть вызваны несколькими факторами:
-
Ошибки в Конфигурации IP-адресации: Убедитесь, что IP-адреса, присвоенные мостам на обеих виртуальных машинах, находятся в одной подсети. Например, 192.168.100.x должно быть согласовано по всем мостам.
-
Маршрутизация: Проверьте настройки маршрутизации и убедитесь, что пакеты могут проходить между виртуальными машинами. Используйте утилиту
ip route
для проверки таблицы маршрутов. -
Фаервол: Проверьте, не блокирует ли входящие или исходящие соединения фаервол на ваших VM (например, используя iptables).
-
Проблемы с Подключением: Убедитесь, что отсутствие связи между двумя мостами связано именно с конфигурацией VxLAN и VLAN, а не с физическим отсутствием соединения между вашими виртуальными машинами.
Рекомендации по Решению Проблемы
-
Проверка Конфигурации IP: Убедитесь, что IP-адреса корректны и находятся в одной сети.
-
Тестирование Связи: Используйте утилиты
tcpdump
иwireshark
, чтобы отследить, проходят ли пакеты через VxLAN интерфейсы. -
Мониторинг Таблицы MAC-адресов: Используйте команду
brctl showmacs br10
и аналогично для других мостов, чтобы убедиться, что MAC-адреса корректно учтены и находятся в таблицах. -
Журналирование и Логирование: Ознакомьтесь с системными журналами (например,
dmesg
иsyslog
), чтобы выявить возможные проблемы с инкапсуляцией или связанными с сетевыми интерфейсами.
Заключение
Вы расширяете Layer 2 сеть через Layer 3, что является мощным решением для облачных и виртуализированных сред. Проблемы с пингом между мостами могут быть вызваны настройками IP, маршрутизацией или конфигурацией VLAN/VxLAN. Используйте приведенные рекомендации, чтобы отладить вашу конфигурацию, и помните, что правильное соблюдение шагов инкапсуляции и тегирования критически важно для успешного взаимодействия между вашими виртуальными машинами.