歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux配置 >> FreeRADIUS負載均衡和高可用配置

FreeRADIUS負載均衡和高可用配置

日期:2017/2/27 14:58:32   编辑:Linux配置
測試環境
192.168.2.226     test.com   域控 
192.168.2.97   freeradius.test.com 
192.168.2.92   freeradius92.test.com 
192.168.2.93   freeradius93.test.com

配置三台freeradius服務器hosts
cat /etc/hosts 
192.168.2.226    test.com 
192.168.2.97     freeradius.test.com 
192.168.2.92     freeradius92.test.com 
192.168.2.93     freeradius93.test.com

修改主機名
vim /etc/sysconfig/network 
NETWORKING=yes 
NETWORKING_IPV6=no 
HOSTNAME=freeradius93 

按照前面的文檔搭建freeradius+AD+mschap環境: http://waydee.blog.51cto.com/4677242/1103942

Load banace測試

配置192.168.2.92,192.168.2.92的client,添加
client 192.168.2.0/24 { 
        secret = testing123 
        shortname = freeradius93 
}

配置192.168.2.97的proxy.conf
proxy server { 
        default_fallback = no 
} 
 
home_server freeradius92 { 
        type = auth+acct 
        ipaddr = 192.168.2.92 
        port = 1812 
        secret = testing123 
        require_message_authenticator = yes 
        response_window = 20 
        zombie_period = 40 
        #revive_interval = 120 
        status_check = status-server 
        check_interval = 30 
        num_answers_to_alive = 3 
        max_outstanding = 65536 
        coa { 
                irt = 2 
                mrt = 16 
                mrc = 5 
                mrd = 30 
        } 
} 
 
home_server freeradius93 { 
        type = auth+acct 
        ipaddr = 192.168.2.93 
        port = 1812 
        secret = testing123 
        require_message_authenticator = yes 
        response_window = 20 
        zombie_period = 40 
        #revive_interval = 120 
        status_check = status-server 
        check_interval = 30 
        num_answers_to_alive = 3 
        max_outstanding = 65536 
        coa { 
                irt = 2 
                mrt = 16 
                mrc = 5 
                mrd = 30 
        } 
} 
 
home_server_pool tn_auth_banance { 
        type = load-balance 
        home_server = freeradius92 
        home_server = freeradius93 
} 
 
realm test.com { 
        auth_pool = tn_auth_banance 
        acct_pool = tn_auth_banance 
} 
 
realm LOCAL { 
}

測試:
radtest -t mschap [email protected] 'test520' 192.168.2.97  0 testing123

查看192.168.2.97日志,可以看到freeradius將請求轉發到後面的192.168.2.92進行處理,再驗證,就將請求轉發到192.168.2.93進行處理
Sending Access-Request of id 3 to 192.168.2.92 port 1812 
        User-Name = "test" 
        NAS-IP-Address = 192.168.2.96 
        NAS-Port = 0 
        Message-Authenticator = 0x00000000000000000000000000000000 
        MS-CHAP-Challenge = 0xc8d1db4f67319092 
        MS-CHAP-Response = 0x00010000000000000000000000000000000000000000000000007825afde2c4e435750d622dd3631cb5ad65bdfbfe5b64217 
        Proxy-State = 0x3738

關閉兩台home server,freeradius將兩台home server都標注為dead
Mon Jun 25 11:51:35 2012 : Info: Ready to process requests. 
Mon Jun 25 11:55:59 2012 : Proxy: Marking home server 192.168.2.92 port 1812 as zombie (it looks like it is dead). 
Mon Jun 25 11:56:03 2012 : Error: No response to status check 14 for home server 192.168.2.92 port 1812 
Mon Jun 25 11:56:03 2012 : Proxy: Marking home server 192.168.2.92 port 1812 as dead. 
Mon Jun 25 11:56:33 2012 : Error: No response to status check 30 for home server 192.168.2.92 port 1812 
Mon Jun 25 11:56:50 2012 : Proxy: Marking home server 192.168.2.93 port 1812 as zombie (it looks like it is dead). 
Mon Jun 25 11:56:54 2012 : Error: No response to status check 33 for home server 192.168.2.93 port 1812 
Mon Jun 25 11:57:07 2012 : Proxy: Marking home server 192.168.2.93 port 1812 as dead. 
Mon Jun 25 11:57:09 2012 : Error: No response to status check 34 for home server 192.168.2.92 port 1812 
Mon Jun 25 11:57:23 2012 : Error: No response to status check 36 for home server 192.168.2.93 port 1812 
Mon Jun 25 11:57:43 2012 : Error: No response to status check 38 for home server 192.168.2.92 port 1812

啟動兩台home server,freeradius每個一段時間會發送狀態檢測請求,在連續收到3次請求都正常後,將home server標注為alive(發送時間和接受次數看具體配置)
Jun 25 11:58:14 2012 : Proxy: Received response to status check 40 (1 in current sequence) 
Mon Jun 25 11:58:25 2012 : Error: No response to status check 41 for home server 192.168.2.93 port 1812 
Mon Jun 25 11:58:49 2012 : Proxy: Received response to status check 42 (2 in current sequence) 
Mon Jun 25 11:58:50 2012 : Proxy: Received response to status check 43 (1 in current sequence) 
Mon Jun 25 11:59:21 2012 : Proxy: Received response to status check 44 (2 in current sequence) 
Mon Jun 25 11:59:21 2012 : Proxy: Received response to status check 45 (3 in current sequence) 
Mon Jun 25 11:59:21 2012 : Proxy: Marking home server 192.168.2.92 port 1812 alive 
Mon Jun 25 11:59:50 2012 : Proxy: Received response to status check 46 (3 in current sequence) 
Mon Jun 25 11:59:50 2012 : Proxy: Marking home server 192.168.2.93 port 1812 alive

Failover 測試 只需將proxy.conf中的type改成fail-over
type = fail-over 

fail-over默認請求都轉發到home server的第一台,只有當第一台宕機了才會將請求都轉發到第二台。 停止第一台home server
Mon Jun 25 12:03:24 2012 : Info: Ready to process requests. 
Mon Jun 25 12:05:26 2012 : Proxy: Marking home server 192.168.2.92 port 1812 as zombie (it looks like it is dead). 
Mon Jun 25 12:05:30 2012 : Error: No response to status check 9 for home server 192.168.2.92 port 1812 
Mon Jun 25 12:05:30 2012 : Proxy: Marking home server 192.168.2.92 port 1812 as dead.

發送驗證測試請求
[root@freeradius93 ~]# radtest -t mschap [email protected] 'test520' 192.168.2.97  0 testing123  
Sending Access-Request of id 52 to 192.168.2.93 port 1812 
        User-Name = "[email protected]" 
        NAS-IP-Address = 192.168.2.96 
        NAS-Port = 0 
        Message-Authenticator = 0x00000000000000000000000000000000 
        MS-CHAP-Challenge = 0x2fe670516688a9f9 
        MS-CHAP-Response = 0x000100000000000000000000000000000000000000000000000081d6f3083e9a221d74e0506324e0579c20ca2976ffc5763b 
rad_recv: Access-Accept packet from host 192.168.2.93 port 1812, id=52, length=84 
        MS-CHAP-MPPE-Keys = 0x0000000000000000cb2fc9399e671506ba8e34b7b84f97de0000000000000000 
        MS-MPPE-Encryption-Policy = 0x00000001 
        MS-MPPE-Encryption-Types = 0x00000006

關於proxy.conf配置文件的解析
Proxy server 設置是freeradius服務器控制發給其他radius服務器請求行為。 
 
各個home server之間Load-balancing 和failover都是通過home server pool來控制的。 
 
Realm定義了使用哪個home server pool進行負載均衡或者failover。 
 
Realm指定使用哪個home server pool,而home server pool指定使用哪些home server; 
 
多個realm可以指定一個home server pool, 一個home server pool可以指定多個home server,一個home server也可以出現在多個home server pool中。 
 
Home server的定義:home server指的是接受代理請求的另外一台radius server。Home server可以接受驗證請求或者是計費請求。 
home_server localhost { 
    type= auth  處理接入請求包 
         acct   處理計費請求包 
         auth+acct  處理接入請求在port端口,處理計費請求在port+1端口 
         coa        處理coa和斷開連接請求 
 
    ipaddr = 
    ipv6addr= 
    virtual_server= 
     配置radius服務器的地址,可以填寫ip地址或者主機名,建議填寫ip地址,因為填寫主機名會去查詢dns服務器,如果dns緩慢或者失敗則radius無法啟動;另外radius只在啟動的時候會檢測一下,當該主機名對應的IP發生變更時一定要重啟radius服務器才行。 
當所有的home server都是失敗時,默認使用本地的radius服務器進行處理。 
 
Secret=  密鑰是radius服務器和home server之間通信的加密密鑰。 
 
response_window 如果home server在response_window時間內沒有響應則radius服務器開始初始化zombie_period時間,一般response_window時間在2-60左右,看具體的網絡情況 
 
zombie_period  如果在zombie_period時間內home server還是沒有響應,則radius服務器認為該home server已經dead 了。該home server被標注為zombie,標注為zombie的radius服務器處理請求的權限最低,只有當沒有其他任何live的home server時,才將請求轉發給標注為zombie的home server。 
 
當有某個請求發送到該home server,那麼以後的請求都發送到該home server進行處理,除非該home server被標注為dead,這時如果有live的home server,則將請求轉發到其他的home server,如果沒有,則post-proxy-type fail該參數設置將會生效。 
 
如果status_check設置不為none,則當zombie_period開始時,radius服務器就會發送狀態檢測包檢測該home server的狀態,該狀態檢測是直到該home server標注為alive時才會停止。如果home server不支持狀態檢測,則freeradius服務器就無法知道他是否處於從dead變為alive,freeradius服務器是每隔一段時間將該home server標注為alive,如果home server還沒起來,則會等待zombie_period的時間,而這期間的認證請求都會失敗。 
 
revive_interval  該參數只在status_check設置為none的情況下使用,建議使用status_check, 並且將revive_interval去掉。 
 
status_check的設置值有none, status-server, request三個,如果設置為none,則使用revive_interval生效,設置為status-server則會發送status-server包進行檢測home server的狀態;設置為request,則會發送auth或者acct請求包,具體和type設置對應。 
設置為request,可以設置默認的用戶名密碼,但這樣不推薦,因為用戶可以用該測試賬戶進行驗證,如果設置了則將對該用戶的請求設置為reject。 
 
check_interval設置status check的檢查間隔時間。 
 
num_answers_to_alive設置home server被標記為alive前必須響應的status check的次數。該參數和check insterval共同決定餓了home server被標記為alve的時間。 
 
max_outstanding該參數設置當home server負載過高時不在向該home server發送請求;((#request sent) - (#requests received)) > max_outstanding 
 
home_server_pool: failover,先將請求發送到該pool中的第一個home server,如果該home server標記為dead,就發送到該pool中的第二台,如此反復。 
 
load-balance,將請求發送到pool中的最空閒的home server上,衡量空閒的指標是pool中處理請求最少那台home server。如果有多台home server都處於低負載,則在這幾台home server上隨機選擇一台處理請求。Load balance不支持EAP的認證。 
 
client-balance ,選擇home server的機制是通過hash客戶端的IP地址獲得,如果該home server宕機了,則會在pool中選擇另外一台home server,有點類似failover; 這是對EAP認證的簡單負載均衡,因為同一個客戶端的請求都是發送到同一台home server上處理。 
 
client-port-balance,選擇home server的機制是hash 客戶端的IP和端口,如果該home server宕機了,則會在pool中選擇另外一台home server,有點類似failover; 該方法比client-balance更有利於EAP的負載均衡,不過也意味著client的認證和計費可能處於不同的服務器。 
 
Home server: 該參數配置home server 名稱,該名稱不是hostname,是定義home server時的名稱。 
 
Fallback如果所有的home server都是dead,則該fallback server啟用,該服務器最好是virtual home server 
 
Realm 指向home server pool 
auth_pool  指向home server pool並且pool中的home server的type都必須是auth 
acct_pool   指向home server pool 並且pool中的home server的type必須是acct 
如果pool中的home server的type都是auth+acct,那麼可以使用pool參數設置即可
Copyright © Linux教程網 All Rights Reserved