Rfc3315 Dynamic Host Configuration Protocol for IPv6 (DHCPv6) 組員: 蔡承翰 A1015503 陳鈺璋 A1015521 翁菘㠙 A1015537 指導老師 吳俊興
outline DHCP伺服器分配IP位址方式 主要設備 廣播方式 傳送訊息方式 DHCP格式 DHCP客戶端發起的配置交換 Relay Agent (中繼代理) 表現 安全注意事項 DHCP訊息認證 DHCP Option(Format)
DHCP伺服器分配IP位址方式 1. 動態分配方式 2. 靜態分配方式 3. 自動分配方式
主要設備 Client 用戶端設備 Server 伺服端設備 Relay Agent 中繼設備
廣播方式 Unicast Multicast Anycast
Client-server Exchanges Messages Two messages Four messages
封包傳送
Client and Severs Message Formats
Relay Agent/Server Message Formats
Reliability of Client Initiated Message Exchanges RT Retransmission timeout IRT Initial retransmission time MRC Maximum retransmission count MRT Maximum retransmission time MRD Maximum retransmission duration RAND Randomization factor
訊息發送規則 隨著訊息發送或重新發送,client會按照以下規則 建立RT(重發超時),如果RT到期,那麼client會從 新計算RT並且從發訊息。 每個RT計算會有RAND(亂數種子範圍在-0.1~+0.1 均勻分布) RAND是為了減少DHCP CLIENTS同步發送訊 息。 第一個訊息發送的RT會基於 IRT:RT=IRT+RAND*IRT之後每個訊息發送的RT 會根據前一個RT的值:RT=2*RTpre(前一個 RT)+RAND*RTpreMRT規定RT的取值上限(忽略 因使用得RAND而增加的隨機性)
訊息發送規則 如果MRT=0,RT就沒有上限否則:IF(RT>MRT) RT=MRT+RAND*MRTMRC規定重發上限, 傳送MRC次訊息表示傳送失敗。 MRD規定重發時間的上限,如果從client首次發送 訊息開始經過MRD秒,那麼表示傳送失敗。 如果MRC、MRD都不為零,那麼滿足其中一項成 立,就算傳送失敗~ 如果MRC、MRD都為零,那麼會傳送到響應為 止,在那之前都不算是失敗
Solicit(1) Type From To How and when to use Client behavior 客戶機 To 伺服器/中繼代理 How and when to use 客戶機給伺服器發送solicit消息,以便得到Ipv6位址,以及選項中所附帶的配置參數 Client behavior 建立solicit消息資料並將其發送給伺服器 Server behavior 首先驗證solicit消息的有效性,若消息資料中沒有包含`client identifier`或者包含有`server identifier`選項,則該資料無效並捨棄 根據管理策略來驗證伺服器是否允許接收該資料 若伺服器擁有可以分配的位址,則回發Advertise消息資料(狀態碼為成功),否則回發狀態碼為` NoAddrsAvail `的Advertise消息資料 若socilit消息資料中包含有`rapid commit`選項,則返回一個Reply消息資料.
Type Advertise (2) From 伺服器/中繼代理 To 客戶機 How and when to use 回應客戶機發送的solicit消息資料 Client behavior 1. 驗證Advertise消息資料的有效性: 若出現消息資料中不含有’server identifier’欄位和’client identifier’欄位,’client identifier’欄位中的DUID不匹配或者’transaction-id’欄位不匹配等情形,則該資料無效並捨棄; 若包含狀態碼選項值為NoAddrsAvail ,同樣丟棄該資料; 2. 基於某種策略(後面將有詳細介紹)選取Advertise消息資料; Server behavior 給客戶機發送advertise消息資料,資料中包含一些設置的欄位與選項
Type Request (3) From 客戶機 To 伺服器/中繼代理 How and when to use 客戶機請求更多的配置參數 Client behavior 建立並發送request消息資料給伺服器 Server behavior 1. 首先驗證request消息的有效性:若消息中不包含client identifier選項和server identifier選項,或者選項中的DUID內容與伺服器不匹配,則該資料無效並捨棄 2.若無可用的位址分配,則返回一個狀態碼為NoAddrsAvail的Reply消息 3. 若伺服器發現在IA選項中的位址首碼與自身不匹配,則返回一個狀態碼為NotOnLink的Reply消息資料 4.建立一個Reply消息資料,其中包括客戶機所需要的位址以及其他參數配置資訊。
Type Confirm (4) From 客戶機 To 伺服器/中繼代理 How and when to use 由於客戶機的狀態發生變化,發送confirm消息資料去確認是否之前的配置是否還適合 Client behavior 當客戶機出現以下情形時:重啟,客戶機改為有線連接,客戶機改變了無線接入點。此時客戶機需要發送confirm消息進行確認 Server behavior 1. 捨棄掉任何沒有包含`server identifier`和`client identifier`選項的消息資料; 2. 判斷消息資料中的IA選項中的位址是否與自己同屬一個鏈路,若是,返回一個狀態碼表示為為成功的Reply消息資料; 否則返回一個狀態碼為NotOnLink的消息資料;
Type Renew (5) From 客戶機 To 伺服器/中繼代理 How and when to use 要求伺服器延長之前分配的租約以及升級其它的參數 Client behavior 建立並發送Renew消息資料 Server behavior 1. 捨棄掉任何沒有包含`server identifier`和`client identifier`選項,或者`server identifier`選項中的DUID與伺服器不匹配的消息資料; 2. 驗證消息保證中`IA`選項中位址是否與伺服器中的存儲資訊吻合,若沒找到對應資訊,則返回狀態碼為`NoBinding`的Reply消息資料; 3. 返回包含新的lifetime, T1/T2值的Reply消息資料給客戶機
Type Rebind (6) From 客戶機 To 伺服器/中繼代理 How and when to use 要求伺服器延長之前分配的租約以及升級其它的參數,注意這個消息資料只有在之前客戶機發送的Renew消息資料沒得到伺服器回應後才產生 Client behavior 建立並發送Rebind消息資料 Server behavior 1.捨棄掉任何沒有包括`server identifier`和`client identifier`選項的Rebind消息資料; 2.若在伺服器中沒有找到與Rebind消息資料中的IA選項中吻合的位址,或者發現地址但不再適合本鏈路,則伺服器發回一個ilifetime置為0的Reply消息; 3. 若找到吻合的位址資訊,伺服器發回一個包含新的lifetime以及T1/T2值的Reply消息資料。
Type Reply (7) From 伺服器/中繼代理 To 客戶機 How and when to use 當伺服器收到客戶機發送的Solicit(含rapid commit選項),Request, Renew以及Rebind消息時,產生Reply消息資料回應 Client behavior Server behavior
Type Release (8) From 客戶機 To 伺服器/中繼代理 How and when to use 客戶機發送Release消息資料告知伺服器自己所分配的一個或者多個位址不再使用時產生Release消息資料 Client behavior 建立並發送Release消息資料,值得注意的是,釋放掉的位址不能再使用,若沒有收到Reply回饋消息資料,則實現重傳。 Server behavior 1. 捨棄掉任何沒有包含`server identifier`和`client identifier`選項,或者`server identifier`選項中的DUID與伺服器不匹配的消息資料; 2. 伺服器從Release消息資料IA選項中的地址清單中找出有效的位址(即是由本伺服器之前分配的),並將這些位址標記為available; 3. 返回一個Reply回饋消息資料;4. 伺服器保留分配資訊,以備下次直接將配置資訊賦給這台客戶機.
Type Decline (9) From 客戶機 To 伺服器/中繼代理 How and when to use 客戶機發送Decline消息告知伺服器自己所分配的地址已經被本鏈路的其它主機佔用 Client behavior 建立並發送Decline消息資料,注意Decline消息資料的`IA`選項中一定含有被佔用的位址資訊 Server behavior 1. 捨棄掉任何沒有包含`server identifier`和`client identifier`選項,或者`server identifier`選項中的DUID與伺服器不匹配的消息資料; 2. 伺服器檢測Decline消息資料中IA選項資料告的位址,並將其刪除,然後在本地做標記,下次將不再分配給其它客戶機 3. 處理完位址後,返回帶有狀態碼的Reply消息
Type Information-request (11) From 客戶機 To 伺服器/中繼代理 How and when to use 客戶機發送該消息資料給伺服器,僅僅為了得到配置參數,而不需要分配位址 Client behavior 建立並發送Information-request消息資料,若沒收到Reply回饋消息,則重傳消息資料 Server behavior 1. 驗證消息資料的有效性,若消息資料中包含`server identifier`並且選項中的DUID與本機伺服器不匹配,或者包含IA選項,則將該資料捨棄; 2.構造一個包含配置資訊的Reply消息資料併發送給客戶機
Type Reconfigure (10) From 伺服器/中繼代理 To 客戶機 How and when to use 伺服器通過發送Reconfigure消息去告知客戶機,伺服器端出現新的配置參數或者某些參數已經更新,並觸發客戶機同伺服器共同去完成Renew/Reply和Information-request/Reply Client behavior 1. 首先驗證消息資料的有效性:若消息資料不是單播傳給客戶機;沒有包含`server identifier`和`client identifier`,消息中沒有包含`Reconfigure message`選項,消息中包含`IA`選項並且`Reconfigure meaasge`選項的消息類型是` INFORMATION-REQUEST `,則將該消息資料捨棄;2.客戶機返回一個Renew或者Information-request消息資料 Server behavior 建立並發送Reconfigure消息資料,若在某個時間範圍內,沒有收到來自於客戶機的Renew或者Information-request消息,則伺服器重傳該消息資料
outline DHCP伺服器分配IP位址方式 主要設備 廣播方式 傳送訊息方式 DHCP格式 DHCP客戶端發起的配置交換 Relay Agent (中繼代理) 表現 安全注意事項 DHCP訊息認證 DHCP Option(Format)
Server Behavior Creation and Transmission of Reconfigure Messages server可能包含一個Option Request來確定client更改了什麼資訊或新增了什麼資訊。 server在RECONFIGURE設了msg-type,server將transaction-id設為0。在重新配置信息裡,server包含server標識選項(DUID)和client標識選項(client的DUID)。 為了避免client受到拒絕服務攻擊,在Reconfigure message裡server必須使用DHCP authentication(認證)。 Server不能在Reconfigure裡包含其他選項(除非在individual options裡有特別允許)
Server Behavior Time Out and Retransmission of Reconfigure Message 如果server沒有在REC_TIMEOUT milliseconds裡 從client那收到Renew或Information-request message,server就會重發message然後把 REC_TIMEOUT的值設成兩倍在等一次,server會 持續這個動作直到REC_MAX_RC unsuccessful attempts被made,然後server就會放棄對這個 client的處理。
Receipt of Information-request Messages Receipt of Renew Messages Server發送一個Reply message給client ,就算 client沒有要求,server也會在Reply message裡包 含IAs和其他參數的新值。 Server發送一個Reply message給client ,就算 client沒有要求,server也會在Reply message裡包 含其他參數的新值。 Receipt of Information-request Messages
Client Behavior Receipt of Reconfigure Messages 收到有效的Reconfigure messages後,client會用Renew message 或 Information-request message來回應,client會忽略在Reconfigure Message裡的transaction-id字段,在處理交易的過程中,client會默默的丟棄任何收到的Reconfigure Message。
Client Behavior Creation and Transmission of Renew Messages 當回應給Reconfigure時,client會產生然後發送Renew message 。 Creation and Transmission of Information- request Messages 當回應給Reconfigure時,client會產生然後發送Information-request message。
Client Behavior Time Out and Retransmission of Renew or Information-request Messages Client在做client-initiated configuration exchange(客戶端發起的配置交換)時也使用相同的variables和retransmission algorithm(重發算法),如果client沒有從server那收到回應,client就會忽略然後丟棄那個Reconfigure message。
Relay Agent (中繼代理) Behavior Relay Agent被用於配置目的地址的清單,其中包含 unicast address、ALL_DHCP_Servers multicast address或其他被網路管理員選到的address。 如果Relay Agent沒有明確的被配置,就會使用 ALL_DHCP_Servers multicast address做為預設。 如果Relay Agent傳播messages給 ALL_DHCP_Servers multicast address或其他 multicast address,它就會把Hop field設為32。
Relay Agent (中繼代理) Behavior Relaying a Message from a Client 如果relay agent收到來自client的message,relay agent會放global或site-scoped address給link (client需要被分配一個address),這個address被server用來確定link是哪個client要被配置address和其他組態資訊,然後將message的hop-count被設為0。
Relay Agent (中繼代理) Behavior Relaying a Message from a Relay Agent 如果relay agent收到的message是relay-forward message且hop-count比HOP_COUNT_LIMIT大,relay agent會丟棄這個message。 Relay agent從IP datagram(從client收到的對端消息)複製source address,將hop-count field的值+1。
Relay Agent (中繼代理) Behavior Relaying a Relay-reply Message Relay agent取出來自Relay Message option的message然後傳給在peer-address field裡的address。 如果 Relay-reply message 有Interface-id option,relay agent會用Interface-id option來辨認給哪給client。反之,如果link-address field沒被設為0,relay agent就會用link-address field來辨認位置。
Relay Agent (中繼代理) Behavior Construction of Relay-reply Messages Server用Relay-reply message來做 回傳回應給client (如果original message是要傳給server的) 傳Reconfigure message給client (如果server沒有可以直接傳給client的address)。 給client的回應必須由收到original client message的同一個relay agent來傳,server在Relay-reply message含一個Relay Message option來記錄在回傳給client的時候的路徑的下一個relay agent位置。
例子 如果client C傳一個message給server,其中經由 agent A和agent B,那server就會回傳一個下列的 Relay-Reply message給relay agent B msg-type: RELAY-REPLY hop-count: 1 link-address: 0 peer-address: A Relay Message option, containing: hop-count: 0 link-address: address from link to which C is attached peer-address: C
Security Considerations 其中一個攻擊方式就是編制一個惡意的server來提供不正確的 配置信息給client,這動機就是安裝一個 “man in the middle” 使client為了得到某些服務 (像DNS或NTP)和一個惡意的 server溝通,通過錯誤配置client使client的所有網路通信都失 敗,惡意server也可以發動denial of service attack(拒絕服務 攻擊)。 對DHCP client的另一個威脅是不慎錯誤配置了DHCP server, 而該DHCP server用非故意的不正確配置參數來回答client的 請求。
Security Considerations 針對client和server的威脅是”denial of service”(Dos 攻擊),在存在共享資源情況下這些攻擊可以在任何 時候出現,這些攻擊包含 The exhaustion of available addresses (資源耗盡) The exhaustion of CPU or network bandwidth (CPU或網寬耗盡)
outline DHCP伺服器分配IP位址方式 主要設備 廣播方式 傳送訊息方式 DHCP格式 DHCP客戶端發起的配置交換 Relay Agent (中繼代理) 表現 安全注意事項 DHCP訊息認證 DHCP Option(Format)
DHCP訊息認證
*DHCP message的認證 某些網路管理者或許希望可以提供DHCP訊息和內容的認證。 希望限制位址僅分配給授權的主機,藉此來避免在”敵對”的環境 (是指網路媒介在物理上是不安全的)中的阻斷式服務攻擊。 *中繼代理: 中繼代理(relay agent)是在不同子網上的客户端和 server之間中轉DHCP/BOOTP 訊息的程序。
* server和中繼代理間發送訊息的安全 相互間安全交換訊息的中繼代理和server使用IPv6的IPsec機制。 如果client端消息經過多個中繼代理,那麼每一個中繼帶必須 建立獨立的成對信任關係。 Client c ->relay agent A ->relay agent B -> Server 每個箭頭之間都是透過IPsec機制去做交換的。 他們之間溝通用IPsec機制需要在下列的狀況下使用: 包含 1.Selectors 2.Mode 3.Key management 4.Security policy 5.Aythentication 6.Availability
*接收advertise message Client 端會對任何包含認證(authentication)選項的Advertise訊息進行 如果接受未經認證訊息的決策,可能會造成容易被欺騙或其受他攻擊時 變得比較脆弱。如果此狀況沒有通知local user 客戶端接受未經認證的訊息, 那麼用戶們將會不正確的假設客戶端是接受到經認證的地址, 以及假設客戶端不會受到經由認證消息的DHCP攻擊。
*接收reply message *接收reconfigure 消息 如果客戶端接收到的reply message無法通過合法性的檢驗, 發送solicit消息來重新啟動DHCP的配置流程。 *接收reconfigure 消息 如果reconfigure的訊息沒有通過和法性檢測, 那麼客戶端必須拋棄reconfigure的訊息,並且記錄合法性檢測失敗。
*接收solict 消息和發送advertise消息 Server端在return 給client 端的advertise消息中包括認證的訊息。 Server 必須記錄為客戶端選擇的密鑰的標示福,在檢測後續為客戶端 交換的訊息合法性時,服務器使用的密鑰必須和那個相同得密鑰。 *重配置密鑰認證協議(Reconfigure Key Authentication Protocol) 重配置密鑰可以認證協議,提供錯誤配置客戶的保護,此錯誤 的配置客戶端由惡意的DHCP server發送reconfigure message所引起的。 在本協議中,DHCP server 發送 reconfigure key給DHCP消息初始交換中 的客戶端。客戶端記錄了該Reconfigure Key,以便在認證來自那個server 後續的認證消息中使用。
dhcp option(format)
DHCP OPTION格式 Option –code :標示此選項所帶有特定類型之選項的無符號整數 使用封裝將DHCPV6將選項分開。有些通常是適用於客戶端, 有些則是為IA特有的。
client Identifer 選項 Client Identifer選項用於client 和 server 之間帶有標示客戶端的DUID。
client Identifer 選項 Client Identifer選項用於client 和 server 之間帶有標示客戶端的DUID。
Server Identifier選項 Server identifier選項用於在客戶端和server 之間帶有標示server的DUID。
非臨時地址關聯選項 (Identity Association for Non-temporary Address Option)
*IAID :為IA_NA的唯一標示符,在客戶端所有的IA_NA必須是唯一的。 *T1和T2都是指一段時間,T1時間內,客戶端聯繫Server(為了獲得IA_NA 中的地址)以便擴展分配給IA_NA的地址生存期。T2時間內,客戶端聯繫 任何可以找到的Server,以便擴展分配給IA_NA的生存期。 * T1 和T2都差別在於聯絡的server對象不一樣,T1主要負責的是和 原先那個給予IA_NA中的網址,至於T2則是負責任何可以被找到Server (那些符合要求但是沒被選上的Server) *IA_NA選項儘可以出現在DHCP message中的選項區域內出現。
*其中DHCP又可包含多個IA_NA選項。 *跟IA_NA相關的任何運行狀態在都被規定在Status Code選項內。 *IA_NA明確說起來沒有精確的”生存期”,而是要等到IA_NA內所 有的地址合法性生存期到期才可以認為是IA_NA到期。 *T1和T2能使Server精確的控制Client何時可就特定的IA_NA再次與 Server連接。
臨時地址關聯選項 該選項是用於附有IA_TA、IA_TA關聯的參數/地址。 (Identity Association for Temporary Address Option) 該選項是用於附有IA_TA、IA_TA關聯的參數/地址。
IA_TA的生存期規定如同IA_NA,需要等到其內部的合法生存期到期,才 可以視為其生存期間到期。其中IA_TA必沒有包括T1&T2值,但是客戶端 依然可以請求擴展臨時地址的生存期,方法就是把發送到Server的 Renew message 和Rebind message中包括IA_TA選項內的地址。 (EX:客戶端請求擴展臨時位址的生存期,以便允許用已建立好的TCP連線) *註:在3315RFC中,並未說明IA_TA和IA_NA的差異在哪,唯一可知道的 是它們是攜帶的分別為IA_NA和IA_TA的相關參數。
IA Address Option IA Address Option 必須被封裝在IA_NA或是IA_TA選項的字段中。 IA Address Option用於規定與IA_NA 或IA_TA關聯的IPV6地址。 IA Address Option 必須被封裝在IA_NA或是IA_TA選項的字段中。 *可以出現在IA_NA和IA_TA中
Option Request選項 Option Request選項用於標示client 和Server消息間的選項列表。 Client可以在Solicit , Request , Renew , Confirm , Information-request” 消息中,包含Option Request選項以便通知Server。Server可以在 Reconfigure中包含Option Request選項,以便指出應當向哪個 Server請求那些選項。
DHCPv6與DHCPv4的差異 不再只是 DORA 模式(Discover, Offer, Request, Acknowledgement),改成前面提到的13種封包。 DHCPv6 並不會給 prefix length,而是將Prefix length (subnet mask) 的訊息放在 RA 中 “prefix information” 內的 “prefix length” 欄位。
DHCPv6與DHCPv4的差異 DHCPv6 並不會給 default gateway 位址,IPv6 hosts 的 default router 位址並不是由 RA 訊息或 DHCPv6 訊息提供的。當收到 RA 訊息時,IPv6 hosts 會取得封包的來源地 IPv6 位址。 由於 RA 訊息的來源地位址一定是 link local 位址, 所以 IPv6 hosts 的 default router 位址就會是 link local 位址。
END