FreeRADIUS 2.0支持虚拟服务, 这个可能是于1.X不向后兼容的最大改变.
虚拟服务不是必须在"sites-available" 和 "sites-enabled"中设置, 你也可以在radiusd.conf, 放置服务的配置.
server {
authorize {
...
}
authenticate {
...
}
...
}
虚拟服务的力量在于他们能够分离策略(policy), 一个策略可以被放进一个虚拟服务, 可以保证只对这个发到虚拟服务的请求生效. 在1.x中, 策略是全局的, 所以有时要花费很多努力来下一个策略, 使他只在某些限定条件下生效.
一个虚拟服务几乎是一个完整的RADIUS server, 就像一个FreeRADIUS 1.x的配置. 然而, FreeRADIUS可以同时运行多个虚拟服务. 虚拟服务甚至可以proxy requests给互相.
最简单的创建一个虚拟服务的方法是移走所有的在radius.conf中的request processing sections("authorize" , "authenticate", 等等). 并且像上面那样用server {}
包裹起来.
你可以创建另一个虚拟服务通过:
server foo {...}
section.authorize
section在他里面.server foo {
listen {
ipaddr = 127.0.0.1
port = 2000
type = auth
}
authorize {
update control {
Cleartext-Password := "bob"
}
pap
}
authenticate {
pap
}
}
radiusd -X
, 然后radtest bob bob localhost:2000 0 testing123
, 应该看到服务器返回Access-Accept
.虚拟服务的section中只能有下面的sub-section
listen
client
authorize
authenticate
post-auth
pre-proxy
post-proxy
preacct
accounting
session