[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 網絡管理 > 互聯網技術 > 正文
使用Linux做Radius服務器實現對3comRAS1500認証計費
本文出自:www.linuxaid.com.cn/ LinuxAid工程師ideal(ideal@btamail.net.cn) (2001-06-21 11:00:00)

    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服務器之間傳輸認証、授權和配置信息的協議。其協議的標準最新的定義在rfc28652866中,也可以在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的源代碼,然使用下面的命令進行安裝:

     ./configure
     make
     make install
     scripts/mysql_install_db

    就實現了Mysql數據庫服務器安裝,其中啟動mysql服務器的命令為:
     /usr/local/mysql/bin/safe_mysqld &

    現在就實現了mysql數據庫服務器的安裝和運行,下面我們應當設立基本的用戶權限信息。缺省的,mysql擁有一個缺省的具有對數據庫完全訪問可控制的用戶,名字為root,所以首先應當為該用戶添加訪問密碼:

    [root@radiusd src]# mysql -u root mysql
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 183 to server version: 3.23.22-beta

    Type 'help' for help.

    mysql>
    這樣就進入了mysql服務器的客戶程序,然發出sql語句命令:

    UPDATE user SET Password = PASSWORD ('new_password') WHERE user = 'root';
    FLUSH PRIVILEGES;

    這裡的new_password是為mysql的root用戶設立的密碼。但是一般推薦再創建一個權限和root完全相同的用戶,命令如下:

INSERT INTO user
VALUES ('host','user','passwd',
'y','y','y','y','y','y','y','y','y','y','y','y','y','y');

一般,mysql與icradius服務器都是運行在同一個服務器上,這時候,host為localhost,若你的icradius服務器運行在另外一台服務器上,則你需要在這裡設定host為你的icradius服務器的名字。用戶為你設定的用戶名,密碼為該用戶的密碼。

2、perl DBI的安裝

    perl DBI的安裝非常簡單,只要解開壓縮包:tar xvfz DBI-1.13.tar.gz,然進入解開得到的子目錄以,發出如下的命令:

perl Makefile.PL
make
make test
make test TEST_VERBOSE=1 (若上一步出現了問題時,才使用該命令)
make install (只有在前面的測試通過以才能發出該命令)    

3、mySQL DBD Modules的安裝

 perl DBI的安裝非常簡單,只要解開壓縮包:tar xvfz Msql-Mysql-modules-1.2214.tar
.gz 。然進入解開得到的子目錄以,發出如下的命令:

perl Makefile.PL(會被詢問以下問題:

[root@radiusd Msql-Mysql-modules-1.2214]# perl Makefile.PL
Which drivers do you want to install?

1) MySQL only
2) mSQL only (either of mSQL 1 or mSQL 2)
3) MySQL and mSQL (either of mSQL 1 or mSQL 2)

4) mSQL 1 and mSQL 2
5) MySQL, mSQL 1 and mSQL 2

Enter the appropriate number: [3] 1 

### 在我們這裡的需求,應該回答1

Do you want to install the MysqlPerl emulation? You might keep your old
Mysql module (to be distinguished from DBD::mysql!) if you are concerned
about compatibility to existing applications! [n] n 這裡回答n

Where is your MySQL installed? Please tell me the directory that
contains the subdir 'include'. [/usr/local] 

### 這是缺省的mysql安裝目錄,如果你按照上面的方式安裝,則mysql自動被安裝到這個目錄下,則這裡直接回車即可

Which database should I use for testing the MySQL drivers? [test] 直接回車即可


On which host is database test running (hostname, ip address
or host:port) [localhost] 

### 若mysql服務器和icradius服務器安裝在同一個服務器上 則這裡直接回車即可


User name for connecting to database test? [undef] root 

### 這裡輸入root

Password for connecting to database test? [undef] passwd 

### 這裡輸入mysql的root用戶的密碼

make
make test
make install

4、perl的Authen::RADIUS模塊的安裝

    首先,解壓軟件包 tar xvfz p5-Authen-Radius-0.05.tgz,則會在當前目錄下生成文件+COMMENT、+CONTENTS、+DESC及+MTREE_DIRS和目錄lib。然創建目錄:

mkdir /usr/lib/perl5/5.00503/Authen/

然拷貝該perl模塊到創建的目錄下:

cp lib/perl5/site_perl/5.005/Authen/Radius.pm /usr/lib/perl5
/5.00503/Authen/

即可。

二、Icradius的安裝配置

1、解壓編譯軟件包:

    tar xvfz icradius-0.17.tar.gz
    cd icradius-0.17/src

    然拷貝針對linux的Make文件Makefile.lnx為Makefile:
    cp Makefile.lnx Makefile

    然運行:
    make
    make install

2、創建radius數據庫

    首先需要創建數據庫raidus:連接mysql數據庫:

    mysql -u root -pyourpassword
    >CREATE DATABASE radius;  ### 創建radius數據庫

    然需要創建radius數據庫需要的各個表格,這裡要使用使用icradius-0.17目錄下的script子目錄下的radius.db文件,該文件已經定義了所需要的各個表格,這裡只要使用命令:

    mysql -u root -pyourpassword radius < radius.db

即可。這時就創建得到了radius認証計費所需要的各個表格。這裡一共定義了以下表格:

 Tables_in_radius
dictionary
hints
nas
radacct
radacct_summary 
radcheck 
radgroupcheck
radgroupreply
radreply 
realmgroup 
realms 
usergroup


這裡各個表格的含義大致是:

dictionary表格定義了在radius消息中的屬性及屬性值和其數字ID的對應關系,還定義了每個屬性值允許的數據類型。

nas定義了該radius管理的訪問服務器的信息,如其ip地址,設備名字等等。

radacct用來保存記賬信息;

radacct_summary也是用來保存記賬信息。

radcheck定義了當用戶撥入時需要檢查的屬性,如:密碼,時間限額等等。

radgroupcheck定義了某個組的成員在撥入時,需要檢查的公共屬性。每個用戶都可以屬一個組

radgroupreply定義了該組成員在撥入驗証通過以,在應答信息內需要定義的屬性及其對應的
    屬性值。

 radreply定義了成員在撥入驗証通過以,在應答信息內需要定義的屬性及其對應的屬性值。

 usergroup定義了用戶和組的對應關系。

3、填充各個表格

    下一步需要向上面創建的各個數據庫的表格中添加內容。

  • 對directionary表格的內容,icradius軟件提供了一個腳本文件-script/dictimport.pl來創建,首先需要編輯該文件,修改my $dbusername = 'root';my $dbpassword = 'rootpass';為對應的數據庫管理員的用戶名和密碼。然運行該腳本如下:

    [root@radiusd scripts]# ./dictimport.pl ../raddb/dictionary

   對3comRas1500來說,還需要加載usr的dictionary文件如下:

    [root@radiusd scripts]# ./dictimport.pl ../raddb/dictionary.usr

  • 第二需要向nas表格中添加內容如下,首先進入mysql:

[root@radiusd scripts]# mysql -u root -pszpzclljxk radius
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 30 to server version: 3.23.22-beta

Type 'help' for help.

mysql>

發出sql語言命令如下:

insert into nas 
values (0,"3comras1500","ras1500","192.168.2.32","usr",24,"mlix1819","public","on");

這了,第一個字段含義為標示該nas設備的id號,為數字類型;第二個字段為設備名;第三個字段為設備的簡稱;第四個字段為設備的ip地址;第五個設備類型,對3com設備類型為usr;第六個為設備的端口總數;第七個字段為radius服務器和nas之間共享的密碼;第八個字段為snmp協議的共同體名;最一個為snmp是否開放。

  • srcipts目錄下的radius.cgi是一個實現web界面管理用戶及記費信息的cgi程序,但是要在使用該腳本程序以前,首先要在radcheck表格中添加如下內容:

    INSERT INTO radcheck VALUES ("","admin","Password","adminuserpassword");
    INSERT INTO radcheck VALUES ("","admin","Radius-Operator","Yes");

 這裡,admin為radius的管理員用戶名,adminuserpassword為管理員密碼。

  然將radius.cgi和usage.cgi拷貝到www服務器的cgi-bin目錄下,再編輯這兩個文件,正確的設定數據庫管理員的用戶名和密碼。然指定兩個文件中的$cookiedomain及$radhost為空。兩個文件中的$radsecret指定為nas和radius共享的密碼。

4、配置啟動radiusd

    在/etc/目錄下創建子目錄raddb:

    [root@radiusd /etc]# mkdir /etc/raddb

    在該目錄下創建文件client,並設定其訪問權限:

    [root@radiusd raddb]# touch clients
    [root@radiusd raddb]# chmod 664 clients

    拷貝/home/radius/etc/raddb/目錄下的radiusd.conf拷貝到/etc/raddb目錄下:
    [root@radiusd raddb]# cp /tmp/radius/etc/raddb/radius.conf /etc/raddb/

    把/usr/src/icradius-0.17/raddb/中的除了radius.conf以外的所有文件拷貝到/etc/raddb目錄中。

    然拷貝mysql的庫文件到系統庫目錄中:
    [root@radiusd /lib]# cp /usr/local/lib/mysql/* /lib

    其中在/usr/icradius-0.17/redhat/目錄下有一個名為rc.radiusd-redhat的文件,其是redhat環境下radiusd的啟動文件,將其拷貝到/etc/rc.d/init.d目錄下:
    # cp /usr/src/icradius-0.17/redhat/rc.radiusd-redhat  /etc/rc.d/init.d/rc.radiusd

    編輯文件/etc/raddb/radius.conf文件,將第5行中,password面修改為mysql的管理員密碼。

    編輯文件/etc/rc.d/init.d/rc.radius,修改

     RADIUSD=/usr/sbin/radiusd
     WATCHER=/usr/sbin/radwatch

   為

    RADIUSD=/usr/local/sbin/radiusd
    WATCHER=/usr/local/sbin/radwatch

    拷貝/usr/src/icradius-0.17/scripts目錄下的radwatch到/usr/local/sbin目錄下。

    拷貝/usr/src/icradius-0.17/scripts目錄下的radiusd.cron.daily到/etc/cron.daily/目錄下。

    拷貝/usr/src/icradius-0.17/scripts目錄下的radiusd.cron.monthly到/etc/cron.daily/目錄下。

    然就可以啟動radiusd了:/etc/rc.d/init/rc.radiusd start。

    這個時候,px ax就應該看到下面這些進程:

19090 pts/1 S 0:00 sh /usr/local/bin/safe_mysqld
19114 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19116 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19117 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19164 pts/1 S 0:00 sh /usr/local/sbin/radwatch /usr/local/sbin/radiusd -
19165 pts/1 S 0:00 /usr/local/sbin/radiusd -f -y
19167 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19168 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19169 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19170 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19171 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
19174 pts/1 S 0:00 /usr/local/sbin/radiusd -f -y
19175 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
    

    察看系統開放的端口:nestat -l,輸出中應該有以下內容:

udp 0 0 *:radacct *:*
udp 0 0 *:radius *:*

然察看radius的log文件,最應該是下面的內容:

Sun Oct 29 18:46:17 2000: Info: Starting - reading configuration files ...
Sun Oct 29 18:46:17 2000: Info: SQL: Attempting to connect to root@localhost:rad
ius
Sun Oct 29 18:46:18 2000: Info: Ready to process requests.

這就說明radius服務器已經成功的運行,這時候,應該按照3comras1500的SysManage.pdf中的shuoming正確的設置ras1500。

四、以web界面管理用戶

上面的圖是radius的管理界面,在這裡輸入radius管理員的用戶名和密碼,則可以進入下面所示的管理界面:

這個管理界面是淺顯易懂的,這裡我以最常見的情況為例子來說明如何添加用戶。

首先創建一個組,該組具有所有用戶都應該具有的特性,選擇Manage Groups->Add New Group->為該組起一個名字:all_user->選擇add group。

隨進入組屬性設置界面,在這個界面裡,在reply item中設置以下屬性:

Reply Items

Attribute Value Check To
Remove
Framed-IP-Address 255.255.255.254
Framed-IP-Netmask 255.255.255.0
Framed-Protocol PPP
Framed-Compression Van-Jacobson-TCP-IP

    這裡Framed-IP-Address為255.255.255.254表示由nas從自己的ip pool中選擇一個ip地址分配給該用戶。其他屬性都是非常清楚的了。

    然添加用戶:Manage Users->Add New user->為該用戶組起一個名字:test,並設定該用戶的密碼 -> add user,然就進入了用戶屬性設置界面,然選擇add to group  -> 選擇all_user組->確定,然就可以看到,該用戶的下面這些reply item:

Reply Items

Attribute Value Check To
Remove
Group
Framed-IP-Address 255.255.255.254 -- all_user
Framed-IP-Netmask 255.255.255.0 -- all_user
Framed-Protocol PPP -- all_user
Framed-Compression Van-Jacobson-TCP-IP -- all_user

若需要設置該用戶的時間限額,則選擇check item下面的add check item,選擇Total-TimeLimte,面輸入時間限制的數字(時間單位為秒)因此三分鐘的時間限額對應的Total-TimeLimte屬性值為180,選擇 add check item,就會為該用戶加入了時間限額為3分鐘。

五、其他一些問題

所有的問題都應該可以通過閱讀readme和faq.txt來解決。這裡僅僅討論兩種常見的 問題。

1、若運行radius是出現segmentation fault,則可能需要作以下一些工作:

在加載dictionary以前,執行下面的sql語句:
insert into dictionary values ('','VENDOR','USR','429','','');

然運行 dictimport來加載dictionary.usr,再執行下面的sql語句:

update dictionary set vendor = "USR" where type = "ATTRIB_NMC";
update dictionary set type = "ATTRIBUTE" where type = "ATTRIB_NMC";

2 若希望限制用戶登錄時間,則在用戶的Check Items中添加使用login-time屬性。時間格式為被 "|"或","隔離開來的串。天可能為Mo, Tu, We, Th, Fr, Sa ,Su. 分別代表星期1-星期日,其中wk表示工作日,也就是周一到周五(Wk for Mo-Fr)。"Any" or "Al" 表示每一天。時間格式為hhmm-hhmm 的格式。例如:

Wk2305-0855,Sa,Su2305-1655 |
允許一個用戶在工作日的晚上23:05到早上8:55,周六全天,周日晚23:05到下午16:55。

3 按照上面的例子,當設置了時間限額以,用戶使用時間超過該限額則自動斷線,而且不能再登錄進入,但是該web界面沒有提供如何清除使用時間的方法,這樣當需要為用戶增加時間限制,需要在以前的時間限額上添加新的時間限額,管理起來非常麻煩,這裡我寫了一個小小的cgi來清除用戶的使用記錄。

內容如下: clear_acct.cgiweb界面

只要輸入要清除記賬的用戶名和mysql管理員密碼就可以清除用戶的記賬信息。

4 此外我寫了一個小小的提供用戶察看自己的撥號時間使用情況的cgi程序,使用戶可以輸入自己的撥號密碼通過驗証以,察看自己的撥號log記錄

cgi程序    web頁面

icrraius不僅僅支持3comras500,其他的撥號服務器也支持,但是筆者沒有作試驗,感興趣的同志可以試一試。

2000.10.29

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★