L2TP — Layer 2 Tunneling Protocol

Статью хотелось бы начать с вопроса:

Зачем данный протокол?

Из названия для того чтобы строить какие то туннели – туннели в наших сетях, а именно для объединения L2 доменов. Так как протокол L2 уровня, соответственно нужен для связи узлов по второму уровню модели OSI. А если еще заглянуть глубже, то L2TP нужен для инкапсулирования и туннелирования пакетов протокола PPP (Point-to-Point Protocol)

L2tp – туннельный протокол работающий на канальном уровне модели OSI . Одно из главных преимуществ данного протокола является возможность работать в различных сетях не только IP, но и x25, frame relay и других, соединять L2 сети поверх различных других сетей.
Немного истории.

Протокол был создан благодаря взаимодействию двух корпораций Cisco и Microsoft в 1999 году.

Немного порыскав в глобальной сети, нашел информацию:

Изначально компания cisco разработала протокол PPTP (Point-to-Point Tunneling Protocol), затем данная разработка была передана компании Microsoft, которая в дальнейшем лицензировала данный протокол. Спецификация протокола определена в RFC 2637.На данный момент практически все OS Microsoft поддерживают данный протокол.

Также параллельно разработке протокола PPTP , Cisco разрабатывала протокол L2F (Layer 2 Forwarding Protocol ) определенного в RFC 2341.
Оба протокола не обеспечивали должных требований безопасности при передаче трафика, потому объединив усилия, был разработан протокол L2TP.

Начнем.
Основной целью статьи не является подробное описание работы протокола L2TP, так как материала в сети много. Поэтому будем описывать настройки протокола на устройствах Сisco.

Все таки, для галочки немного опишем основные принципы работы.

L2TP использует два вида пакетов: управляющие и информационные сообщения. Управляющие сообщения используются при установлении, поддержании и аннулировании туннелей и вызовов. Информационные сообщения используются для инкапсуляции PPP-кадров, пересылаемых через туннель. Управляющие сообщения используют надежный канал в пределах L2TP, чтобы гарантировать доставку. Информационные сообщения при потере не пересылаются повторно. Управляющее сообщение имеет порядковый номер, используемый в управляющем канале для обеспечения надежной доставки. Информационные сообщения могут использовать порядковые номера, чтобы восстановить порядок пакетов и детектировать потерю кадров. Все коды посылаются в порядке, принятом для сетей.

Перед началом передачи трафика проходит два этапа

1) Установление, управляющего канала для туннеля
Включает безопасную идентификацию удаленной стороны с помощью аутентификации схожей с CHAP аутентификации, согласование версии протокола, а также используемых параметров.

2) Установка сессий для передачи трафика                                                                                                                                                                                                                                                      Для контроля L2TP сессий используются порядковые номера, которые в первом этапе используются для надежной доставки управляющих сообщения, а на втором этапе используются для детектирования потерь пакетов и/или восстановления исходной последовательности пакетов, перемешанных при транспортировке.

То есть сначала происходит согласование управления, затем передача данных.

Сам протокол не шифрует данные внутри туннеля, а отвечает только за аутентификацию и целостность самого туннеля. Поэтому обычно протокол используют в связке с IPSec для шифрования данных.

Перейдем к важному – настройке протокола.

Предположим, что нам необходимо соединить два узла географически расположенных далеко друг от друга, но имеющих L3 связность. К примеру, есть сеть в которой работает протокол OSPF , а нам необходимо из одного конца нашей сети пробросить VLAN на другую часть сети. Конечно, можно заморочиться и на всем пути прописать необходимый нам VLAN, но это неправильный вариант решения проблемы, так как сталкиваемся с проблема резервирования и сходимости STP. При использовании же L2TP такая проблема отпадает, нам неважно, где и как проходит наш туннель, за это отвечает протокол динамической маршрутизации в нашей сети.

Как вы наверное смогли догадаться, настройку необходимо производить только на конечных сторонах R2 и R3 (схема приведена ниже).

У нас есть следующая схема сети.

схема

 

На маршрутизаторах R2 и R3 интерфейсы Gi2/0 и Gi1/0 соответственно смотрят в сеть под управлением протокола OSPF
Интерфейсы Gi1/0 и GI2/0 смотрят в L2 сеть.

Так как для эмуляции работы протокола использовался GNS3, в качестве конечных устройств выступают маршрутизаторы.
ВАЖНО! Создавая L2-туннель, IP-адрес на этот интерфейс уже нельзя будет присвоить, тоесть в качестве IP Default Gateway этот интерфейс уже не сможет выступать.

Настройка R1

l2tp-class cisco

— задаем общий класс L2TP, в котором указываются параметры управления каналом (таймеры, аутентификация, авто согласование и прочие параметры.) можно применять одновременно в нескольких pseudowire-классах). Для того чтобы канал установился необходимо что параметры управления были одинаковы с обоих сторон. Если не определен никакой L2TP-класс, то к pseudowire-каналу применяется L2TP-класс по умолчанию (default class), если в созданном классе L2TP какой-либо параметр не задан, то применяется значение по умолчанию;

hidden

— скрывать пары «атрибут-значение» (attribute-value pairs (AVPs)) при обмене служебными сообщениями (шифруется паролем);

authentication

— включить аутентификацию на L2TP-канале;

hello 30

— проверят удаленную сторону hello пакетами каждые 30 сек.;

password C123

— пароль для аутентификации L2TP

pseudowire-class cisco

— производиться настройка канала L2 (протоколы, MTU, QoS, фрагментация, L2TP-класс и пр.);

encapsulation l2tpv3

— метод инкапсуляции данных (варианты: l2tpv2, l2tpv3, mpls в зависимости от версии IOS);

sequencing both

— (необязательный параметр) маркировать исходящий и отслеживать правильную последовательность для входящих данных. В случае нарушения последовательности для входящего трафика, пакеты будут отбрасываться

protocol l2tpv3 cisco

— протокол сигнализации/управления L2 каналом + соответствующий класс L2TP(возможные варианты: l2tpv3, l2tpv2, none). None — указывает на необходимость вручную указать параметры канала, l2tp — автоматическое согласование параметров

ip local interface Loopback0

— интерфейс, IP-адрес которого используется. в качестве адреса источника в отправленных туннельных пакетах (настоятельно рекомендуется указывать в качестве параметра Loopback-интерфейс, для стабильности работы протокола);

ip pmtu

— автоматическое включение обнаружения необходимого параметра MTU в туннельном канале (инициируются след. процессы: ICMP Unreachable-сообщения, указывающие на ошибки фрагментации; проверка MTU для IP-пакетов . Например поступил IP-пакет с установленным DF-битом и превышающим MTU — этот пакет будет отброшен. Параметр необходим для фрагментации пакетов перед тем, как они будут отправленны в L2-туннель (рекомендуется исп. совместно с параметром ‘ip dfbit set’, что позволяет PMTU быстрее согласовать параметры).

ip dfbit set

— установить флаг DF-бит для туннелированных IP-пакетов (повышает производительность маршрутизатора-приемника, за счет отсутствия необходимости пересчета последовательности фрагментов IP-пакетов, но может стать причиной потери пакетов);

ip tos reflect

— скопировать значения ToS для туннелированных IP-пакетов из внутреннего IP-заголовка (возможные значения: reflect, <значение от 0 до 255>);

interface Loopback0
ip address 172.16.0.250 255.255.255.255

— создание интерфейса Loopback, с которого будет осуществлятся соединение протокола L2TP

interface GigabitEthernet0/0
xconnect 172.16.0.251 10 pw-class cisco

— инициировать Xconnect-сервис (L2TP-туннель) с Peer IP 192.168.1.2 и VCID 10 (32-bit virtual circuit identifier) (параметр VCID должен совпадать на обоих терминирующих туннель маршрутизаторах, при этом комбинация Peer IP и VCID должны быть уникальны в пределах маршрутизатора), применив сессионные параметры канала cisco.

Соответствующие настройки производятся и с другой стороны, меняются только следующие настройки

interface Loopback0
ip address 172.16.0.251 255.255.255.255
interface GigabitEthernet0/0
xconnect 172.16.0.250 10 pw-class cisco

Проверим работоспособность канала следующими командами:

show l2tp

R2#sh l2tp

L2TP Tunnel and Session Information Total tunnels 1 sessions 1

LocTunID RemTunID Remote Name State Remote Address Sessn L2TP Class/

   Count   VPDN Group

2287584142 2710248501 R3         est      172.16.0.251          1            cisco

LocID      RemID      TunID                      Username, Intf/  State Last Chg   Uniq ID

Vcid, Circuit

2049886016 2874326848 2287584142       10,           Gi1/0  est   00:00:17   8

show l2tp tunnel packets
R2#sh l2tp tunnel packets

L2TP Tunnel Information Total tunnels 1 sessions 1

LocTunID      Pkts-In Pkts-Out Bytes-In Bytes-Out
2287584142 19           20               2482        2879
R2#

Проверка ping c R4 на R5

R4#ping 192.168.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/53/140 ms
R4#

Как мы видим канал работает.

полная конфигурация маршуртизаторов

Router R1Router R2 Router R3 Router R4 Router R5

Подведем итог:
Сегодня мы настроили простой L2TP туннель, настройка достаточна проста.
L2TP туннель очень удобный протокол, который позволяет соединять L2 сети на расстоянии, не прибегая к дорогостоящим решениям на базе MPLS и тд. А если необходимо обеспечить безопасность данного туннеля, то можно использовать IPSec для шифрования туннеля
До новых встреч

Best regards
Dmitry Sultanakhmetov

 


Комментарии:

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Hide me
Получать регулярно свежие материалы, лабораторные и вебинары
Email Имя
Show me