L2TP
Название Layer 2 Tunneling Protocol
Уровень (по модели OSI) Сеансовый
Семейство TCP/IP
Создан в 1999
Порт/ID 1701/UDP,500/UDP(for IKE, to manage encryption keys),4500/UDP(for IPSEC NAT-Traversal mode),50/ESP(for IPSEC),51/AH(for IPSEC)
Назначение протокола построение VPN
Спецификация RFC 2661

L2TP (англ. Layer 2 Tunnelling Protocol — протокол туннелирования второго уровня) — в компьютерных сетях туннельный протокол, использующийся для поддержки виртуальных частных сетей. Главное достоинство L2TP состоит в том, что этот протокол позволяет создавать туннель не только в сетях IP, но и в таких, как ATM, X.25 и Frame Relay[1].

Несмотря на то, что L2TP действует наподобие протокола канального уровня модели OSI, на самом деле он является протоколом сеансового уровня и использует зарегистрированный UDP-порт 1701[2].

История

[править | править код]

Считается[кем?], что протокол L2TP вобрал в себя лучшие черты L2F и PPTP[1].

Схема работы

[править | править код]

На диаграмме показана схема работы протокола L2TP.

Целью здесь является туннелирование кадров PPP между удаленной системой или клиентом LAC и LNS, размещенном в LAN[3].

Удаленная система инициирует PPP-соединение с LAC через коммутируемую телефонную сеть PSTN (Public Switched Telephone Network). LAC затем прокладывает туннель для PPP-соединения через Интернет, Frame Relay или ATM к LNS, и таким образом осуществляется доступ к исходной LAN. Адреса удаленной системе предоставляются исходной LAN через согласование с PPP NCP. Аутентификация, авторизация и аккаунтинг могут быть предоставлены областью управления LAN, как если бы пользователь был непосредственно соединен с сервером сетевого доступа NAS.

LAC-клиент (ЭВМ, которая исполняет программу L2TP) может также участвовать в туннелировании до исходной LAN без использования отдельного LAC, если ЭВМ, содержащая программу LAC-клиента, уже имеет соединение с интернетом. Создается «виртуальное» PPP-соединение, и локальная программа L2TP LAC формирует туннель до LNS. Как и в вышеописанном случае, адресация, аутентификация, авторизация и аккаунтинг будут обеспечены областью управления исходной LAN.

Обзор протокола

[править | править код]

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

Структура протокола:

PPP-кадры
информационные сообщения L2TP управляющие сообщения L2TP
информационный канал L2TP (ненадёжный) канал управления L2TP (надёжный)
Транспортировка пакетов (UDP, FR, ATM и т.д.)

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

Формат заголовка

[править | править код]

Пакеты L2TP для управляющего и информационного каналов используют один и тот же формат заголовка:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 31
T L x x S x O P x x x x Версия Длина(опц)
ID туннеля ID сессии
Ns (опц) Nr (опц)
Offset Size (опц) Offset Pad (опц)......
Payload data

Он устанавливается равным 0 для информационных сообщений и 1 — для управляющих.

Для управляющих сообщений этот бит должен быть равен 1.

Все зарезервированные биты должны быть установлены равными 0 для исходящих сообщений и игнорироваться для входящих.

Бит S для управляющих сообщений должен быть равен 1.

Бит O для управляющих сообщений должен быть равен 0.

Значение 1 зарезервировано для детектирования пакетов L2F в условиях, когда они приходят вперемешку с L2TP-пакетами. Пакеты, полученные с неизвестным значением поля Ver, отбрасываются.

Типы управляющих сообщений

[править | править код]

Тип сообщения AVP определяет специфический тип посылаемого управляющего сообщения.

Управление управляющим соединением

Управление вызовами (Call Management)

Сообщения об ошибках

Управление сессией PPP

Протокольные операции

[править | править код]

Необходимая процедура установления PPP-сессии туннелирования L2TP включает в себя два этапа:

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

PPP-туннелирование:

Управляющее соединение

[править | править код]

Является первичным, которое должно быть сделано между LAC и LNS перед запуском сессии. Установление управляющего соединения включает в себя безопасную идентификацию партнера, а также определение версии L2TP, возможностей канала, кадрового обмена и т. д.

L2TP включает в себя простую, опционную, CHAP-подобную систему аутентификации туннеля в процессе установления управляющего соединения.

Установление сессии

[править | править код]

После успешного установления управляющего соединения могут формироваться индивидуальные сессии. Каждая сессия соответствует одному PPP информационному потоку между LAC и LNS. В отличие от установления управляющего соединения, установление сессии является асимметричным в отношении LAC и LNS. LAC запрашивает LNS доступ к сессии для входных запросов, а LNS запрашивает LAC запустить сессию для работы с исходящими запросами.

Когда туннель сформирован, PPP-кадры от удаленной системы, получаемые LAC, освобождаются от CRC, канальных заголовков и т. п., инкапсулированных в L2TP, и переадресуются через соответствующий туннель. LNS получает L2TP-пакет и обрабатывает инкапсулированный PPP-кадр, как если бы он был получен через локальный интерфейс PPP.

Отправитель сообщения, ассоциированный с определенной сессией и туннелем, помещает ID сессии и туннеля (специфицированные партнером) в соответствующие поля заголовка всех исходящих сообщений.

Использование порядковых номеров в канале данных

[править | править код]

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

В отличие от канала управления L2TP, информационный канал L2TP использует нумерацию сообщений не для повторной пересылки, а для детектирования потерь пакетов и/или восстановления исходной последовательности пакетов, перемешанных при транспортировке.

LNS может инициировать запрет нумерации сообщений в любое время в ходе сессии (включая первое информационное сообщение).

Механизм keepalive (Hello)

[править | править код]

Механизм keepalive используется L2TP для того, чтобы различать простои туннеля и длительные периоды отсутствия управления или информационной активности в туннеле. Это делается с помощью управляющих сообщений Hello после заданного периода времени, истекшего с момента последнего получения управляющего сообщения через туннель. При недоставке сообщения Hello туннель объявляется нерабочим, и система возвращается в исходное состояние. Механизм перевода транспортной среды в исходное состояние путём введения сообщений Hello гарантирует, что разрыв соединения между LNS и LAC будет детектирован на обоих концах туннеля.

Прерывание сессии

[править | править код]

Прерывание сессии может быть инициировано LAC или LNS и выполняется путём посылки управляющего сообщения CDN. После того как последняя сессия прервана, управляющее соединение может быть также разорвано.

Разрыв управляющего соединения

[править | править код]

Разрыв управляющего соединения может быть инициирован LAC или LNS и выполняется путём посылки одного управляющего сообщения StopCCN.

Реализация L2TP через специфическую среду

[править | править код]

Протокол L2TP является самодокументируемым, работающим поверх уровня, который служит для транспортировки. Однако, необходимы некоторые детали[какие?] подключения к среде, для того, чтобы обеспечить совместимость различных[каких?] реализаций.

Соображения безопасности

[править | править код]

Протокол L2TP сталкивается при своей работе с несколькими проблемами безопасности. Ниже рассмотрены некоторые подходы для решения этих проблем.

Безопасность на конце туннеля

[править | править код]

Концы туннеля могут опционно выполнять процедуру аутентификации друг друга при установлении туннеля. Эта аутентификация имеет те же атрибуты безопасности, что и CHAP, и обладает разумной защитой против атак воспроизведения и искажения в процессе установления туннеля. Для реализации аутентификации LAC и LNS должны использовать общий секретный ключ.

Безопасность пакетного уровня

[править | править код]

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

L2TP и IPsec

[править | править код]

При работе поверх IP, IPsec (безопасный IP) предоставляет безопасность на пакетном уровне. Все управляющие и информационные пакеты L2TP в конкретном туннеле выглядят для системы IPsec как обычные информационные UDP/IP-пакеты. Помимо транспортной безопасности IP, IPsec определяет режим работы, который позволяет туннелировать IP-пакеты, а также средства контроля доступа, которые необходимы для приложений, поддерживающих IPsec. Эти средства позволяют фильтровать пакеты на основе характеристик сетевого и транспортного уровней. В модели L2TP-туннеля аналогичная фильтрация выполняется на PPP-уровне или сетевом уровне поверх L2TP.

Примечания

[править | править код]
  1. 1 2 Выбираем протокол VPN. Дата обращения: 14 марта 2022. Архивировано 23 января 2022 года.
  2. Список портов Архивная копия от 4 июня 2001 на Wayback Machine на сайте IANA  (англ.)
  3. Протокол туннелей на сетевом уровне L2 (L2TP) Архивная копия от 29 декабря 2011 на Wayback Machine / Семёнов Ю. А.. Telecommunication technologies — телекоммуникационные технологии — v. 3.5 — М.: ГНЦ ИТЭФ, 2010

Ссылки

[править | править код]