通过radius给ppp客户端分配ip地址

radius给ppp客户端自动分配ip地址有两种方法,一种是通过users文件,一种是使用ippool模块

 

第一种方法非常简单;第二种方法非常难,本人也还未实现,摸索ing;

 

今天介绍如何通过users文件来静态或动态分配ip地址;

 

使用下述方法之前,你必须确保整个radius对接过程是通过的,对接过程可以参考我博客中的radius标签下的文章;

 

整个过程只需要修改radius server上的文件,其他不需要配置;

 

1、配置sites-enabled/default文件

 

主要是去掉files的注释,保证在验证之前能够先加载files模块,file对应的即是users文件

 

default文件一共有3处提到了files,一个是authorize{}部分;一个是preacct{}部分;一个是pre-proxy{}部分

当然,如果你不通过radius来分配ip地址,这3个files完全可以注释掉,并且注释掉可以减少处理时间

 

如果通过radius来分配ip地址的话,也只需要注释掉authorize{}部分即可

 

大概在default文件的第169行,找到如下代码

写道
# Read the 'users' file
files 

 

去掉files前的注释 ,保存退出

 

2、配置users文件

 

user文件里面包含了很多配置例子,包括拒绝特定用户啊,发送hello消息啊,其中也包括了给特定用户分配ip地址的配置

 

其中Framed-IP-Address就是客户端所需要获得的地址,这个地址可以配置成为你想要配置的任何可用ip地址;

必须注意的是,若是将Framed-IP-Address 配置成255.255.255.254 ,说明客户端从VPN服务器获取ip地址而不是radius

 

①:绑定用户名并配置静态ip

 

添加如下配置:

写道
test Service-Type = Framed-User
Framed-Protocol = PPP,
Framed-IP-Address = 192.168.11.100,
Framed-IP-Netmask = 255.255.255.0

 

注意将上述配置添加到出现DEFAULT之前的位置;

其中test就是客户端拨vpn时所使用的用户名,Framed-IP-Address即要分配给客户端的ip,Framed-IP-Netmask是子网掩码了

 

添加上去后保存退出,并重启radius,这样客户端再接入时分配的地址就是192.168.11.100了

 

 

②:给所有客户端动态分配ip

 

这个其实跟上述配置差不多,一点小改动就可以

 

同样,在出现DEFAULT之前添加如下配置:

写道
DEFAULT Service-Type = Framed-User
Framed-Protocol = PPP,
Framed-IP-Address = 192.168.11.100+,
Framed-IP-Netmask = 255.255.255.0
 

改动很小,无非就是将用户名改成DEFAULT,Framed-IP-Address后面在加个“+”,意思就是从192.168.11.100开始,依次分配;

 

保存退出,并重启radius,这样所有接入客户端将会从radius得到ip地址;

 

查看debug信息,可以看到相关log

写道
Sending Access-Accept of id 227 to 192.168.4.130 port 53889
Framed-Protocol = PPP
Framed-IP-Address = 192.168.11.100
Framed-IP-Netmask = 255.255.255.0
Service-Type := Framed-User

 

很显然,通过users文件能够直接决定radius向nas发送Access-Accept数据包中所包含的相关attribute信息,其中最重要的就是Framed-IP-Address属性信息了

 

有一点不要忘了,那就是必须在nas(radius client)上添加对应的nat iptables,这个肯定少不了的


3、与数据库配置的关系

 

一开始,我也弄了很久,不管怎么配置users文件,就是不起作用,以为是需要其他修改配置文件,反复查找资料,十分确定就是修改users文件;但是为什么我都配置好了却不起作用呢?

 

整个radius对接过程中,查看debug log可以发现,在验证客户端的用户名密码时,radius会先加载files模块,然后根据用户名去匹配users中的配置,查看匹配那一行,若没有精确到用户名的配置,则最终会跟default相匹配,同时会打印出log

写道
[files] users: Matched entry test at line 85
++[files] returns ok

 

这里可以看到,客户端已经从users匹配了相关信息,并会将获取的这些attribute信息,等于这时已经向Accept-Access数据包中添加了相关信息;

 

但是radius接下来会加载sql模块,如果sql里配置了相关Framed-IP-Address信息的话,那么Accept-Access数据包的Framed-IP-Address信息就会被修改成数据中读取到的值

 

比如我就悲催的以前添加过下述配置

写道
mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type',':=','Framed-User');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Address',':=','255.255.255.254');

mysql> insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask',':=','255.255.255.0');

 

很显然,如果mysql添加过上述配置,那么users文件再怎么修改都将无动于衷

 

解决方法理论上有两个:

 

1、删除mysql中的对应Framed-IP-Address表项;

 

2、调整sites-enabled/default中authorize{}的files,sql的前后位置,将两者对调,这样就能改变他们加载时的先后顺序;

 

第一种方法肯定可行的;

命令如下:

写道
mysql> delete from radgroupreply where attribute = "Framed-IP-Address";

mysql> delete from radgroupreply where attribute = "Framed-IP-Netmask";
 

 

 

 

第二个方法,很抱歉,不可行,it doesn't work ; 至于为什么,我也不太清楚;

 

 

 

OK,先就这样吧

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值