上次發過RedHat linux AS 4+Apache2.2.3+MYSQL5.0.27+PHP5.1.4,這個是接上篇文章的,最後還有ros的詳配,等些天整理好了再發出來,呵呵,最好能加精哦,這東東適合新手。以下內容是我以配置筆記的形式發布,每一步都是成功後記錄下來的,我將盡量做到了詳細說明每一步的操作。轉載請註明是偶哦嘿嘿。。adminjun / hackjun
radius的安裝及配置 從http://www.freeradius.org下回來最新的freeradius-1.1.3.tar.gz # tar -zxvf freeradius-1.1.3.tar # cd freeradius-1.1.3 # ./configure --prefix=/usr/local/FreeRadius \ > --with-experimental-modules \ > --with-rlm-sql-lib=/usr/local/mysql/lib/mysql/ \ > --with-rlm-sql-include-dir=/usr/local/mysql/include/mysql/ # make # make install WITH_MYSQL=yes (最後在/etc/rc.conf里加上 radiusd_enable="YES" 好讓radius 伺服器在開機時候自動啟動. 網上很多資料中,在安裝freeradius里,並沒有加上面這麼多參數,如果不加的話,90%會出 現rlm_sql_mysql找不到的情況。 我們現在把freeradius的庫文件路徑/usr/local/freeradius/lib 加到/etc/ld.so.conf文件中 下面我們將freeradius資料庫導入進mysql,這裡我要提醒一下,我們下的freeradius-1.1.3版本里沒有像網上 很 多貼子里說的在/usr/local/src/freeradius-1.1.3/src/modules/rlm_sql/drivers/rlm_sql_mysql中有 db_mysql.sql的文件。這個文件已被改名為mysql.sql,存放在/usr/local/src/freeradius- 1.1.3/doc/examples里,請大家注意 # /usr/local/mysql/bin/mysql -uroot -p密碼 mysql> create database radius --創建radius庫 mysql> \q --退出 # /usr/local/mysql/bin/mysql -uroot -p密碼 radius < /usr/local/src/freeradius- 1.1.3/doc/examples/mysql.sql --導入數據表結構 沒有示表示已經執行了,我們來檢查一下 # /usr/local/mysql/bin/mysql -uroot -p密碼 mysql> use radius --打開radius庫 mysql> show tables; 看到8個表表示正確。 好,mysql的工作做完了。我們開始配置。 編輯/usr/local/freeradius/etc/raddb/radiusd.conf 在1844行找到# sql,去掉前面的#號。(在authorize{}中,如果1844號沒有#sql,可能是由於版本的關係,直接 搜索authorize,在這個裡面可以找到) 在2001行找到# sql,去掉前面的#號。(在accounting{}中,直接搜索也可。) 編輯/usr/local/freeradius/etc/raddb/sql.conf 修改這三行參數,這裡的password是我們mysql的密碼 server="localhost" login="root" 建議用root用戶,免去不必要的麻煩 password="pass" 編輯/usr/local/freeradius/etc/raddb/client.conf client 172.16.1.123 { nas設備的地址 secret =radius 通訊用密碼 shortname =routeros 為這個連接使用的別名 nastype =other } 好了,保存。 我們先加一個測試賬號。 insert into radcheck (username,attribute,op,value) values (『test』,』User-Password』,』:=』, 』test』) 啟動radius調試模式 # /usr/local/radius/sbin/radiusd -X (ros已經配置好pppoe) 這時linux下環境基本配好,現在做web管理,freeradius自帶了一個web管理程序dialup_admin. 直接將/usr/local/src/freeradius- 1.1.3/dialup_admin/文件夾全部拷貝到apach網頁目錄下/usr/local/apach/htdocs下。 修改dialup_admin/conf/下的admin.conf文件中的如下參數: sql_type:mysql sql_server:localhost(sql地址) sql_port:3306 (默認埠) sql_username:root sql_password:root123(密碼) sql_database:radius(資料庫名) 重新載入apach配置文件:直接打開linux的「服務配置」工具,找到httpd,選擇重新啟動 訪問:http://localhost/dialup_admin/htdocs/index.html 能正常打開各頁面就ok了。呵呵。默認是打開的sql調試模式。可以在admin.conf 中找到sql_debug.把true改為false即可關閉。 接筆記本測試。。。通過。 幾點注意:mysql 安裝后,默認只能本地訪問,如果你想用其它工作站上進行管理的話,需要如下操作: Host "xxx.xxx.xxx.xxx" is not allowed to connect to this mysql server. 如何解決客戶端與伺服器端的連接(mysql) 1、進入mysql,創建一個新用戶user: 格式:grant 許可權 on 資料庫名.表名 用戶@登錄主機 identified by "用戶密碼"; grant select,update,insert,delete on *.* to user@10.10.10.10identified by "user"; 查看結果,執行: use mysql; select host,user,password from user; 可以看到在user表中已有剛才創建的user用戶。host欄位表示登錄的主機,其值可以用IP,也可用主機名, 將host欄位的值改為%就表示在任何客戶端機器上能以user用戶登錄到mysql伺服器,建議在開發時設為%。 grant all on *.* to root@root@'%' identified by "密碼" ; all表示所有許可權 update user set host = '%' where user = 'user'; 2、 ./mysqladmin -uroot -p密碼 reload ./mysqladmin -uroot -p密碼 shutdown 3、./mysqld_safe --user-root & 記住:對授權表的任何修改都需要重新reload,即執行第3步。 如果經過以上3個步驟還是無法從客戶端連接,請執行以下操作,在mysql資料庫的db表中插入一條記錄: use mysql; insert into db values ('192.168.88.234','%','user','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); update db set host = '%' where user = 'user';(如果要賦於全部許可權,5.0版本應該是34個Y) 重複執行上面的第2、3步。 下面進行mac地址綁定操作。 為mysql的資料庫radius中的表radcheck增加一個mac欄位,varchar(20)類型 在上面的radiusd.conf中加多一個步驟 post-auth { # See "suthentication Logging Queries" in sql.conf sql #去掉原來的註釋語句
} 修改sql.conf中的authorize_check_query為 #這裡修改驗證方式,加上mac驗證(我是使用了大小寫不敏感的那條sql語句改寫) authorize_check_query = "SELECT id,UserName,Attribute,Value,op FROM ${au thcheck_table} WHERE Username = '%{SQL-User-Name}' and (mac='%{Calling-Station-I d}' or isnull(mac) or mac='') ORDER BY id" 修改postauth_query語句 #change here 把postauth_query改為記錄mac地址的過程了 postauth_query = "UPDATE ${authcheck_table} set mac='%{Calling-Station-I d}' WHERE Username = '%{SQL-User-Name}' and (mac='' or isnull(mac))"