[原創]CentOS下Radius服務器搭建


一、   實現環境:

1.系統:CentOS  release  6.6 (Final)

2.需要軟件包:

1) freeradius-2.1.12-6.e16.x86_64

  freeradius-mysql-2.1.12-6.e16.x86_64

2) ppp-2.4.5-5.e16.x86_64

3) rp-pppoe-3.10-11.e16.x86_64

4) mysql-5.1.73-3.e16_5.x86_64

  mysql-devel-5.1.73-3.e16_5.x86_64

5) openssl-1.0.1e-30.e16_6.5.x86_64

二、服務器實際部署環境和簡單原理分析:

           Radius是Remote Access Dial In User Service的簡稱。Radius主要用來提供認證(Authentication)機制,用來辨認使用者的身份與密碼,確認通過之后,經由授權(Authorization)使用者登入網域使用相關資源並可提供計費(Accounting)機制,保存使用者的網絡記錄。Freeradius是一款OpenSource軟件,基於radius協議,實現RADIUS AAA(Authentication、Authorization、Accounting)功能。

如下拓撲圖所示,為該radius服務器實際運行環境和功能。

 

 

Radius服務器和接入服務器配合使用實現用戶寬帶賬號計費撥號獲取權限連接Internet網絡。

三、Radius服務器搭建:

      1.安裝CentOS系統配置好網絡之后使用命令:#yum update 更新系統。

      2.查看各個軟件包是否安裝:#rpm –q ppp rp-pppoe freeradius mysql-* openssl

如果沒有安裝則使用命令:#yum install ppp rp-pppoe freeradius-* mysql-* openssl

進行安裝,一般openssl在系統更新之后就已經安裝好了。安裝好各個軟件之后,使用命令:

#wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz 下載ppp源代碼包到創建的/etc/ppp/radius目錄下。(#mkdir /etc/ppp/radius //創建目錄)

下面就對各服務進行配置:

1. 配置 /etc/ppp/options文件:

lock

crtscts

nobsdcomp

nodeflate

nopcomp

      2. 配置/etc/ppp/pppoe-server-options文件,內容為:

# PPP options for the PPPoE server

# LIC: GPL

auth

require-chap

default-mru

default-asyncmap

lcp-echo-interval 60

lcp-echo-failure 5

ms-dns 202.96.128.86

noipdefault

noipx

nodefaultroute

proxyarp

noktune

logfile /var/log/pppd.log

3.讓pppoe服務使用freeradius服務器進行驗證

1)首先更改/etc/ppp/pppoe-server-options,添加兩行設置:

#PPP options for the PPPoE server

#LIC: GPL

auth

require-chap

default-mru

default-asyncmap

lcp-echo-interval 60

lcp-echo-failure 5

ms-dns 202.96.128.86

noipdefault

noipx

nodefaultroute

proxyarp

noktune

->plugin    /usr/lib/pppd/2.4.5/radius.so

->radius-config-file /etc/ppp/radiuds/radiusclient.conf

logfile /var/log/pppd.log

表示讓pppoe-server在運行時加入pppd的radius查檢,可以讓pppoe服務通過freeradius來驗證和記賬。 添加此行之后,可以創建/etc/ppp/radiuds/目錄,創建完之后,需要使用一下ppp的源代碼。 解壓ppp的源代碼目錄:
#tar -xzf ppp-2.4.5.tar.gz

#cd ppp-2.4.5

#cd pppd/plugins/radius/etc/

#cp  *  /etc/ppp/radiuds/

2) 這個目錄下有需要的所有相關的配置文件,其中最重要的是/etc/ppp/radiuds/radiusclient.conf,先打開此文件配置,其內容為(已去掉注釋):

auth_order  radius

login_tries 4

login_timeout 60

nologin  /etc/nologin

issue  /etc/ppp/radiuds/issue

authserver  localhost:1812

acctserver  localhost:1813

servers  /etc/ppp/radiuds/servers

dictionary  /etc/ppp/radiuds/dictionary

login_radius  /usr/local/sbin/login.radius

seqfile  /var/run/radius.seq

mapfile  /etc/ppp/radiuds/port-id-map

default_realm

radius_timeout  10

radius_retries  3

login_local  /bin/login

3) 另外,還需更改此目錄下的servers文件,此文件用來指定讀取的radius服務器的主機名稱以及key值(需要在freeradius配置中指定)。

編輯 /etc/ppp/radius/servers ,設定radius 服務器的位置

localhost  testing123 //這里的testing123是密碼

4) 編輯/etc/ppp/radius/dictionary ,修改一些路徑設置,主要是最后一個dictionary.microsoft 的路徑設置。

INCLUDE /etc/ppp/radiuds/dictionary.microsoft

5) 此時pppoe服務已經可以通過radius認證了。然后進行freeradius的配置。

其中freeradius-mysql包使用來讓freeradius連接mysql數據庫的,本部分還用不到。

首先打開/etc/raddb/clients.conf配置客戶端訪問控制,文件內容如下:

Client localhost {

Secret = testing123

Shortname = localhost

Nastype = other

}

表示客戶端之允許從127.0.0.1的ip登錄radius服務,並且需要驗證的secret為testing123,就是在上面的servers文件中需要配置的信息。若要實現可以從別的機器訪問,請參考注釋獲得幫助。

6)然后配置/etc/raddb/naslist文件,內容為:

# NAS Name  Short Name Type

#portmaster1.isp.com   pm1.NY 

livingston

#portmaster2.isp.com  pm1.LA 

livingston

localhost  local  portslave

此文件用來配置記錄有哪些指定的nas服務器需要使用radius進行記賬。現在指定的是localhost。

7)主控配置文件是radiusd.conf,此文件主要是用來指定freeradius服務器默認的驗證和記賬方式。我們目前使用本地的文件方式,就是/etc/raddb/users文件,在其中添加需要提供給pppoe服務認證的用戶信息,內容如下(用戶名前面一定不能有空格):

Aaa Auth-Type := Local, Simultaneous-Use := 1,User-Password:= "aaa"

[tab]Service-Type = Framed-User,

[tab]Framed-Protocol = PPP,

[tab]Framed-IP-Netmask = 255.255.255.255

其中Simultaneous-Use :=1字段用來設置每個用戶同時登錄的個數。

8) 為了讓radius能正確地調用mysql,還要指定一下庫的位置:

echo /usr/lib >> /etc/ld.so.conf

ldconfig

9) 都配置完畢后,可以通過radiusd -X命令以排錯方式啟動,此時再啟動pppoe-server,用客戶端撥號驗證一下,檢查pppoe服務是否成 功通過freeradius來驗證用戶。如果成功,這一部分完成。可通過service radius restart來正常啟動radius服務。

Radiusd  -X

radtest  aaa  aaa  localhost  0  testing123

看到 Access-Accept 之類的字樣就表示成功了。這時可以正式啟動radiusd。

5. 配置freeradius從mysql數據庫讀取用戶信息

      1.#mysql –u root –p 123  //登錄mysql

      2.>create database radius;  //創建數據庫

      3.>exit  //退出數據庫

      4.#cd /etc/raddb/sql/mysql

      5.#mysql –u root –p radius < schema.sql   //把表導入到數據庫中,到數據庫中查看是否導入7張表

      6.修改/etc/raddb/sites-enabled/default文件,把authorize{}、accounting{}中的sql的注釋#去掉,並把authorize{}中的files的注釋#加上。如下所示:

Authorize{

Chap

Mschap

Suffix

Eap

#files

Sql

Pap

}

Accounting{

Detail

Unix

Redutmp

sql

}

      7.修改mysql數據庫連接的配置文件/etc/raddb/sql.conf

      Server = “localhost”

      Login = “root”

      Password = “123”

      Radius_db  = “radius”  //數據庫名稱

      8.修改/etc/raddb/radius.conf文件:

      將$INCLUDE  sql.conf的注釋#去掉即可。

      9.在數據庫中加入測試賬號:

      #mysql –u root –p 123

      >use radius;

建立組信息:

      >insert into radgroupreply (groupname,attribute,op,value) values (’user’,’Auth-Type’,’:=’,’Local’);

      > insert into radgroupreply (groupname,attribute,op,value) values (’user’,’Service-Type’,’:=’,’Framed-User’);

      > insert into radgroupreply (groupname,attribute,op,value) values (’user’,’Feamed-IP-Address’,’:=’,’255.255.255.255’);

      > insert into radgroupreply (groupname,attribute,op,value) values (’user’,’Framed-IP-Netmask’,’:=’,’255.255.255.0’);

建立用戶信息:

      > insert into radcheck (username,attribute,op,value) values (’test’,’User-Password’,’:=’,’110’);

將用戶加入組中:

      > insert into radusergroup (username,groupname) values (’test’,’user’);

      >exit;  //退出數據庫

四、測試radius

1.#radius –X //以檢錯方式啟動radius服務

2.開另一個終端使用命令:

#radtest  test  110  localhost  10  testing123  進行測試。

如果顯示Access-Accept則表示安裝成功。    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM