FreeRadius:安裝Radius全家桶的方法

特別提示

MYSQL 5.7 以後須要sudo,這一塊坑我好久。php

sudo mysql --user=root mysql
複製代碼

這樣是不行的,無論口令對不對都是不行的:html

mysql -u root -p
複製代碼

網上給出一堆的改口令的方法,都沒有啥用。 ref:stackoverflow.com/a/52742386/…mysql

其中的最直接的答案,並無被選中打鉤的,建議你們去點擊提示此答案。git

正文開始

全家桶包括LAMP,FreeRadius,DaloRadius。github

DaloRadius - manage FreeRADIUS from the web browser. FreeRadius - A free AAA Server LAMP - 其中包括了Apache ,Mysql ,PHP .L = Linux.web

選擇Linux分發版本

最佳的選擇的Linux發行版本是安裝ubuntu server ,記得選擇LAMP,其中包括了Apache ,Mysql ,PHP .L = Linux.sql

我最開始使用的是WSL(Windows Linux Subsystem),當輸入service mysql start 時,老是提示,無解。好處就是這個玩意是在Windows Store內的,下載速度奇快。數據庫

mysql: unrecognized service
複製代碼

LAMP安裝好後,須要記得安裝php的Pear和它的DB模塊,由於DaloRadius要用此模塊:apache

sudo apt install php-pear
sudo pear install DB
複製代碼

配置數據庫

如今,LAMP咱們都有了,其中包括Mysql。能夠執行命令:ubuntu

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呢?請看:

coderwall.com/p/yx23qw/ac…

提供用戶名和密碼,而後登陸:

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。

成功。

相關文章
相關標籤/搜索