Akagi201
8/4/2014 - 2:55 AM

freeradius-virtual-server.md

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 {}包裹起来.

你可以创建另一个虚拟服务通过:

  1. 在radiusd.conf定义新的server foo {...} section.
  2. 放置普通的authorizesection在他里面.
  3. 在server section里面添加listen section.
server foo {
        listen {
                ipaddr = 127.0.0.1
                port = 2000
                type = auth
        }

        authorize {
                update control {
                        Cleartext-Password := "bob"
                }
                pap
        }

        authenticate {
                pap
        }
}
  1. 测试: 运行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

Refs