歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

使用Linux做Radius服務器實現對3comRAS1500認證計費

  3COM公司的SuperStack II Remote Access System 1500為中小型企業和Internet 服務提供商提供全面的遠程訪問服務。其在一個平台中集成了非常廣泛的功能,以較低的設備開支,提供了撥入/撥出訪問、采用撥號或幀中繼和專線PPP連接的局域網間路由選擇功能。其具有以下這些特點: *易於安裝。基於Html浏覽器的安裝向導、圖形用戶界面(GUI)和文檔浏覽。 *先進、易於操作。NAT/PAT地址轉換功能提供低成本高效率的共享ISP訪問。DHCP服務器、中繼和代理功能為本地和遠程用戶提供了簡捷的LAN訪問方式。 *訪問方式安全。包括本地驗證,並可與RADIUS、 Windows NT 或NetWare NOS 服務器配合實現遠程驗證功能。 *I/O單元模塊化。模塊化單元,便於I/O卡的添加和擴展以及PRI訪問單元的熱插拔。 *Univerrsal ConnectTM技術。通過同一基本速率的 ISDN 連接,提供了業界領先的模擬連接方式(速率可高達V.90)和 ISDN 撥入訪問方式。 *可伸縮性。將 ISDN 和模擬連接方式集於一身,端口范圍為4至24端口,可以隨著您的需要進行擴展。 3COM RAS1500以較低價位為要求嚴格的用戶提供了企業級網絡的功能和優異性能,因此成為當前國內小型ISP首選的遠程接入服務器(Remonte Network Access Server),在國內各個小型ISP得到了廣泛的應用。但是,雖然RAS1500可以通過網管軟件Transcend Network Supervisor (TNS)提供功能強大易用的記費認證功能,能滿足中小型企業的需求,但是其昂貴的價格使小型ISP望而卻步。因此如何以較低的價格實現RAS1500的認證和記費就成為當前使用RAS1500的小型ISP的難以解決問題。 本文討論了如何使用Linux作為3comRas1500的radius服務器,實現集中化的認證和記費功能,以減少管理的負擔和費用。這裡實現的radius服務器可以實現撥號用戶的集中管理,可以實現撥號用戶賬號和系統賬號集成或分開;並且在撥號賬戶獨立時,實現web界面的管理,如:察看詳細的log信息及各個用戶的記賬信息;實現用戶撥號時間的限定,當該用戶撥號時間到達限定以後,自動斷開,而且不能再撥入。還可以實現用戶的月撥號時間限定,每個月該用戶只能使用限額的時間等等。 一、radius協議原理 Radius是Remote Authentication Dial In User Service-遠程撥入用戶認證服務的簡寫。其定義了在NAS(Network Access Server,撥號服務器,如:pastmaster,3com rs1500等)和集中存放認證信息的radius服務器之間傳輸認證、授權和配置信息的協議。其協議的標准最新的定義在rfc2865和rfc2866中,也可以在www.freeradius.org處得到相關的rfc。RADIUS以Client/Server模式工作,實現了對遠程電話撥號用戶的身份認證、授權和計費功能。其Client端多為網絡訪問服務器(NAS),主要用來將用戶信息傳遞給Server;Server則對用戶進行認證,並反回用戶的配置信息。為保證傳輸的安全性,在Client和Server之間傳送的數據均以MD5方式加密。RADIUS Server端和Client端通信主要有兩種情況,一種是接入認證,另一種是計費請求。 RADIUS是一種基於UDP協議的上層協議,認證服務的監聽端口號為1812,記費服務的監聽端口號為1813。標准的RADIUS數據包的結構包括Code、ID、Length、Authenticator和Attributes幾部分。 Code表示該包的類型。ID號區分不同消息並給予相應的應答。Length為該RADIUS包的總長度,Authenticator 是供MD5加密使用的字符串。Attributes則對應包中具體內容,Attributes包括三個部分:type、length、value。type表示該Attribute的具體含義;length為該type的長度;value是該type的具體值。


1.接入請求 (Access-Request)     type   length     01   USERNAME(以00為結束)   ≥3(其長度為加入00後的長度)     02   PASSWord(以00為結束)   6     04   IP-ADDRESS   6(接入服務器NAS地址)     05   NAS-PORT   6(物理端口號)     3D   PORT-TYPE   6     18   STATE   ≥3(此處可不使用)     1F   CALLING-STATION-ID   ≥3(電話呼入被叫號)     IE   CALLED-STATION-ID   ≥3(電話呼入主叫號)     2C   ACCT-SESSION-ID(以00為結束)   ≥3(以00結束其長度為加入00後的長度)   當用戶請求連接時,Client端給Server發送認證請求,在請求包中帶有username、password、NAS_port等。Server端收到該請求後會到users文件中查找對應信息,當用戶的username和password正確時,Server會返回Access-Accept信息,否則返回Access-Reject信息。 2.同意接入 (Access-Accept)     type   length     06   SERVICE-TYPE   6     07   FRAMED-PROTOCOL   6   其中, SERVICE-TYPE是用戶的服務類型,大部分用戶是Framed(其值為2);FRAMED-PROTOCOL則是用戶所使用的協議,多為PPP(其值為1)或SLIP(其值為2)。Access-Accept包是由Server端發給Client端用戶的數據包,此時Server已認證通過了該用戶,返回確認信號和該用戶的配置參數.這些參數是在users文件中配入的。 3.拒絕接入 (Access-Reject) 無type位。Access-Reject包是用戶認證不通過時,Server發送給client端的否認信號。 4.計費請求 (Accounting-Request)     type   length     01   USERNAME(以00為結束)   ≥3(其長度為加入00後的長度)     04   IP-ADDRESS   6     05   NAS-PORT   6     3D   PORT-TYPE   6     28   ACCT-STATUS-TYPE   6(1:start;2:stop)     29   ACCT-DELAY-TIME   6     2C   ACCT-SESSION-ID(以00為結束)   ≥3(其長度為加入00後的長度)     2D   ACCT-AUTHENTIC   6(1:RADIUS;2:local;3:remote)     2E   ACCT-SESSION-TIME   6     1F   CALLING-STATION-ID   ≥3(被叫號)     1E   CALLED-STATION-ID   ≥3(主叫號)     07   FRAMED-PROTOCOL   6     08   FRAMED-IP-ADDRES   6(NAS地址)     2A   ACCT-INPUT-OCTETS   6(僅用於stop中,表示多少字節從此端口輸入)     2B   ACCT-OUTPUT-OCTETS   6(僅用於stop中,表示多少字節從此端口送出)     2F   ACCT-INPUT-PACKETS   6(僅用於stop中,表示多少包送給了用戶)   (帶*為必需項) 計費請求信息分為兩種情況:一是start即當用戶認證通過並連接成功時發出的信息;一是stop即用戶斷鏈時發出的信息,通知該用戶斷鏈,停止計費。兩者是由ACCT-STATUS-TYPE來區分的。Server記錄這些信息到detail文件中,以供二次開發時使用。 5.計費應答 (Accounting- Response) 當Server收到Client端送來的計費請求時,會返回Accounting-Response包,告訴Client端已收到該信息,該包無type位。 上面為radius協議的簡單的原理,但是筆者推薦在動手之前閱讀rfc2865和rfc2866,這樣可以在安裝除錯中解決很多問題。

二、下載安裝必需的支持軟件 這裡介紹使用Linux環境下的radius服務器軟件-icradius來實現radius服務器,其主頁地址為:http://radius.innercite.com,當前最新版本為0.17。包括icradius一共需要下載以下軟件: icradius http://icradius.hislora.com.au/ perl http://www.perl.com mysql http://www.mysql.com Perl DBI http://www.mysql.com/downloads/contrib.html mySQL DBD Modules http://www.mysql.com/downloads/contrib.html perl的Authen::RADIUS模塊 http://www.mirror.ac.uk/sites/FTP.internat.freebsd.org/pub/FreeBSD/packages-4.1/All/p5-Authen-Radius-0.05.tgz[peek] 筆者是在內核版本2.2.14-5.0的Redhat6.2環境下,使用的icradius為0.17版;perl為redhat6.2自帶的5.005_03版;mysql下載的是rpm包形式發布的3.23.22-1的源代碼;perl DBI為1.13版;mySQL DBD Modules為1.2214版本。所有的軟件都為源代碼方式下載。 1、Mysql的安裝; 筆者使用的rpm包方式的源代碼,因此首先要解開rpm包: [root@radiusd ideal]# rpm -ivh MySQL-3.23.22-1.src.rpm MySQL ################################################## 然後: [root@radiusd ideal]# cd /usr/src/redhat/SOURCES/ [root@radiusd SOURCES]# ls -al total 6432 drwxr-xr-x 2 root root 4096 Oct 29 14:07 . drwxr-xr-x 7 root root 4096 Oct 30 2000 .. -rw-r--r-- 1 root root 6560696 Jul 30 11:23 mysql-3.23.22-beta.tar.gz -rw-rw-r-- 1 root root 3082 Jul 30 11:23 mysql.gif [root@radiusd SOURCES]# tar xvgz mysql-3.23.22-beta.tar.gz 解壓源代碼包,就會在當前目錄下生成mysql-3.23.22-beta的子目錄,其中包含了mysql的源代碼,然後使用下面的命令進行安裝:



筆者是在內核版本2.2.14-5.0的Redhat6.2環境下,使用的icradius為0.17版;perl為redhat6.2自帶的5.005_03版;mysql下載的是rpm包形式發布的3.23.22-1的源代碼;perl DBI為1.13版;mySQL DBD Modules為1.2214版本。所有的軟件都為源代碼方式下載。 1、Mysql的安裝; 筆者使用的rpm包方式的源代碼,因此首先要解開rpm包: [root@radiusd ideal]# rpm -ivh MySQL-3.23.22-1.src.rpm MySQL ################################################## 然後: [root@radiusd ideal]# cd /usr/src/redhat/SOURCES/ [root@radiusd SOURCES]# ls -al total 6432 drwxr-xr-x 2 root root 4096 Oct 29 14:07 . drwxr-xr-x 7 root root 4096 Oct 30 2000 .. -rw-r--r-- 1 root root 6560696 Jul 30 11:23 mysql-3.23.22-beta.tar.gz -rw-rw-r-- 1 root root 3082 Jul 30 11:23 mysql.gif [root@radiusd SOURCES]# tar xvgz mysql-3.23.22-beta.tar.gz 解壓源代碼包,就會在當前目錄下生成mysql-3.23.22-beta的子目錄,其中包含了mysql的源代碼,然後使用下面的命令進行安裝:



Copyright © Linux教程網 All Rights Reserved