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

 
1、PPTP安裝
軟件包
    dkms
    kernel_ppp_mppe
    ppp
    pptpd
下載地址
    kernel_ppp_mppe  
    http://poptop.sourceforge.net/yu ... .2-3dkms.noarch.rpm  
    pptpd  
    http://poptop.sourceforge.net/yu ... -1.rhel5.1.i386.rpm
安裝
    # yum install dkms
    # rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
    # yum install ppp
    # rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm

配置/etc/ppp/pptpd.conf
內容以下:
    option /etc/ppp/options.pptpd
    localip 192.168.1.1
    remoteip 192.168.1.2-200
    說明:localip 爲***接口IP,remoteip 爲***客戶端配置IP
配置/etc/ppp/options.pptpd
內容以下:    name pptpd   
    refuse-pap   
    refuse-chap   
    refuse-mschap   
    require-mschap-v2   
    require-mppe-128   
    ms-dns 8.8.8.8
    proxyarp
    lock
說明:
    name pptpd : pptpd server 的名稱。
    refuse-pap : 拒絕 pap 身份驗證模式。
    refuse-chap : 拒絕 chap 身份驗證模式。
    refuse-mschap : 拒絕 mschap 身份驗證模式。
    require-mschap-v2 : 在端點進行鏈接握手時須要使用微軟的 mschap-v2 進行自身驗證。
    require-mppe-128 : MPPE 模塊使用 128 位加密。
    ms-dns 8.8.8.8 DNS服務器IP
    proxyarp : 創建 ARP 代理鍵值。
    debug : 開啓調試模式,相關信息一樣記錄在 /var/logs/message 中。
    lock : 鎖定客戶端 PTY 設備文件。
配置***帳號和密碼
/etc/ppp/chap-secrets
內容以下:
    client    server    secret    IP addresses
    "test"   pptpd    "pass"   *
說明:pptpd 名必須與/etc/ppp/pptpd-pptpd 文件中的相同

2、IPSEC+L2TPD安裝配置
軟件包
openswan    #IPSEC
rp-l2tp        #L2TP
xl2tpd         #L2TP
安裝
   # yum install openswan
配置/etc/ipsec.conf
內容以下:
version 2.0
config setup
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
        oe=off
        protostack=netkey

conn L2TP-PSK-NAT
        rightsubnet=vhost:%priv
        also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        ikelifetime=8h
        keylife=1h
        type=transport
        left=22.22.22.22
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
說明:22.22.22.22爲×××服務器外網IP
配置 PSK /etc/ipsec.secrets
內容以下:
    22.22.22.22 %any: PSK "pass"
說明:PSK "pass" 爲IPSEC 共享密鑰
配置包轉發
    for i in /proc/sys/net/ipv4/conf/*
    do
        echo 0 > $i/accept_redirects
        echo 0 > $i/send_redirects
   done
   echo 1 > /proc/sys/net/ipv4/ip_forward
測試IPSEC是否成功
   # /etc/init.d/ipsec start
   # ipsec verify
        Checking your system to see if IPsec got installed and started correctly:
        Version check and ipsec on-path                                 [OK]
        Linux Openswan U2.6.32/K2.6.18-194.8.1.el5 (netkey)
        Checking for IPsec support in kernel                            [OK]
        SAref kernel support                                           [N/A]
        NETKEY:  Testing for disabled ICMP send_redirects              [OK]
        NETKEY detected, testing for disabled ICMP accept_redirects     [OK]
        Checking that pluto is running                                  [OK]
        Pluto listening for IKE on udp 500                             [OK]
        Pluto listening for NAT-T on udp 4500                          [OK]
        Two or more interfaces found, checking IP forwarding            [OK]
        Checking NAT and MASQUERADEing                                  [OK]
        Checking for 'ip' command                                       [OK]
        Checking /bin/sh is not /bin/dash                               [OK]
        Checking for 'iptables' command                                 [OK]
        Opportunistic Encryption Support                                [DISABLED]
無FAIL,則配置成功
安裝rp-l2tp和xl2tpd
  安裝xl2tpd 依賴於libpcap-devel
    # yum install libpcap-devel
    # wget http://downloads.sourceforge.net ... /rp-l2tp-0.4.tar.gz
    # tar zxvf rp-l2tp-04.tar.gz
    # cd rp-l2tp-04
    # ./configure
    # make
    # cp handlers/l2tp-control /usr/local/sbin/
    # mkdir /var/run/xl2tpd/
    # ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control
    # wget http://ywko.googlecode.com/files/xl2tpd-1.2.4.tar.gz
    # tar zxvf xl2tpd-1.2.4.tar.gz
    # cd xl2tpd-1.2.4
    # make && make install
修改配置文件 /etc/xl2tpd.conf
內容以下:
  [global]
  ipsec saref = yes

  [lns default]
  ip range = 192.168.1.2-200
  local ip = 192.168.1.1
  refuse chap = yes
  refuse pap = yes
  require authentication = yes
  ppp debug = yes
  pppoptfile = /etc/ppp/options.xl2tpd
  length bit = yes
  說明:192.168.1.2-200 爲分配給客戶端的IP地址範圍
         192.168.1.1 爲×××服務器l2tp接口地址

修改配置文件 /etc/ppp/options.xl2tpd
內容以下:
  name l2tpd
  ipcp-accept-local
  ipcp-accept-remote
  ms-dns 8.8.8.8
  noccp
  auth
  crtscts
  idle 1800
  mtu 1410
  mru 1410  
  nodefaultroute
  debug   
  lock
  proxyarp     
  connect-delay 5000

配置密碼/etc/ppp/chap-secrets
內容以下:
  test pptpd testpass *
  test l2tpd testpass *
說明:pptpd爲pptp類型用戶,這裏的名稱應該與options.pptpd配置文件定義名稱裏相同
       l2tpd爲l2tpd類型用戶,這裏的名稱應該與options.xl2tpd配置文件定義名稱裏相同

3、REDIUS 配置
軟件包
    freeradius-client
    freeradius-server

freeradius-client安裝
    # wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.6.tar.gz
    # tar zxf freeradius-client-1.1.6.tar.gz
    # cd freeradius-client-1.1.6
    # make && make install

freeradius-server安裝
    # wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.12.tar.gz
    # tar zxf freeradius-server-2.1.12.tar.gz
    # cd freeradius-server-2.1.12
    # make && make install

配置radius-client
將radiusclient目錄複製到/etc目錄下
    # cp -rf /usr/local/etc/radiusclient/ /etc/

添加radius認證
修改配置文件/etc/ppp/options.pptpd
添加以下內容:
    plugin /usr/lib/pppd/2.4.4/radius.so
說明:若是是l2tp,則修改/etc/ppp/options.xl2tpd文件

修改配置文件/etc/radiusclient/servers
添加以下內容:
    localhost          testing123
說明:localhost 爲radiusd地址,testing123爲密碼

配置/etc/radiusclient/radiusclient.conf
    將   radius_deadtime      0    註釋
    將   bindaddr                 *   註釋
將radiusclient.conf文件中的/usr/local/etc/radiusclient路徑替換爲/etc/radiusclient
    # grep /usr/local radiusclient.conf | grep -v sbin | sed -i 's/\/usr\/local//g' radiusclient.conf

配置radius-server

添加radius用戶
修改配置文件/usr/local/etc/raddb/users
添加以下內容:
    test   Cleartext-Password := "test",Simultaneous-Use:=1
         Service-Type = Framed-User,
         Framed-Protocol = PPP,
         Framed-IP-Address = 255.255.255.254,
         Framed-IP-Netmask = 255.255.255.0
說明:test爲用戶名,密碼爲test
      Simultaneous-Use 限制同一用戶登陸數,這項設置要寫在與用戶名同一行,不然不生效。
      Framed-IP-Address = 255.255.255.254,表示IP地址分配交給radius客戶端,pptpd或者l2tpd

添加windows客戶端支持
    # wget -c http://small-script.googlecode.com/files/dictionary.microsoft
    # mv dictionary.microsoft /etc/radiusclient

修改配置文件/etc/radiusclient/dictionary
在文件後面添加以下內容:
    INCLUDE /etc/radiusclient/dictionary.microsoft
    INCLUDE /etc/radiusclient/dictionary.ascend
    INCLUDE /etc/radiusclient/dictionary.merit
    INCLUDE /etc/radiusclient/dictionary.compat
    INCLUDE /etc/radiusclient/dictionary.sip

測試radius用戶
啓動radiusd
    # cp /usr/local/sbin/rc.radiusd /etc/init.d/radiusd
    # /etc/init.d/radiusd start


如要調試
    # /etc/init.d/radiusd -X
/etc/init.d/radiusd -X 可顯示radius用戶登陸詳細過程

    # radtest test test 127.0.0.1 1812  testing123
    Sending Access-Request of id 103 to 127.0.0.1 port 1812
        User-Name = "test"
        User-Password = "test"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
    rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=103, length=44
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Framed-IP-Address = 255.255.255.254
        Framed-IP-Netmask = 255.255.255.0

如出現rad-recv:Access-Accept 下面幾行,說明認證成功。


添加自啓動腳本/etc/rc.local
    # *** server start
    /usr/sbin/pptpd
    /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    # xl2tpd start
    for i in /proc/sys/net/ipv4/conf/*
    do
        echo 0 > $i/accept_redirects
        echo 0 > $i/send_redirects
    done
    /etc/init.d/ipsec start
    /usr/local/sbin/xl2tpd
# radius start
    /usr/local/sbin/radiusd

4、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用戶。

5、TC 限速

TC 無需安裝,Linux 內核自帶
例:將*** 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
 
顯示filter規則狀態
    # tc -s -d filter show dev ppp0

參考文檔
TC
http://www.php-oa.com/2009/06/23/linux_tc.html
 
相關文章
相關標籤/搜索