環境介紹:
認證伺服器
192.168.13.253
AC
192.168.13.252
抓包過程:
3、運作wireshark選取網卡,例我的認證伺服器所使用的網卡為本地連結;如圖:
4、過濾portal||radius封包:
Portal 認證流程
封包字段說明
Ver
Ver字段是協定的版本号,長度為 1 位元組,目前定義的值為 0x01。
Type
Type字段定義封包的類型,長度為 1 位元組,目前其值的定義如表6-1。
封包類型
值
方向
含義
REQ_CHALLENGE
0x01
Client----->Server
Portal Server 向AC裝置發送的請求Challenge封包
ACK_CHALLENGE
0x02
Client<-----Server
AC裝置對Portal Server請求Challenge封包的響應封包
REQ_AUTH
0x03
Portal Server向AC裝置發送的請求認證封包
ACK_AUTH
0x04
AC裝置對Portal Server請求認證封包的響應封包
REQ_LOGOUT
0x05
若ErrCode字段值為0x00,表示此封包是Portal Server向AC裝置發送的請求使用者下線封包;若ErrCode字段值為0x01,表示該封包是Portal Server發送的逾時封包,其原因是Portal Server發出的各種請求在規定時間内沒有收到響應封包。
ACK_LOGOUT
0x06
AC裝置對Portal Server請求下線封包的響應封包
AFF_ACK_AUTH
0x07
Portal Server對收到的認證成功響應封包的确認封包;
NTF_LOGOUT
0x08
Server --> Client
使用者被強制下線通知封包
REQ_INFO
0x09
Client --> Server
資訊詢問封包
ACK_INFO
0x0a
資訊詢問的應答封包
Pap/Chap
Pap/Chap字段定義此使用者的認證方式,長度為 1 位元組,隻對Type值為 0x03 的認證請求封包有意義:
Chap方式認證---值為0x00;
Pap 方式認證---值為0x01;
Rsv
Rsv目前為保留字段,長度為 1 位元組,在所有封包中值為 0;
SerialNo
(1) SerialNo字段為封包的序列号,長度為 2 位元組,由Portal Server随機生成,Portal Server必須盡量保證不同認證流程的SerialNo在一定時間内不得重複,在同一個認證流程中所有封包的SerialNo相同;
(2) Portal Server發給AC裝置的封包
a、 由Portal Server發出的Type值為1、3的請求封包其SerialNo都是随機生成數;
b、 由Portal Server向AC裝置發出的Type值為5的(REQ_LOGOUT)封包其SerialNo值分兩種情況:當ErrCode為0 時(請求使用者下線封包),SerialNo值為一個随機生成數;當ErrCode為1時,SerialNo值可能和Type值為1或3的封包 (請求Challenge逾時, 或請求認證逾時)相同,具體要看是請求Challenge逾時還是請求認證逾時;
c、 由Portal Server向AC裝置發出的認證成功确認封包(Type值為7的封包)SerialNo和其發出的相應請求封包的SerialNo相同;比如對于Type值為7的封包其SerialNo值和Type值為3的請求認證封包相同;
(3) 每一個由AC裝置發給PortalServer的響應封包的SerialNo必須和PortalServer發送的相應請求封包的SerialNo一樣,否則PortalServer會丢掉從AC裝置發來的響應封包; 比如Type值為2的封包其SerialNo值必須和Type值為1的封包相同,Type值為4的封包其SerialNo值必須和Type值為3的封包相同,Type值為6的封包其SerialNo值必須和Type值為5的封包相同。
ReqID
(1) ReqID字段長度為 2 個位元組,由AC裝置随機生成,盡量使得在一定時間内ReqID不重複。
(2) 在Chap認證方式中:
a、 AC裝置在Type為2 (ACK-CHALLENGE) 的請求Challenge響應封包中把該ReqID的值告訴Portal Server;
b、 在Type值為3、4、7 ( REQ-AUTH, ACK-AUTH, AFF-ACK-AUTH ) 的封包中ReqID字段的值都和Type值為2的封包中此字段的值相同;
c、 在Type值為 5 (REQ-LOGOUT) 的封包中,若封包表示請求Challenge 逾時則此字段值為0 ;若封包表示請求認證逾時則此字段值和Type值為2 (ACK-CHALLENGE)的封包中此字段的值相同;
(3) 在Pap認證方式中,此字段無意義,其值為0;
(4) 在Type值為 5(REQ-LOGOUT) 的封包中,若封包表示請求下線時則此字段值為0 ;
(5) 在Type值為1、6 (REQ-CHALLENGE , ACK-LOGOUT) 的封包中,該字段均無意義,值都為 0;
UserIP
UserIP字段為Portal使用者的IP位址,長度為 4 位元組,其值由Portal Server根據其獲得的IP位址填寫,在所有的封包中此字段都要有具體的值;
UserPort
UserPort字段目前沒有用到,長度為 2 位元組,在所有封包中其值為0;
ErrCode
ErrCode字段和Type字段一起表示一定的意義,長度為 1位元組,具體如下:
(1) 對于Type值為1、3、7的封包,ErrCode字段無意義,其值為0;
(2) 當Type值為 2 時:
ErrCode=0,表示AC裝置告訴PortalServer請求Challenge成功;
ErrCode=1,表示AC裝置告訴PortalServer請求Challenge被拒絕;
ErrCode=2,表示AC裝置告訴PortalServer此連結已建立;
ErrCode=3,表示AC裝置告訴PortalServer有一個使用者正在認證過程中,請稍後再試;
ErrCode=4,則表示AC裝置告訴PortalServer此使用者請求Challenge失敗(發生錯誤);
(3) 當Type值為 4 時:
ErrCode=0,表示AC裝置告訴PortalServer此使用者認證成功;
ErrCode=1,表示AC裝置告訴PortalServer此使用者認證請求被拒絕;
ErrCode=3,表示AC裝置告訴PortalServer有一個使用者正在認證過程中,請稍後再試;
ErrCode=4 ,表示AC裝置告訴PortalServer此使用者認證失敗(發生錯誤);
(4) 當Type值為 5 時:
ErrCode=0,表示此封包是Portal Server發給AC裝置的請求下線封包;
ErrCode=1,表示此封包是在Portal Server沒有收到AC裝置發來的對各種請求的響應封包,而定時器時間到(即逾時)時由PortalServer發給AC裝置的封包;
(5) 當Type值為 6 時:
ErrCode=0,表示AC裝置告訴PortalServer此使用者下線成功;
ErrCode=1,表示AC裝置告訴PortalServer此使用者下線被拒絕;
ErrCode=2, 表示AC裝置告訴Portal Server此使用者下線失敗(發生錯誤);
(6) 對Type為REQ_INFO時,ErrCode無意義,其值為0;
(7) 對Type為NTF_LOGOUT時,ErrCode含義如下:
下線
(8) 對Type為ACK_INFO時,ErrCode含義如下:
處理成功,但不表示全部消息都被擷取了,有多少資訊被獲得應通過屬性來判斷,詳見下文
1
功能不支援,表示裝置不支援這一功能
2
消息處理失敗,由于某種不可知原因,使處理失敗,例如詢問消息格式錯誤等。
本文轉自 msft 51CTO部落格,原文連結:http://blog.51cto.com/victorly/1845786,如需轉載請自行聯系原作者