centos pptp+l2tp+radius+mysql+tc限速,安裝配置
阿新 • • 發佈:2019-02-02
四、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
建立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
找到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
說明:開啟資料庫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