1. 程式人生 > >centos pptp+l2tp+radius+mysql+tc限速,安裝配置

centos pptp+l2tp+radius+mysql+tc限速,安裝配置

四、RADIUS+MYSQL配置

建立radius資料庫
    mysql> create database radius;
建立radius使用者名稱和密碼
    mysql> grant all on radius.* to 'radius'@'localhost'  identified by 'pass';
    mysql>flush privileges;
匯入SQL
    # cd /usr/local/etc/raddb/sql/mysql/
    # mysql -uradius -ppass radius < ippool.sql
    # mysql -uradius -ppass radius < schema.sql
    # mysql -uradius -ppass radius < cui.sql
    # mysql -uradius -ppass radius < nas.sql
    # mysql -uradius -ppass radius < wimax.sql

匯入web管理所需SQL
將freeradius-server解壓目錄下的dialup_admin檔案及目錄複製到/usr/local目錄下。
    # cp -rf /soft/freeradius-server-2.1.12/dialup_admin/ /usr/local
說明:最好將dialup_admin複製到/usr/local目錄下,否則web訪問將報路徑錯誤。

    # cd /usr/local/dialup_admin/sql/mysql
    # mysql -uradius -ppass radius < badusers.sql
    # mysql -uradius -ppass radius < mtotacct.sql
    # mysql -uradius -ppass radius < totacct.sql
    # mysql -uradius -ppass radius < userinfo.sql

啟用MYSQL 認證

安裝mysql-devel包
    # yum install mysql-devel
說明:如不安裝mysql-devel軟體包,後面的radius+mysql認證會報錯,缺少rlm_sql_mysql.so檔案。


修改配置檔案/usr/local/etc/raddb/radiusd.conf
    將$INCLUDE sql.conf 前面的#去掉

修改配置檔案/usr/local/etc/raddb/sql.conf
    修改login使用者名稱,password密碼,這裡的使用者名稱密碼應與上面建立radius使用者名稱和密碼相同。

修改配置檔案/usr/local/etc/raddb/sites-enabled/default
    找到authorize {}模組     註釋掉 files (170行)           去掉 sql前面#號 (177行)
    找到accounting {}模組   註釋掉 radutmp (396行)    去掉 sql前面#號 (406行)
    找到session {}模組        註釋掉 radutmp (450行)    去掉 sql前面#號 (454行)
    找到post-auth {}模組    註釋掉 sql (563行)

修改配置檔案/usr/local/etc/raddb/sites-enabled/inner-tunnel
    找到authorize {}模組,註釋掉files(124行),去掉sql前的#號(131行)

修改配置檔案/usr/local/etc/raddb/sql.conf
    去掉 readclients = yes 前的#號去掉 (100行)
說明:開啟資料庫nas支援,否則無法限制同一使用者登入數。

修改配置檔案/usr/local/etc/raddb/sql/mysql/dialup.conf
    找到以下內容,將前面的#號去掉(279-282行)
        simul_count_query = "SELECT COUNT(*) \
                             FROM ${acct_table1} \
                             WHERE username = '%{SQL-User-Name}' \
                             AND acctstoptime IS NULL"
說明:開啟線上人數查詢支援

RADIUS 使用者管理
新增使用者test,密碼為test
INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('test','Cleartext-Password',':=','test');

將使用者test新增到group1組
INSERT INTO radusergroup (username,groupname) VALUES ('test','group1');
限制同一使用者登入數,限制group1組使用者同時登入數為10INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('group1','Simultaneous-Use',':=','10');

RADIUS使用者也可使用web介面管理

配置Apache
新增vhost虛擬主機配置radius.conf,內容如下:
    <VirtualHost *:80>
        DocumentRoot "/usr/local/dialup_admin"
        ServerName www.test.com
        DirectoryIndex index.html index.php
    </VirtualHost>
    <Directory "/usr/local/dialup_admin">
        Options Indexes
        AllowOverride None
        Order allow,deny
        Allow from all 
   </Directory>

可通過 http://www.test.com/htdocs 地址管理RADIUS使用者。

五、TC 限速

TC 無需安裝,Linux 核心自帶
例:將vpn IP地址段192.168.1.0/24 上傳下載限速為 5M
將以下內容新增到/etc/ppp/ip-up檔案exit 0上面。

down=5Mbit
upload=5Mbit
#down
/sbin/tc qdisc add dev $1 root handle 2:0 htb
/sbin/tc class add dev $1 parent 2:1 classid 2:10 htb rate $down
/sbin/tc class add dev $1 parent 2:2 classid 2:11 htb rate 1024kbps
/sbin/tc qdisc add dev $1 parent 2:10 handle 1: sfq perturb 1
/sbin/tc filter add  dev $1 protocol ip parent 2:0  u32 match ip dst 192.168.1.0/24  flowid 2:10
#upload
/sbin/tc qdisc add dev $1 handle ffff: ingress
/sbin/tc filter add dev $1 parent ffff: protocol ip  u32 match ip dst \
   192.168.1.0/24 police  rate $upload burst 100k drop flowid 2:11

說明:$1為網路裝置介面名稱,如ppp0,ppp1......
       第4行建立qdisc佇列
       第5行建立類,限速5M
       第7行為了不使一個會話永佔頻寬,新增隨機公平佇列sfq
       第8行建立過濾器規則,對192.168.1.0/24下載限速為5M
       第10-12行限制192.168.1.0/24上傳限速為5M

刪除所有 TC 限速規則
    # tc qdisc del dev ppp0 root

顯示qdisc佇列狀態
    # tc -s -d qdisc show dev ppp0

顯示class類狀態
    # tc -s -d class show dev ppp0