第七节:daloradius常见问题汇总

1、daloradius无法查看连接日志

如下图所示

daloradius无法查看连接记录

解决方法:

vim /var/www/html/daloradius/library/daloradius.conf.php
将
$configValues['FREERADIUS_VERSION'] = '3';
修改为
$configValues['FREERADIUS_VERSION'] = '2';

注意:如果不关闭,将在daloradius中无法查看日志信息

2、daloradius查看不了radius 日志

解决方法

chmod 755 /var/log/radius/
chmod 644 /var/log/radius/radius.log

daloradius查看不了radius日志

注意:如果不关闭,将在daloradius中无法查看日志信息

3、daloradius查看不了linux系统日志

daloradius查看不了linux系统日志

解决方法

chmod 644 /var/log/messages

注意:如果不关闭,将在daloradius中无法查看日志信息

4、Accounting 页面查看不了在线用户,以及历史登陆统计

在daloradius 查看accounting在线用户时,配置调试模式下看到了sql 的错误,找不到表字段。

解决方法:

vi /usr/local/etc/strongswan.d/charon/eap-radius.conf

1)修改 accounting = yes

2)登陆mysql数据库,删除radacct表 并重新建立

mysql -u radius -p

输入密码

在sql中执行如下语句

DROP TABLE radacct;
CREATE TABLE radacct (
  radacctid bigint(21) NOT NULL auto_increment,
  acctsessionid varchar(64) NOT NULL default '',
  acctuniqueid varchar(32) NOT NULL default '',
  username varchar(64) NOT NULL default '',
  groupname varchar(64) NOT NULL default '',
  realm varchar(64) default '',
  nasipaddress varchar(15) NOT NULL default '',
  nasportid varchar(15) default NULL,
  nasporttype varchar(32) default NULL,
  acctstarttime datetime NULL default NULL,
  acctupdatetime datetime NULL default NULL,
  acctstoptime datetime NULL default NULL,
  acctinterval int(12) default NULL,
  acctsessiontime int(12) unsigned default NULL,
  acctauthentic varchar(32) default NULL,
  connectinfo_start varchar(50) default NULL,
  connectinfo_stop varchar(50) default NULL,
  acctinputoctets bigint(20) default NULL,
  acctoutputoctets bigint(20) default NULL,
  calledstationid varchar(50) NOT NULL default '',
  callingstationid varchar(50) NOT NULL default '',
  acctterminatecause varchar(32) NOT NULL default '',
  servicetype varchar(32) default NULL,
  framedprotocol varchar(32) default NULL,
  framedipaddress varchar(15) NOT NULL default '',
  PRIMARY KEY (radacctid),
  UNIQUE KEY acctuniqueid (acctuniqueid),
  KEY username (username),
  KEY framedipaddress (framedipaddress),
  KEY acctsessionid (acctsessionid),
  KEY acctsessiontime (acctsessiontime),
  KEY acctstarttime (acctstarttime),
  KEY acctinterval (acctinterval),
  KEY acctstoptime (acctstoptime),
  KEY nasipaddress (nasipaddress)
) ENGINE = INNODB;
alter table radacct add acctupdatetime datetime NULL default NULL after acctstarttime, add acctinterval int(12) default NULL after acctstoptime, add KEY acctinterval (acctinterval),drop KEY acctuniqueid, add UNIQUE KEY acctuniqueid (acctuniqueid);
exit;
#重启strongswan与radius
systemctl restart radiusd
systemctl restart strongswan

一切显示正常

daloradius正常显示nas信息

6、在daloradius主页面,Server status ip、mask、MAC不显示。

查找web获取本机的server信息时的php页面,发现php文件定义的是ethxxx(当然如果你的centos7中网卡是ethxx,可以忽略下面网卡获取的修改),且mask 和mac 的显示,在该文件的定义中re模块也是centos6.X之前能用的,centos7之后就不能用了。错误显示图如下:

daloradius网卡信息显示不全

解决:修改监控状态页面的php文件,默认相对(网站)路径:

vim /var/www/html/daloradius/library/exten-server_info.php
将/eth[0-9][0-9]*
修改成    /enp[0-9][0-z][0-9][0-9][0-9][0-9][0-9][0-9]*
 
Ip 地址:203 行、204行
将    /inet addr:[0-9\.]*
修改成    /inet [0-9\.]*

然后将split(":", $match[0])
修改成    split(" ", $match[0])
 
 Mask 地址: 240 行、241行
将    /mask:[0-9\.]*
修改成    /netmask [0-9\.]*

然后将split(":", $match[0])
修改成    split(" ", $match[0])
 
 MAC 地址:221 行
将    hwaddr
修改成    ether

修改完成后,显示正常,如下图:

daloradius网卡信息显示正确

7、radiusd -X  无法启动提示Error binding to port for 0.0.0.0 port 1812错误

Failed binding to auth address * port 1812 bound to server default: Address already in use

/etc/raddb/sites-enabled/default[59]: Error binding to port for 0.0.0.0 port 1812

解决方法:

ps aux | grep radius   找到进程,

[root@Centos7 ~]# ps aux | grep radi
radiusd   3452  0.0  0.7 269376 14372 ?        Ssl  08:42   0:00 radiusd
root      3955  0.0  0.0 112676   984 pts/1    R+   09:00   0:00 grep --color=auto radi
kill -9 3452

8、daloradius提示Unknown column ‘acctupdatetime’ in ‘field list’错误,并且无法连接vpn、无法查看在线用户

查看日志显示如下信息

rlm_sql_mysql: MySQL error ‘Unknown column ‘acctupdatetime’ in ‘field list”

解决方法如下:

删除radacct表 并重新建立

mysql -u radius -p

输入密码

在sql中执行如下语句

use radius;
DROP TABLE radacct;
CREATE TABLE radacct (
  radacctid bigint(21) NOT NULL auto_increment,
  acctsessionid varchar(64) NOT NULL default '',
  acctuniqueid varchar(32) NOT NULL default '',
  username varchar(64) NOT NULL default '',
  groupname varchar(64) NOT NULL default '',
  realm varchar(64) default '',
  nasipaddress varchar(15) NOT NULL default '',
  nasportid varchar(15) default NULL,
  nasporttype varchar(32) default NULL,
  acctstarttime datetime NULL default NULL,
  acctupdatetime datetime NULL default NULL,
  acctstoptime datetime NULL default NULL,
  acctinterval int(12) default NULL,
  acctsessiontime int(12) unsigned default NULL,
  acctauthentic varchar(32) default NULL,
  connectinfo_start varchar(50) default NULL,
  connectinfo_stop varchar(50) default NULL,
  acctinputoctets bigint(20) default NULL,
  acctoutputoctets bigint(20) default NULL,
  calledstationid varchar(50) NOT NULL default '',
  callingstationid varchar(50) NOT NULL default '',
  acctterminatecause varchar(32) NOT NULL default '',
  servicetype varchar(32) default NULL,
  framedprotocol varchar(32) default NULL,
  framedipaddress varchar(15) NOT NULL default '',
  PRIMARY KEY (radacctid),
  UNIQUE KEY acctuniqueid (acctuniqueid),
  KEY username (username),
  KEY framedipaddress (framedipaddress),
  KEY acctsessionid (acctsessionid),
  KEY acctsessiontime (acctsessiontime),
  KEY acctstarttime (acctstarttime),
  KEY acctinterval (acctinterval),
  KEY acctstoptime (acctstoptime),
  KEY nasipaddress (nasipaddress)
) ENGINE = INNODB;
systemctl restart radiusd

systemctl restart strongswan