Freeradius Разрешить пользователя с указанного c сайта (WISPr-Location-ID) - PullRequest
0 голосов
/ 09 января 2020

Я установил Freeradius и Daloradius из помощи, предоставленной на следующем сайте. https://computingforgeeks.com/how-to-install-freeradius-and-daloradius-on-ubuntu/

Мне нужна помощь. У меня уникальная ситуация.

У меня есть несколько сайтов, на которых установлены маршрутизаторы mikrotik. Я установил RADIUS в одном месте и сделал его единой точкой для аутентификации пользователя в точке доступа (на Mikrotik).

Чего я достиг, так это: когда пользователь хочет войти в систему, ему назначается ограничение скорости XYZ с Простой XYZ и одновременные пользователи XYZ.

Что я сделал: Для целей тестирования я сделал

Reply Attributes:
Fall-Through: value 1 , Op =

Check Attribues:
Auth Type: Value Reject, Op :=
WISPr-Location-ID: Value Site1, Op !=

То, что сделано выше, проверяет, что если пользователь пытается войти с сайта, где WISPr-Location-ID теперь Site1, он отклоняет пользователя. И если WISPr-Location-ID является Site1, он позволяет пользователю войти в систему. Это работает нормально, как я хочу.

Какова моя цель (что я хочу сделать, но не смог добиться, это): когда пользователь фактически находится на Сайте1 (где ему разрешено), если я подаю заявку атрибут Ответить ограничения скорости, времени простоя и (проверка атрибута) одновременного пользователя; они не применяются.

Короче говоря, я хочу:

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

Может кто-нибудь помочь мне в этом вопросе?

1 Ответ

0 голосов
/ 12 января 2020

Поскольку никто не ответил, я нашел для этого другой выход.

В таблице «Пользователи» в базе данных Radius был столбец «адрес»

Я добавил желаемое имя САЙТА в качестве адреса и затем написал следующий код в

/ etc / freeradius / 3.0 / sites-enabled / default файл под авторизацией.

if ("%{sql: select address from userinfo where username = '%{User-Name}'}" != "%{WISPr-Location-ID}" && "%{sql: select address from userinfo where username = '%{User-Name}'}" != "all"  ) {
update reply {
Reply-Message = 'Error: You are not allowed to connect form this Site !'
}
update control {
Auth-Type := "Reject"
}
}

То, что сделано выше, будет искать WISPr-Location-ID, отправленный маршрутизатором, если ответ соответствует тому, что написано в адресе пользователя, он позволит пользователю подключиться к сети И, если у пользователя есть «все», записанное в поле адреса, он позволит пользователю подключиться к сети независимо от ответа от роутер.

Если у пользователя нет «all» в поле адреса и есть какая-то другая запись, которая не соответствует ответу, полученному от маршрутизатора, он отправит пользователю сообщение msg

«Ошибка : Вам не разрешено подключаться с этого сайта! "

Надеюсь, это поможет кому-то еще.

...