特别提示
MYSQL 5.7 之后需要sudo,这一块坑我很久。
sudo mysql --user=root mysql
这样是不行的,不管口令对不对都是不行的:
mysql -u root -p
网上给出一堆的改口令的方法,都没有啥用。 ref:stackoverflow.com/a/52742386/…
其中的最直接的答案,并没有被选中打钩的,建议大家去点击提示此答案。
另外,后来某天我有使用了psql,他也类似的妖儿子,必须得这样:
sudo -u postgres psql
正文开始
全家桶包括LAMP,FreeRadius,DaloRadius。
DaloRadius - manage FreeRADIUS from the web browser. FreeRadius - A free AAA Server LAMP - 其中包括了Apache ,Mysql ,PHP .L = Linux.
选择Linux分发版本
最佳的选择的Linux发行版本是安装ubuntu server ,记得选择LAMP,其中包括了Apache ,Mysql ,PHP .L = Linux.
我最开始使用的是WSL(Windows Linux Subsystem),当输入service mysql start 时,总是提示,无解。好处就是这个玩意是在Windows Store内的,下载速度奇快。
mysql: unrecognized service
LAMP安装好后,需要记得安装php的Pear和它的DB模块,因为DaloRadius要用此模块:
sudo apt install php-pear
sudo pear install DB
配置数据库
现在,LAMP我们都有了,其中包括Mysql。可以执行命令:
sudo mysql -u root -p
一定要加sudo,否则一直报错。是5.7以来的一个新的安全机制,必须这样做。
进入mysql控制台,然后执行命令创建radiusdb,和radius用户,然后刷新授权,退出:
CREATE DATABASE radiusdb;
GRANT ALL ON radiusdb.* TO radius@localhost IDENTIFIED BY "1";
FLUSH PRIVILEGES;
EXIT;
一个空的数据库和对应的权限准备完毕。后面的FreeRadius和DaloRadius要用。
Install FreeRADIUS
接着安装freeradius套件:
apt-get install freeradius freeradius-mysql freeradius-utils
这里居然说找不到包。在网站https://packages.ubuntu.com/是可以找到的。怎么办?先更新下再说:
sudo apt-get update
执行update的目的,是获得最新的包列表,这样我们就可以找到包了。
完成后,把数据库模式sql导入到radiusdb内:
mysql -u root -p radiusdb < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
可能会提示你不能有权限访问...../schema.sql文件。那么可以:
sudo su
然后在执行此命令行。
然后创建一个符号链接(symbolic link),把mods-available的sql链接到mods-enabled内:
ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
再次登录mysql,切换数据库,然后显示表清单:
mysql -u root -p
use radiusdb;
show tables;
可以看到这样的输出:
+--------------------+
| Tables_in_radiusdb |
+--------------------+
| nas |
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radpostauth |
| radreply |
| radusergroup |
+--------------------+
说明数据库模式导入成功。
编辑/etc/freeradius/3.0/mods-enabled/sql 文件,设置数据库访问:
nano /etc/freeradius/3.0/mods-enabled/sql
内容如下:
sql {
driver = "rlm_sql_mysql"
dialect = "mysql"
# Connection info:
server = "localhost"
port = 3306
login = "radius"
password = "1"
# Database table configuration for everything except Oracle
radius_db = "radiusdb"
}
read_clients = yes
client_table = "nas"
修改模块文件的权属:
chgrp -h freerad /etc/freeradius/3.0/mods-available/sql
chown -R freerad:freerad /etc/freeradius/3.0/mods-enabled/sql
启动服务:
systemctl restart freeradius
查看状态:
systemctl status freeradius
BOOM! 出错了。
sudo service freeradius restart
OUTPUT: Job for freeradius.service failed because the control process exited with error code. See "systemctl status freeradius.service" and "journalctl -xe" for details.
按照错误提示,执行它说的命令:
journalctl -xe"
可以看到详细错误信息:MySql Error:Access Deny for user'freerad' .
管他的,重启大法启动一下。再查状态就对了。
systemctl status freeradius
freeradius.service - FreeRADIUS multi-protocol policy server
如果你没有sytemctl ,也可以调试模式启动。首先找到freeradius的位置:
whereis freeredius
执行调试模式:
/usr/sbin/freeradius -X
看到消息Ready to process request.说明这一步成功。
Install daloRADIUS
首先下下载安装包:
wget https://github.com/lirantal/daloradius/archive/master.zip
解压:
unzip master.zip
把解压内容放到Apache的public内:
mv daloradius-master /var/www/html/daloradius
导入Dalo的数据库表:
cd /var/www/html/daloradius
mysql -u root -p radiusdb < contrib/db/fr2-mysql-daloradius-and-freeradius.sql
mysql -u root -p radiusdb < contrib/db/mysql-daloradius.sql
设置权限:
chown -R www-data:www-data /var/www/html/daloradius/
chmod 664 /var/www/html/daloradius/library/daloradius.conf.php
编辑数据库连接文件:
nano /var/www/html/daloradius/library/daloradius.conf.php
属于内容如下,一遍可以连接数据库:
$configValues['DALORADIUS_VERSION'] = '1.1-1';
$configValues['DALORADIUS_DATE'] = '28 Jul 2019';
$configValues['FREERADIUS_VERSION'] = '2';
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = '1';
$configValues['CONFIG_DB_NAME'] = 'radiusdb';
重启FreeRadius和apache2,或者就重启电脑:
systemctl restart freeradius
systemctl restart apache2
查看apache2状态:
systemctl status apache2
You should see the following command:
? apache2.service - The Apache HTTP Server
VISIT WEB
访问Web页面,可以输入地址: http://your-server-ip/daloradius/login.php.
即可看到登录页面。
此时如果是虚拟机,如何在主机访问虚拟内的apache呢?请看:
提供用户名和密码,然后登录:
administrator / radius
可以看到dashboard。
成功。
www.howtoforge.com/how-to-inst…
troubleshooting
访问Web的时候,如果遇到了HTTP 500 ,查看
/var/log/apache2/error.log
获得具体报错: failed open 'db.php' class DB
需要安装pear-db库:
sudo apt install php-pear
sudo pear install DB
再次登录,终于...............
NTRadPing 验证
NTRadPing可以模拟NAS等RADIUS Client ,发起登录(Authenication),记账(Account)。
首先,在Web内添加用户,并保存:
UserName:a
Password:a
再添加NAS,并保存:
NAS IP/Host:192.168.1.189 // 你的NTRadPing所在电脑的IP,设置错了的话,从这里发来的包会被服务器丢弃
NAS Secret:sharedkey
NAS Type:other
Short Name:ClientNew
然后启动NTRadPing,填写:
Server 192.168.1.165 //Radius Address
Port :1812 // 1812 认证端口,如果是记账Account,需要改为1813
Secret :sharedkey // 和你添加的NAS的secret一样
User-Name : a
Password :a
Require type : Authentication Request
点击Send,应该看到Access-Accept。
成功
NTRadPing 记账
在软件界面内,修改如下内容:
Port :1813 // 1812 认证端口,如果是记账Account,需要改为1813
Require type : Accounting Start
点击Send,发现没有接到响应。查看后台,发现调试模式的FreeRadius在控制台打印:
rlm_sql_mysql: MySQL error 'Unknown column 'acctupdatetime' in 'field list''
添加需要的字段:
ALTER TABLE radacct ADD acctupdatetime datetime NULL default NULL AFTER acctstarttime;
ALTER TABLE radacct ADD acctinterval int(12) default NULL AFTER acctstoptime;
ALTER TABLE radacct ADD KEY(acctinterval);
ALTER TABLE radacct ADD UNIQUE KEY(acctuniqueid);
ALTER TABLE radacct DROP column acctstartdelay;
ALTER TABLE radacct DROP column acctstopdelay;
ALTER TABLE radacct DROP column xascendsessionsvrkey;
再次发起记账消息,应看到Accounting-Response。
成功。