Как ссылаться на помеченные атрибуты в условиях

Я столкнулся с проблемой, которую просто не могу понять. В FreeRadius я использую раздел «post-proxy» для оценки условий. Это всегда хорошо работало для меня. Однако теперь я столкнулся со странной проблемой:

Это Access-Accept, который я получаю:

(11877) Tue Jul  2 10:21:36 2019: Debug:   Received Access-Accept Id 198 from xxx.xxx.xxx.xxx:1812 to xxx.xxx.xxx.xxx:53259 length 309
(11877) Tue Jul  2 10:21:36 2019: Debug:   Proxy-State = 0x3731
(11877) Tue Jul  2 10:21:36 2019: Debug:   Framed-Protocol = PPP
(11877) Tue Jul  2 10:21:36 2019: Debug:   Service-Type = Framed-User
(11877) Tue Jul  2 10:21:36 2019: Debug:   Tunnel-Medium-Type:0 = IEEE-802
(11877) Tue Jul  2 10:21:36 2019: Debug:   Tunnel-Private-Group-Id:0 = "530"
(11877) Tue Jul  2 10:21:36 2019: Debug:   Tunnel-Type:0 = VLAN
(11877) Tue Jul  2 10:21:36 2019: Debug:   EAP-Message = 0x030c0004
(11877) Tue Jul  2 10:21:36 2019: Debug:   Class = 0xXXXXX
(11877) Tue Jul  2 10:21:36 2019: Debug:   MS-CHAP-Domain = "XXXXX"
(11877) Tue Jul  2 10:21:36 2019: Debug:   MS-CHAP2-Success = 0xXXXXX
(11877) Tue Jul  2 10:21:36 2019: Debug:   MS-MPPE-Send-Key = 0xXXXXX
(11877) Tue Jul  2 10:21:36 2019: Debug:   MS-MPPE-Recv-Key = 0xXXXXX
(11877) Tue Jul  2 10:21:36 2019: Debug:   Message-Authenticator = 0xXXXXX

Когда я пытаюсь оценить идентификатор VLAN/Tunnel-Private-Group-Id, я получаю следующее:

(11877) Tue Jul  2 10:21:36 2019: Debug:       if (proxy-reply:Tunnel-Private-Group-ID == "530") {
(11877) Tue Jul  2 10:21:36 2019: ERROR:       Failed retrieving values required to evaluate condition

Я упускаю что-то очевидное? И может ли кто-нибудь сказать мне, что означает «: 0» за этими тремя атрибутами:

Tunnel-Medium-Type:0

Tunnel-Private-Group-Id:0

Tunnel-Type:0

Я просмотрел весь Интернет, но не смог найти документацию об этом. Я предполагаю, что это как-то связано с внутренним/внешним туннелем?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
232
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

:0 — это индикатор тега для атрибута, это означает, что атрибут находится в группе тегов 0. Некоторые атрибуты имеют 1-байтовый префикс тега, который используется для группировки атрибутов, описывающих одну и ту же «вещь».

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

Распространенным вариантом использования тегов является группировка атрибутов, описывающих одну конечную точку VPN вместе, когда указывается несколько конечных точек L2TP (в основном земля интернет-провайдера). Другой вариант использования — сделать что-то подобное для атрибутов, описывающих динамическую маркировку VLAN (как показано в вашем примере пакета).

Оригинальный RFC, описывающий тегирование, называется RFC2868, если вас интересует формат передачи по сети.

В FreeRADIUS, когда вы работаете с помеченными атрибутами, вам обычно необходимо явно указать значение тега, поэтому ваше условие выше не работает.

Пытаться:

if (proxy-reply:Tunnel-Private-Group-ID:0 == "530") {

Или, если это FreeRADIUS 3, вы могли бы использовать индекс массива «все экземпляры», не могу вспомнить точную логику, которую я реализовал для сопоставления, когда писал этот код...

if (proxy-reply:Tunnel-Private-Group-ID[*] == "530") {

Если вы заглянете в словари, вы также увидите тегированные атрибуты, помеченные флагом has_tag, как в атрибутах файл словаря для RFC2868.

Спасибо за пояснение по тегам. Я забыл упомянуть, что мой коллега попробовал предложенный вами подход: codeОтладка: if (proxy-reply:Tunnel-Private-Group-ID:0 == "530") { ОШИБКА: не удалось получить значения, необходимые для оценки условия... code

Patrick Kuepers 05.07.2019 13:29
Ответ принят как подходящий

Конечно, это должно было быть что-то очевидное, и так оно и было.

Похоже, что был применен фильтр атрибутов, который отфильтровывал атрибут Tunnel-Private-Group-ID во время пост-прокси.

Другие вопросы по теме