Как ссылаться на помеченные атрибуты в условиях - PullRequest
0 голосов
/ 04 июля 2019

Я столкнулся с проблемой, которую просто не могу понять.В 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

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

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

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

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

0 голосов
/ 04 июля 2019

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

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

Обычный вариант использования тегов - группировать атрибуты, которые описываютодна конечная точка VPN вместе, где указывается несколько конечных точек L2TP (в основном это ISP).Другой вариант использования - сделать что-то подобное для атрибутов, описывающих динамическое тегирование 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 атрибуты.

...