要配置freeRADIUS的proxy功能,就需要熟悉它的两个配置文件:proxy.conf 和client.conf。
1. proxy.conf主要是用来配置被代理的radius server(也叫home server) 和 realm, 以及他们之间的映射关系,也就是request转发到那个home server。
该配置文件中主要有三个配置项目:
a. home_server: 主要用来配置home server的属性, 也就是被代理的radius server的属性,主要包括home server的类型(认证,计费,认证计费等)、ip地址、端口、密码(server和client之间的密码)、是否需要authenticator、重启时间等等。
b. home_server_pool: 用来定义home server集。 它可以把多个home server放到一个home_server_pool中,然后定义这些home
server之间的协作关系,可以是load-balance,fail-over等
c.realm : 用来定义域。 在该项目中可以指定 home_sever_pool,这样就把该域的请求转发到home_server_pool中的一个home
server上。如果realm中不指定home_server_pool,那么该请求就会在本地处理。
总之, 一个home server指定了一台被代理的radius服务器,然后home_server_pool又将一些home server放到一个pool中,在realm中指定home_server_pool,这样也就把域和radius server联系在一起了。
在代理freeRadius server上,收到一个请求后,就会检查该请求的域,然后去匹配proxy.conf中定义的realm,然后将请求转发到相应的radius server上去。没有域的请求会使用realm NULL来处理,如果没有找到匹配的 会使用realm DEFAULT来处理。
2. client.conf 主要是用来配置radius server的客户端的,server的客户端的概念是相对的,可以是NAS,直接的client设备,也可以是 代理radius server。 如果某一台freeRADIUS启用了代理,那么对于被他代理的radius server 来说他就是client。 所以,也需要 在被 代理的radius server的client.conf中,添加上代理radius server。
下面,以一个freeRadius 代理两个freeRadius server来说明。
代理freeRadius(192.168.1.10)
被代理freeRADIUS server 1 (192.168.1.101,用来处理mydomain1.com的请求)
被代理freeRADIUS server 2 (192.168.1.102,用来处理mydomain2.com的请求)
(1) 代理freeRadius 上的配置
- #配置home server 1
- home_server myProxyServer_1 {
- type = auth
- ipaddr = 192.168.1.101 #home server ip地址
- port = 1812
- secret = myProxyServer_1 #密码(client和server间的)
- require_message_authenticator = no
- response_window = 20
- zombie_period = 40
- revive_interval = 120
- status_check = status-server
- check_interval = 30
- num_answers_to_alive = 3
- coa {
- irt = 2
- mrt = 16
- mrc = 5
- mrd = 30
- }
- }
- #配置 home server pool 1
- home_server_pool myProxyPool_1{
- type = fail-over
- home_server = myProxyServer_1
- #指定home_server 可以指定多个
- }
- #配置realm
- realm mydomain1.com {
- auth_pool = myProxyPool_1 # 指定home_server_pool
- nostrip #一定要加上这个,不然server会剪掉域名,导致认证通不过
- }
- #配置home server 2
- home_server myProxyServer_2 {
- type = auth
- ipaddr = 192.168.1.102 #home server ip地址
- port = 1812
- secret = myProxyServer_2 #密码(client和server间的)
- require_message_authenticator = no
- response_window = 20
- zombie_period = 40
- revive_interval = 120
- status_check = status-server
- check_interval = 30
- num_answers_to_alive = 3
- coa {
- irt = 2
- mrt = 16
- mrc = 5
- mrd = 30
- }
- }
- #配置 home server pool 2
- home_server_pool myProxyPool_2{
- type = fail-over
- home_server = myProxyServer_2
- #指定home_server 可以指定多个
- }
- #配置realm
- realm mydomain2.com {
- auth_pool = myProxyPool_2 # 指定home_server_pool
- nostrip #一定要加上这个,不然server会剪掉域名,导致认证通不过
- }
注意如果需要本地的帐号也需要转发直接配置一个NULL就可以了
- realm NULL {
- auth_pool = myProxyPool_2 # 指定home_server_pool
- nostrip #一定要加上这个,不然server会剪掉域名,导致认证通不过
- }
Realm指向home server pool auth_pool 指向home server pool并且pool中的home server的type都必须是auth acct_pool 指向home server pool 并且pool中的home server的type必须是acct 如果pool中的home server的type都是auth+acct,那么可以使用pool参数设置即可
可以直接设置成
- #配置realm
- realm mydomain2.com {
- pool = myProxyPool_2 # 指定home_server_pool ,表示认证+计费
- }
(2)home server 1 上的设置
proxy.conf设置,添加如下
- realm mydomain1.com{
- #不需要设置 home_server_pool,因为转发过来的请求需要在本机上处理
- }
client.conf中添加
- client 192.168.1.10{
- secret = myProxyServer_1
- shortname = myproxy
- nastype = other # localhost isn't usually a NAS...
- require_message_authenticator = no
- }
(3) home server 2 的设置
font-family: monospace;">
- #client.conf
- client 192.168.192.10{
- secret = myProxyServer_2
- shortname = myproxy
- nastype = other # localhost isn't usually a NAS...
- require_message_authenticator = no
- }
- #proxy.conf
- realm mydomain2.com{
- }
注意在认证有可能用户名称不对,带域认证的用户需要使用 %{Stripped-User-Name}
1、