zoukankan      html  css  js  c++  java
  • CentOS7下搭建LAMP+FreeRadius+Daloradius Web管理

    FreeRADIUS官网:http://freeradius.org/

    daloRADIUS Web管理页面下载地址:https://sourceforge.net/projects/daloradius/

    CentOS6.5下搭建LAMP+FreeRadius+Daloradius Web管理和TP-LINK路由器、H3C交换机连接,实现,上网认证和记账功能:https://www.cnblogs.com/opsprobe/p/9420502.html(较详细)

     

    一、搭建LAMP服务环境:

    (1)安装Apache服务器

    yum -y install httpd httpd-devel

     

    systemctl enable httpd   # 设置http服务为开机启动

    systemctl start httpd      # 启动http服务

     

    (2)安装MariaDB

    为什么不用MySQL? 
    因为MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 

    安装

    yum install -y mariadb-server mariadb

     

    设置MariaDB开机启动和启动MariaDB服务

    systemctl start mariadb

    systemctl enable mariadb

     

    查看MariaDB状态,running表示已经在运行

    systemctl status mariadb

     

    初始设置MariaDB,设置root密码,出于安全考虑,考虑删除匿名用户和禁用远程根登录,参见下面的示例配置。

    mysql_secure_installation

     

    Set root password? [Y/n]  y

    New password:

    Re-enter new password:

    Password updated successfully!

    Reloading privilege tables..

     ... Success!

     

    Remove anonymous users? [Y/n] y

    Disallow root login remotely? [Y/n] y

    Remove test database and access to it? [Y/n] y

    Reload privilege tables now? [Y/n] y

     

    创建radius数据库和用户名密码

    mysql -u root -p     回车后输入mysql的root管理员帐号密码,然后

    MariaDB [(none)]> create database radius;    # 创建radius数据库

    MariaDB [(none)]> grant all on radius.* to radius@"localhost" identified by "radpass";    # GRANT 权限 ON 数据库.* TO 用户名@主机名IDENTIFIED BY "密码";   对某个特定数据库中的所有表单给予授权和创建数据库管理账户

    MariaDB [(none)]> flush privileges;    # mysql 新设置用户或更改密码后需用flush privileges刷新 mysql 的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。

    MariaDB [(none)]> exit    # 退出MariaDB数据库

     

    (3)安装PHP7

    curl 'https://setup.ius.io/' -o setup-ius.sh

    bash setup-ius.sh

    yum remove php-cli mod_php php-common

    yum -y install mod_php70u php70u-cli php70u-mysqlnd php70u-devel php70u-gd php70u-mcrypt php70u-mbstring php70u-xml php70u-pear

     

    查看php版本

    php -version

    PHP 7.0.32 (cli) (built: Sep 13 2018 16:50:42) ( NTS )

    Copyright (c) 1997-2017 The PHP Group

    Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

     

    测试PHP,Apache网站数据根目录下新建info.php命名的php网页

    vim /var/www/html/info.php

    输入以下内容:

    <?php

    phpinfo();

    ?>

    保存退出

     

    重启Apache服务器,用浏览器访问info.php网页,显示php信息说明安装成功了。

    systemctl restart httpd.service

    http://your ip address//info.php

     

    二、安装FreeRadius                                          

    yum -y install freeradius freeradius-utils freeradius-mysql

     

    等待下载完成之后出现:Complete,即完成安装。

     

    启动radius和设置为开机启动

    systemctl start radiusd.service

    systemctl enable radiusd.service

     

    查看Radius使用的端口,然后添加Radius服务到防火墙中;

    cat /usr/lib/firewalld/services/radius.xml

      

    <?xml version="1.0" encoding="utf-8"?>

    <service>

      <short>RADIUS</short>

      <description>The Remote Authentication Dial In User Service (RADIUS) is a protocol for user authentication over networks. It is mostly used for modem, DSL or wireless user authentication. If you plan to provide a RADIUS service (e.g. with freeradius), enable this option.</description>

      <port protocol="tcp" port="1812"/>

      <port protocol="udp" port="1812"/>

      <port protocol="tcp" port="1813"/>

      <port protocol="udp" port="1813"/>

    </service>

     

    firewall-cmd --state    # 查看防火墙状态,启动状态才能添加规则,centos7中默认防火墙就是firewalld,一般不需要额外设置。

    firewall-cmd --add-service=radius --permanent     #  添加 Radius 服务到 firewalld 防火墙中。

    success

    firewall-cmd --reload    # 让配置的防火墙策略立即生效

    success

    firewall-cmd --list-services    # 列举区域中启用的服务

    radius

     

    三、配置FreeRadius

    cd /etc/raddb/mods-config/sql/main/mysql/

    mv setup.sql setup.sql-backup     # 备份 setup.sql 配置文件

    grep -v "#" /etc/raddb/mods-config/sql/main/mysql/setup.sql-backup > /etc/raddb/mods-config/sql/main/mysql/setup.sql     # 过滤有 “#” 注释符号的信息行

    进入 vim setup.sql 查看配置文件

    1. CREATE USER 'radius'@'localhost';
    2. SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('radpass');
    3. GRANT SELECT ON radius.* TO 'radius'@'localhost';
    4. GRANT ALL on radius.radacct TO 'radius'@'localhost';
    5. GRANT ALL on radius.radpostauth TO 'radius'@'localhost';

    mysql -u root -p   回车,输入密码后

    然后执行source /etc/raddb/mods-config/sql/main/mysql/setup.sql

    然后 use radius 回车,打开radius数据库

    导入 schema.sql 表的信息

    source /etc/raddb/mods-config/sql/main/mysql/schema.sql

    导入完成后,可以用命令查看导入的数据表的信息

    use radius;        # 打开radius数据库

    show tables;      # 显示radius数据库里的所有表

     

    可以看到如下的表结构

    +------------------+

    | Tables_in_radius |

    +------------------+

    | nas              |

    | radacct          |

    | radcheck         |

    | radgroupcheck    |

    | radgroupreply    |

    | radpostauth      |

    | radreply         |

    | radusergroup     |

    +------------------+

     

    MySQL中表结构的定义

     

    针对FreeRadius3,数据表的设计和结构定义在下面的文件中:

    /etc/raddb/sql/mysql/schema.sql     # 主数据库定义,8个表,包括

    nas   # 网络设备表

    radacct     # 计费情况表

    radcheck   # 用户检查信息表

    radgroupcheck   # 用户组检查信息表

    radgroupreply    # 用户组回复信息表

    radpostauth    # 认证后处理信息,可以包括认证请求成功和拒绝的记录。

    radreply    # 用户回复信息表

    radusergroup     # 用户和组关系表

     

    exit      # 退出 mysql 数据库。

    为/etc/raddb/mods-enabled创建软连接

    ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/

     

    配置SQL模块/ raddb/mods-available/sql,并更改数据库连接参数,以适合自己的配置环境:

    vim /etc/raddb/mods-available/sql

     

         31         #driver = "rlm_sql_null"

         32         driver = "rlm_sql_mysql"

     

         88         #dialect = "sqlite"

         89         dialect = "mysql"

         90

         91         # Connection info:

         92         #

         93         server = "localhost"

         94         port = 3306

         95         login = "radius"

         96         password = "radpass"

         97

         98         # Database table configuration for everything except Oracle

         99         radius_db = "radius"

     

       247         read_clients = yes

     

       250         client_table = "nas"

     

    其他配置默认无需更改。

    然后,将 /etc/raddb/mods-enabled/sql 所属组更改为radiusd:

    chgrp -h radiusd /etc/raddb/mods-enabled/sql

     

    添加启动服务,调整FreeRadius与MariaDB的启动顺序,FreeRadius必须在MariaDB启动之后启动,在[Unit]部分,增加After=mariadb.service,如下所示: 

    systemctl enable radiusd.service

    vim /etc/systemd/system/multi-user.target.wants/radiusd.service

     

    After=mariadb.service

     

    1. [Unit]
    2. Description=FreeRADIUS high performance RADIUS server.
    3. After=syslog.target network.target ipa.service dirsrv.target krb5kdc.service
    4. After=mariadb.service

     

    添加客户端(路由器、交换机等设备)连接设置,ip可以自由更改。

    mv /etc/raddb/clients.conf /etc/raddb/clients.conf-backup     # 备份 /etc/raddb/clients.conf 配置文件

    grep -v "#" /etc/raddb/clients.conf-backup > /etc/raddb/clients.conf      # 过滤有 # 注释符号的信息行

     

    进入 vim /etc/raddb/clients.conf 查看配置文件

    1. client localhost {
    2.         ipaddr = 127.0.0.1
    3.         proto = *
    4.         secret = testing123
    5.         require_message_authenticator = no
    6. }

    需要注意,上面配置的127.0.0.1主要用于测试,将来真正的客户端要按照下面的信息进行补充:

    将来你真正的 raidus 客户端,如路由器、交换机等需要在这里配置ip信息,例如:

    1. client x.x.x.x {                  # 这里的 x.x.x.x 就是交换机或者路由器等设备的IP地址

    2.    ipaddr = x.x.x.x            # 交换机或者路由器等设备的IP地址

    3.    secret = xxxxxxxxxx      # 自己定义的交换机或者路由器等设备和 radius 服务器的连接密码

    4.    # require_message_authenticator = no     # 这个可以注释掉,不用管

    5. }

    可以执行 cat /var/log/radius/radius.log 去查看radius服务的日志看有没有错误。

     

    四、安装FreeRADIUS管理界面Daloradius

    进入Apache网站根目录,下载 daloradius 源文件

    cd /var/www/html/

    wget https://github.com/lirantal/daloradius/archive/master.zip

    如出现 -bash: wget: command not found 等就用下面的命令安装相应软件,没出现忽略这步。

    yum -y install wget unzip zip

    解压压缩包,修改文件夹名称

    unzip master.zip

    mv daloradius-master/ daloradius

     

    下载daloradius-0.9-9.tar.gz,解压后合并到daloradius文件夹中

    wget http://liquidtelecom.dl.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz

    tar -zxvf daloradius-0.9-9.tar.gz

    mv daloradius-0.9-9 daloradius

     

    进入daloradius目录,导入daloradius数据库

    cd daloradius

    mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql

    mysql -u root -p radius < contrib/db/mysql-daloradius.sql

     

    设置daloradius目录用户组和用户,设置daloradius.conf.php权限

    chown -R apache:apache /var/www/html/daloradius/

    chmod 664 /var/www/html/daloradius/library/daloradius.conf.php

     

    设置daloradius数据库连接信息,打开daloradius.conf.php文件,修改CONFIG_DB_USER,CONFIG_DB_PASS,CONFIG_DB_NAME。

    vim /var/www/html/daloradius/library/daloradius.conf.php

    (28-33行)
    $configValues['CONFIG_DB_ENGINE'] = 'mysql';
    $configValues['CONFIG_DB_HOST'] = 'localhost';
    $configValues['CONFIG_DB_PORT'] = '3306';          # 连接mysql数据库的端口
    $configValues['CONFIG_DB_USER'] = 'root';            # 连接mysql数据库的账户
    $configValues['CONFIG_DB_PASS'] = ' ';                 # 连接mysql数据库账号的密码
    $configValues['CONFIG_DB_NAME'] = 'radius';        # 连接mysql的radius数据库

    下面还有几个 daloradius 的 bug,默认配置中有几个文件路径和我们导入的不一样,把它改过来:

    $configValues['CONFIG_FILE_RADIUS_PROXY'] = '/etc/raddb/proxy.conf';(68行)

    $configValues['CONFIG_PATH_DALO_VARIABLE_DATA'] = '/var/www/html/daloradius/var'; (70行)

    $configValues['CONFIG_MAINT_TEST_USER_RADIUSSECRET'] = 'testing123'; (88行)  # 注意这条,要和 /etc/raddb/clients.conf 文件设置的secret = xxxxxxxxxx 值一样。

    配置完成后保存退出

     

    重启radius、maridb、http服务

    systemctl restart radiusd.service

    systemctl restart mariadb.service

    systemctl restart httpd

    如果提示:Warning: radiusd.service changed on disk. Run ‘systemctl daemon-reload’ to reload units. 执行以下的命令,没有上面提示就忽略此步

    systemctl daemon-reload    # 重新加载守护进程

    systemctl restart radiusd.service

     

    cat  /etc/httpd/logs/error_log   # 查看 http 服务的日志,发现有以下错误:

    PHP Fatal error:  Uncaught Error: Class 'DB' not found in /var/www/html/daloradius/library/opendb.php:86 Stack trace: #0 /var/www/html/daloradius/dologin.php(49): include() #1 {main}   thrown in /var/www/html/daloradius/library/opendb.php on line 86

    解决方法:安装php-pear-DB

    yum install -y php-pear-DB

    现在打开浏览器访问 http://your ip address//daloradius 就可以看到daloradius的界面了,默认登录的用户名和密码分别为  username: administrator     password: radius

     

    至此LAMP+FreeRadius+Daloradius Web管理界面已经安装成功,下面是Web界面汉化教程。

     

    五、Daloradius 中文版设置

    进入Daloradius 文件目录,修改config-lang.php,添加中文选项:

    cd /var/www/html/daloradius

    vim config-lang.php

     

    <option value="zh"> Simplified Chinese </option>   (79行)

     

    进入lang目录,修改main.php,增加简体中文文件:(注:因为前面在daloradius文件中合并了master.zip文件,下面的操作就可以不做了,要是只下载了daloradius-0.9-9.tar.gz文件,还需做以下步骤)

    cd lang/

    vim main.php

      (32行)

    case "zh":

                include (dirname(__FILE__)."/zh.php");

                break;

     

    下载文件zh.php;

    链接:https://pan.baidu.com/s/10RX80RMIQRMYkcEzicF7lw,密码:z7wu

     

    返回lang目录,将下载的zh.php文件放入lang目录,重启radius服务;

    cd /var/www/html/daloradius/lang

    将下载的zh.php上传至此目录。

     

    systemctl restart radiusd.service

    systemctl restart httpd

     

    设置Config -> Language Settings ->Simplified Chinese

     

    本文参考自:https://blog.csdn.net/zy517863543/article/details/78914150

  • 相关阅读:
    String&StringBuffer&StringBuilder区别
    linux启动流程简介
    nginx视频直播/点播服务干货分享
    Http协议的认识
    php中对象是引用类型吗?
    nginx与php-fpm 504 Gateway Time-out 排查与解决案例
    php header函数常见用途
    php魔术方法
    ajax 和jsonp 不是一码事 细读详解
    php session redis 配置
  • 原文地址:https://www.cnblogs.com/opsprobe/p/9769555.html
Copyright © 2011-2022 走看看