Назад | Перейти на главную страницу

Установка переменной в зависимости от NAS-IP-адреса в Freeradius

Установка

В настоящее время у нас есть сервер Freeradius, используемый для аутентификации наших пользователей Wi-Fi на нашем сервере Active Directory. Связь между Freeradius и Active Directory осуществляется Winbind.

Чтобы пользователь мог получить авторизацию, он должен принадлежать к группе в Activer Directory. Это делается путем добавления аргумента к команде ntlm_auth.

Чего мы пытаемся достичь

Сейчас мы добавляем 802.1X в наши кабельные сети и хотели бы повторно использовать существующий сервер Radius для аутентификации в той же Active Directory.

Все будет так же, за исключением того, что авторизация будет зависеть от того, принадлежит ли пользователь к другой сети, отличной от сети Wi-Fi.

Что мы уже пробовали

Я прочитал много вещей о freeradius в документации и убедился, что можно использовать условные обозначения и переменные. Поэтому мой план состоял в том, чтобы добавить в команду ntlm_auth переменную, которая будет содержать SID группы (как предложено на Списки рассылки Freeradius). SID группы будет зависеть от IP-адреса сетевого устройства, который должен содержаться в «NAS-IP-Address».

Это должен быть случай написания простого условного оператора и установки переменной. Тем не менее, мне не удалось это сделать, так как Freeradius не запускается каждый раз, когда я пытаюсь добавить условие в файлы конфигурации.

Итак, мои вопросы:

Unlang (условный язык, на который вы ссылаетесь) можно использовать только в подразделах виртуальных серверов (server {} блоки).

Расширения вроде %{foo} иногда может использоваться в таких элементах конфигурации модуля, как ntlm_auth, но это зависит от элемента конфигурации. Примеры в файлах конфигурации модуля обычно подсказывают, можно ли использовать расширения.

Файлы конфигурации виртуального сервера можно найти в /etc/raddb/sites-available или /etc/freeradius/sites-available.

Самый простой способ добиться того, о чем вы просите, - это добавить дополнительную пару конфигураций в различные разделы клиентов вместо того, чтобы основывать что-то на NAS-IP-Address.

Например:

client my_client {
    ipaddr = 127.0.0.1
    secret = testing123
    ad_group = <group>
}

Тогда вы можете использовать расширение %{client:ad_group} чтобы передать значение ad_group в ntlm_auth аргументы.