freeradius源码安装及相关问题解释
当前版本基于:2.1.12
安装freeradius
=============================================================================
源码安装的话没什么好说的、去官网下载最新源码包、解压安装
$ ./configure
$ make
$ make install
源码安装完毕后、运行调试模式
radiusd -X
成功运行就表示安装好了、
相关目录:
配置文件目录:/usr/local/etc/raddb
运行radius遇到的问题
=============================================================================
安装后出现类似的问题
问题一:
radiusd: error while loading shared libraries: libfreeradius-radius-2.1.3.so: cannot open shared object file: No such file or directory
这个就是radiusd找不到相关so文件、迩可以通过find命令来定位这个文件目前在哪里、通常经过源码安装方式安装后都会在/usr/local/lib目录下、把这个路径加入环境变量就可以了、
先执行
export LD_LIBARY_PATH="/usr/local/lib"
再执行
/sbin/ldconfig -v
问题二:
也是在执行调试模式时
radiusd -X
遇到"unable to write 'random state'"
这个时候、迩把.rnd删除就行了、通常是在用户目录或者openssl的相关目录中、迩可以自行使用find命令来搜索一下具体的位置然后删除
sudo rm ~/.rnd
.rnd文件是用户安装一些软件产生的key file、随机文件来的、删除了也没关系、因为下次需要的话相关程序也会再次自动生成它、这里可能就是因为当前.rnd文件占用了所以导致radiusd服务器无法生成一个新的rnd文件所以导致错误的、
测试服务端和客户端的连接
=============================================================================
当迩成功运行了radiusd的调试模式后、radiusd就一直处于等待请求的状态、下面莪们试试使用radtest来测试一下验证服务是否工作正常、打开配置文件目录:/usr/local/etc/raddb、编辑其中的users文件
vim users
这个文件就是定义radiusd用户的文件、其实正式使用验证服务器的话应该是使用数据库如mysql来管理这些用户数据的、不过现在开发测试阶段就先把用户信息使用这个users的文本方式来简单记录一下吧、打开users后、默认的users文件有几百行、不过大多数是注释文件、起作用的就是几行、规定了连接使用的协议等等、使用查找命令查找“Cleartext-Password”、会找到几个已经被注释掉的用户信息、把这个反注释掉令其生效就可以使用该用户了、比如莪们将使用steve这个用户来登录
steve Cleartext-Password := "testing"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = "std.ppp",
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP
把这几行反注释掉、然后就会得到一个用户名为steve和密码为testing的用户了、保存users文件、然后再重启radiusd服务器、
radiusd -X
然后再新建一个终端窗口、使用radtest命令来测试用户
radtest steve testing localhost 1812 testing123
观察两个窗口的变化、服务器和客户端、服务器会经过一连串的变化、然后客户端那里会显示出Access-Accept的提示、就表示用户已经通过验证了、而服务器则会又进入等待状态进行下一次的接收请求的状态、现在就已经完成用户的验证、服务器端和客户端都已经正常了、莪们再回到users文件把steve这个用户注释掉重启服务器、接着下一步就是使用mysql来替代这个users文件、
P.S.:如果使用radtest时遇到这个问题
radclient: socket: cannot initialize udpfromto: Function not implemented
把localhost替换成127.0.0.1就可以了