Настройка туннелей VXLAN поверх IPsec: создание оверлейных L2-сетей
- Необходимость прозрачной передачи L2-трафика между нодами кластера в разных облачных провайдерах (Multi-Cloud).
- Стандартный VXLAN передает трафик в открытом виде по UDP 4789 через публичный интернет.
- Сетевые сбои кластера и потеря пакетов из-за гигантского оверхеда заголовков (Double Encapsulation: VXLAN + IPsec).
- Сброс мультикаст-трафика (Multicast/Broadcast) промежуточными провайдерами.
1. Архитектура VXLAN over IPsec
VXLAN (RFC 7348) инкапсулирует L2 Ethernet-фреймы в UDP-пакеты на порт 4789 с добавлением 24-битного идентификатора VNI (до 16 млн сетей). Для защиты данных трафик узлов VTEP (VXLAN Tunnel Endpoints) шифруется протоколом IPsec в транспортном режиме (Transport Mode).
2. Настройка IPsec Transport Mode в Linux (Нода-1)
В файле /etc/swanctl/swanctl.conf настраиваем шифрование только порта VXLAN (UDP 4789):
connections {
ipsec-vxlan {
local_addrs = 198.51.100.10
remote_addrs = 203.0.113.20
mode = transport
children {
vxlan-secure {
proto = udp
local_ts = 198.51.100.10[4789]
remote_ts = 203.0.113.20[4789]
esp = aes256gcm128!
}
}
}
}3. Создание интерфейса VXLAN и сетевого моста (Нода-1)
# 1. Создание интерфейса VXLAN с прямым указанием удаленного VTEP (Unicast mode)
ip link add vxlan10 type vxlan id 10 dev eth0 \
local 198.51.100.10 remote 203.0.113.20 dstport 4789
# 2. Создание L2-моста и добавление интерфейсов
ip link add br-overlay type bridge
ip link set dev vxlan10 master br-overlay
# 3. Назначение MTU с учетом двойного оверхеда (1500 - 50 IPsec - 50 VXLAN = 1400)
ip link set dev vxlan10 mtu 1400
ip link set dev br-overlay mtu 1400
# 4. Активация интерфейсов
ip link set dev vxlan10 up
ip link set dev br-overlay up
# 5. Назначение внутреннего IP кластера
ip addr add 10.240.0.1/24 dev br-overlay4. Ответная конфигурация (Нода-2)
ip link add vxlan10 type vxlan id 10 dev eth0 \
local 203.0.113.20 remote 198.51.100.10 dstport 4789
ip link add br-overlay type bridge
ip link set dev vxlan10 master br-overlay
ip link set dev vxlan10 mtu 1400
ip link set dev br-overlay mtu 1400
ip link set dev vxlan10 up
ip link set dev br-overlay up
ip addr add 10.240.0.2/24 dev br-overlay5. Проверка целостности и шифрования
# Захват внешнего трафика (должен быть виден только протокол ESP)
tcpdump -nn -i eth0 host 203.0.113.20
# Проверка передачи внутри моста
ping -I br-overlay 10.240.0.2 Частые вопросы (FAQ)
Почему для шифрования VXLAN используется IPsec Transport Mode, а не Tunnel Mode?
Transport Mode шифрует только полезную нагрузку UDP-пакета, сохраняя исходные IP-адреса хостов, что исключает добавление второго внешнего IP-заголовка и экономит 20 байт MTU.
Как избежать проблем с фрагментацией при использовании VXLAN over IPsec?
Суммарный оверхед заголовков (IP + UDP + VXLAN + ESP + Auth) составляет около 100 байт. Всегда устанавливайте MTU на оверлейных виртуальных интерфейсах не выше 1400 байт.
Поддерживает ли такая схема передачу Broadcast/Multicast (например, ARP)?
Да, интерфейс VXLAN преобразует локальные широковещательные L2-запросы (ARP/DHCP) в направленные Unicast UDP-пакеты к удаленному VTEP, после чего они шифруются IPsec.
Можно ли объединить более двух площадок в одну сеть VXLAN?
Да, для этого настраивается таблица сопоставления FDB (Forwarding Database) через утилиту bridge fdb или поднимается протокол динамического обнаружения EVPN (через BGP/FRRouting).