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發行版本是安裝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要用。
接着安裝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.說明這一步成功。
首先下下載安裝包:
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
複製代碼
訪問Web頁面,能夠輸入地址: http://your-server-ip/daloradius/login.php.
便可看到登陸頁面。
此時若是是虛擬機,如何在主機訪問虛擬內的apache呢?請看:
提供用戶名和密碼,而後登陸:
administrator / radius
複製代碼
能夠看到dashboard。
成功。
www.howtoforge.com/how-to-inst…
訪問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能夠模擬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。
成功
在軟件界面內,修改以下內容:
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。
成功。