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 查看配置文件
- CREATE USER 'radius'@'localhost';
- SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('radpass');
- GRANT SELECT ON radius.* TO 'radius'@'localhost';
- GRANT ALL on radius.radacct TO 'radius'@'localhost';
- 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
- [Unit]
- Description=FreeRADIUS high performance RADIUS server.
- After=syslog.target network.target ipa.service dirsrv.target krb5kdc.service
- 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 查看配置文件
- client localhost {
- ipaddr = 127.0.0.1
- proto = *
- secret = testing123
- require_message_authenticator = no
- }
需要注意,上面配置的127.0.0.1主要用於測試,將來真正的客戶端要按照下面的信息進行補充:
將來你真正的 raidus 客戶端,如路由器、交換機等需要在這里配置ip信息,例如:
-
client x.x.x.x { # 這里的 x.x.x.x 就是交換機或者路由器等設備的IP地址
-
ipaddr = x.x.x.x # 交換機或者路由器等設備的IP地址
-
secret = xxxxxxxxxx # 自己定義的交換機或者路由器等設備和 radius 服務器的連接密碼
-
# require_message_authenticator = no # 這個可以注釋掉,不用管
-
}
可以執行 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文件夾中
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\nStack trace:\n#0 /var/www/html/daloradius/dologin.php(49): include()\n#1 {main}\n 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