Freeradius Разрешить пользователю с определенного сайта (WISPr-Location-ID)

Я установил 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, это позволяет пользователю войти в систему. Это прекрасно работает, как я хочу.

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

Короче хочу:

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

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


person Safi    schedule 09.01.2020    source источник


Ответы (1)


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

В таблице пользователей в базе данных 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, отправленный маршрутизатором, если ответ совпадает с тем, что написано в адресе пользователя, он позволит пользователю подключиться к сети И если у пользователя есть «все» написано в поле адреса, это позволит пользователю выйти в сеть независимо от ответа от роутера.

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

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

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

person Safi    schedule 12.01.2020