Настройка L2TPv3 туннелей в Linux и Cisco: объединение L2-сетей ЦОД (DCI)
- Необходимость миграции виртуальных машин (VMware vMotion / Proxmox Live Migration) между географически разделенными ЦОД без смены IP.
- Протоколы VXLAN и EVPN недоступны из-за ограничений промежуточных провайдерских каналов.
- Интерфейс L2TPv3 псевдопровода переходит в состояние
DOWNпри перезапуске сетевых демонов. - Файлы конфигурации
ip l2tpсбрасываются после перезагрузки Linux-сервера.
1. Архитектура L2TPv3 (RFC 3931)
L2TPv3 позволяет создавать статические высокоскоростные псевдопровода (Pseudowires) типа Ethernet-over-IP без накладных расходов на сессионный контроль. Инкапсуляция происходит напрямую в IP-протокол 115 (или через UDP-порт 1701), обеспечивая минимальные задержки передачи L2-кадров.
2. Настройка L2TPv3 туннеля в Linux (ЦОД-1)
# Загрузка модулей ядра
modprobe l2tp_core
modprobe l2tp_netlink
modprobe l2tp_eth
modprobe l2tp_ip
# 1. Создание статического L2TPv3 туннеля (IP protocol 115)
ip l2tp add tunnel tunnel_id 1000 peer_tunnel_id 2000 \
encap ip local 198.51.100.10 remote 203.0.113.20
# 2. Создание виртуальной L2TP сессии (Ethernet Pseudowire)
ip l2tp add session tunnel_id 1000 session_id 1001 \
peer_session_id 2001 name l2tpeth0
# 3. Активация интерфейса
ip link set dev l2tpeth0 up mtu 1488
# 4. Добавление в локальный сетевой мост (Bridge ЦОД-1)
ip link set dev l2tpeth0 master br-datacenter3. Ответная настройка в Linux (ЦОД-2)
# 1. Создание ответного туннеля
ip l2tp add tunnel tunnel_id 2000 peer_tunnel_id 1000 \
encap ip local 203.0.113.20 remote 198.51.100.10
# 2. Создание ответной сессии
ip l2tp add session tunnel_id 2000 session_id 2001 \
peer_session_id 1001 name l2tpeth0
# 3. Активация и объединение с локальным мостом ЦОД-2
ip link set dev l2tpeth0 up mtu 1488
ip link set dev l2tpeth0 master br-datacenter4. Конфигурация на маршрутизаторах Cisco IOS-XE
pseudowire-class L2TPV3_DCI
encapsulation l2tpv3
ip local interface GigabitEthernet0/0
interface GigabitEthernet0/1.100
encapsulation dot1Q 100
xconnect 203.0.113.20 1001 encapsulation l2tpv3 manual pw-class L2TPV3_DCI
l2tp id 1000 2000
l2tp cookie local 4 0x12345678
l2tp cookie remote 4 0x123456785. Автоматизация в systemd-networkd (/etc/systemd/network/50-l2tp.netdev)
[NetDev]
Name=l2tpeth0
Kind=l2tp
[L2TPSession]
TunnelId=1000
SessionId=1001
PeerSessionId=2001
Name=l2tpeth0 Частые вопросы (FAQ)
В чем разница между инкапсуляцией L2TPv3 в IP (proto 115) и UDP?
Инкапсуляция в сырой IP (протокол 115) дает меньший оверхед (нет UDP заголовка), но не может проходить через NAT. Инкапсуляция в UDP (порт 1701) необходима, если хотя бы один из концов туннеля находится за NAT.
Шифрует ли L2TPv3 передаваемые данные?
Нет. Протокол L2TPv3 предназначен исключительно для инкапсуляции и передачи L2-трафика. Если требуется защита данных через публичный интернет, L2TPv3 заворачивается в IPsec Transport Mode.
Почему при передаче файлов через L2TPv3 соединение 'залипает'?
Причина в превышении стандартного размера кадра (MTU 1500) из-за накладных расходов заголовков L2TPv3. Уменьшите MTU на конечных хостах до 1450 или используйте MSS Clamping.
Как проверить статус псевдопровода в Linux?
Используйте команды: ip l2tp tunnel show и ip l2tp session show.