我目前遇到问题,我试图通过 Cisco-AVPair 传递值来在 Meraki 中实现 UDN 的使用。
这是我在用户文件中当前的用户:
rick Cleartext-Password := "password1"
Cisco-AVPair = "udn:private-group-id=500"
morty Cleartext-Password := "password2"
Cisco-AVPair = "udn:private-group-id=501"
虽然这一点确实会在 radtest 或使用 RTRadPing 的响应中传回,但该属性不会传递到 Meraki,因为该值不会进入内部隧道。我需要能够确保这个值也在内部隧道中传递。
我知道问题与此值未进入内部隧道有关,因为我可以将此行添加到内部隧道和默认文件的验证后部分,它使其传递静态值和 Meraki收到了。
update reply {
Cisco-AVPair := "udn:private-group-id=500"
}
这样做的问题是它只是将每个用户的 UDN 静态设置为 500。我需要提取分配给该用户的值并将其推送到 Meraki。
我已经在“/etc/freeradius/3.0/sites-enabled/inner-tunnel”文件的后验证部分尝试过这些,但它们似乎都不起作用。
if (&session-state:Cisco-AVPair) {
update reply {
Cisco-AVPair := &session-state:Cisco-AVPair
}
}
if (&request:Cisco-AVPair) {
update reply {
Cisco-AVPair := &request:Cisco-AVPair
}
}
我还尝试了一些其他建议,例如在“授权”部分下分配临时控制值,然后在授权后部分引用该控制值。我似乎无法弄清楚如何传递与正在授权的用户关联的特定值。
任何指导将不胜感激。
我终于弄清楚了这一点。我不确定这是否是正确的方法,但它确实对我有用。
我必须向默认文件和内部隧道文件的“授权”和“后验证”部分添加一些内容。
文件:
/etc/freeradius/3.0/sites-enabled/default
我在授权部分添加了这个:
update control {
&control: += &reply:
}
我在授权后部分添加了此内容:
update reply {
&reply: += &control:
}
文件:
/etc/freeradius/3.0/sites-enabled/inner-tunnel
我在授权部分添加了这个:
update control {
&control: += &reply:
}
我在授权后部分添加了此内容:
update outer.session-state {
&outer.session-state: += &control:
}
这实际上对我来说效果更好,因为这样我不仅传递 Cisco-AVPair 属性,还传递我在此过程中自动添加的任何其他属性。这样我就不必返回并再次更新这些部分。我只需要更新用户及其属性。