最近花了一周的時間學習了802.1X協議,在這里做個學習總結。
802.1X是基于Client/Server的訪問控制協議,簡稱dot1x。通俗的講,它是一種認證技術,怎么認證的?交換機上的一個端口連接到PC,開啟交換機端口的802.1X功能,PC需要輸入正確的用戶名和密碼通過服務器認證,才能訪問網絡。那么,我們所熟悉的PPPoE也是類似于這種方式的,他們有什么區別呢?先不說,我們接著講802.1X協議。這里我們將PC稱為客戶端,交換機稱為設備端。
有協議就有報文,802.1X對應的數據包是EAP(Extensible Authentication Protocol)和EAPOL(Extensible Authentication Protocol over LAN),EAPOL是對EAP的封裝(報文可以看出來)使其能夠在局域網中以廣播包或組播包的形式傳輸。通過EAP數據包再與遠端的RADIUS(用戶遠程撥號接入服務系統)服務器進行認證,設備端與認證服務器之間交互信息采用的是radius數據包。
環境拓撲圖
搭建環境
1、裝有802.1X客戶端的PC(H3C 802.1X客戶端)
2、一臺支持802.1X功能的交換機(H3C5120)
3、實驗網
4、一臺裝有Radius服務器的PC(這里我采用的Radius服務器為tekradius,安裝和使用步驟不去詳述,可以百度《TekRadius安裝及使用總結》)
安裝完成tekradius后,在users菜單添加賬戶h3c密碼h3c,在clients菜單中添加NAS(網絡接入服務器)182.16.218.44,secret為h3c,此密鑰為設備與radius服務器交互信息所有使用的密鑰,在交換機上創建radius模板的時候要用到該密鑰。vendor為ietf(也可選擇相對應的廠商比如我這邊為華3交換機我可以選擇H3C),Enabled為yes。
配置H3C5120交換機
配置交換機前,我們先來了解一下AAA。AAA是認證、授權、計費,802.1X是AAA的一種技術,它包含于AAA。所以我們在配置交換機的802.1X功能時,也可以是說在配置交換機的AAA。
1、使交換機可以ping通radius服務器
[H3C]interface Vlan-interface 1
[H3C-Vlan-interface1]ip address dhcp-alloc
[H3C-Vlan-interface1]quit
[H3C]ping 182.16.91.91
PING 182.16.91.91: 56? data bytes, press CTRL_C to break
Reply from 182.16.91.91: bytes=56 Sequence=1 ttl=127 time=4 ms
Reply from 182.16.91.91: bytes=56 Sequence=2 ttl=127 time=4 ms
Reply from 182.16.91.91: bytes=56 Sequence=3 ttl=127 time=5 ms
2、創建radius相關參數模板
[H3C]radius scheme cxd
New Radius scheme
[H3C-radius-cxd]primary authentication 182.16.218.44? ? ? ?#主認證服務器為182.16.218.44
[H3C-radius-cxd]primary accounting 182.16.218.44? ? ? ? ? ? #主計費服務器為182.16.218.44
[H3C-radius-cxd]key authentication h3c? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#與radius認證通信共享key為h3c
[H3C-radius-cxd]key accounting h3c? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #與radius計費通信共享key為h3c
[H3C-radius-cxd]timer realtime-accounting 15? ? ? ? ? ? ? ? ? ? #系統向RADIUS服務器重發報文的時間間隔
[H3C-radius-cxd]timer response-timeout 5? ? ? ? ? ? ? ? ? ? ? ? #系統向RADIUS服務器重發報文次數
[H3C-radius-cxd]user-name-format without-domain? ? ? ? ?#交換機發送用戶名到radius服務器時,去除相關域名稱
[H3C-radius-cxd]retry 5
3、創建域?這個不好理解。AAA是基于域來管理用戶的,所以交換機也是基于域來進行管理用戶的。一個域可以使用一個radius模板,不同的域可以使用不同的域模板。那么通過將用戶劃分到不同的域就可以實現用戶的分類。
[H3C]domain h3c
New Domain added.
[H3C-isp-h3c]authentication default radius-scheme cxd? ? ? ? #認證所采用的模板為cxd
[H3C-isp-h3c]authorization default radius-scheme cxd? ? ? ? ? #授權所采用的模板為cxd
[H3C-isp-h3c]accounting default radius-scheme cxd? ? ? ? ? ? ?#計費所采用的模板為cxd
[H3C-isp-h3c]access-limit enable 1000? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #接入用戶限制1000個
[H3C]domain default enable h3c? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #默認域使能為h3c
4、全局和端口開啟dot1x功能(dot1x即802.1X的簡稱)
[H3C]dot1x
802.1x is enabled globally.
[H3C]interface GigabitEthernet 1/0/1
[H3C-GigabitEthernet1/0/1]dot1x
802.1x is enabled on port GigabitEthernet1/0/1.
驗證結果
總結
1、AAA是基于域來管理用戶的
2、創建一個用戶域,將其使能為默認域。
3、802.1X是AAA的一種實現技術
802.1X本地認證
既然是本地認證,就不需要借助于遠端的radius服務器了,所以認證過程相對簡單。
1、創建本地認證賬戶Local-user帳號,用于本地認證。
2、創建認dot1x認證域,并在域中引用local賬戶
3、開啟全局802.1x功能和需要認證端口的802.1x功能
創建本地認證賬戶
[H3C]local-user h3c
New local user added.
[H3C-luser-h3c]password simple h3c
[H3C-luser-h3c]service-type lan-access
創建域
H3C]domain h3c
New Domain added.
[H3C-isp-h3c]display domain h3c
Domain = h3c
State = Active
Access-limit = Disabled
Accounting method = Required
Default authentication scheme? ? ? : local
Default authorization scheme? ? ? : local
Default accounting scheme? ? ? ? ? : local
Domain User Template:
Idle-cut = Disabled
Self-service = Disabled
[H3C-isp-h3c]quit
[H3C]domain default enable h3c
全局和端口開啟dot1x功能(dot1x即802.1X的簡稱)
[H3C]dot1x
802.1x is enabled globally.
[H3C]interface GigabitEthernet 1/0/1
[H3C-GigabitEthernet1/0/1]dot1x
802.1x is enabled on port GigabitEthernet1/0/1.
802.1X本地認證和遠端認證配合使用
使用場景:當設備無法連接到遠端的radius服務器時啟用本地認證。
修改domain配置命令(首先配置正確的radius模板和local賬戶)
[H3C-isp-h3c]authentication default radius-scheme cxd local
[H3C-isp-h3c]authorization default radius-scheme cxd local? ? ? ?
[H3C-isp-h3c]accounting default radius-scheme cxd local
此時,將radius服務器stop,點擊802.1X客戶端進行連接。會發現,再嘗試了提交request報文給radius服務器沒回應后,立即采取本地認證通過。