顯示具有 DHCP 標籤的文章。 顯示所有文章
顯示具有 DHCP 標籤的文章。 顯示所有文章

3月 22, 2011

DHCP 協定

DHCP (Dynamic Host Configuration Protocol)
功能:動態的分配 IP 位址、指定 TCP/IP 的其它參數

[ DHCP 角色 ]

1. DHCP Client:發 DHCP request 取得 IP
2. DHCP Server:收到請求,提供可用 IP
3. Scope:可以用的 IP (想成 IP pool)

[ DHCP 運作原理 ] ... 以下流程全是以廣播完成 (因尚未取得 IP)

1. client 廣播送出 DHCP discovery
2. server 廣播回答 DHCP offer
3. client 收到 offer 後會決定是否採用該 IP (通常 client 會收到很多 offer)
4. client 決定使用之後會廣播 DHCP request 通知 server (順便也通知其他人落選)
5. server 在收到 request 之後,會用 DHCP ACK 來最終確定,如果該 IP 提前
被其他主機搶用,則 server 會回應 NACK

[ DHCP 租約更新 ]

使用 DHCP request 以 unicast 的方式通知 server
當租約超過 1/2 時會進行 Renewal
當租約超過 7/8 時會進行 Rebinding

[ DHCP relay agent ]

如果 DHCP server 與 client 是在不同網段,就要使用到 relay agent
DHCP client <--broadcast--> relay agent <--unicast--> DHCP server

或者 router 願意做 DHCP forwarding,不會把封包擋下來:
client -> Router(DHCP Fw) -> server

[ DHCP snooping ]

為了加強 DHCP 機制,在 switch 上加入功能,當 DHCP server 核發 IP 時
switch 會去確保這個 IP 是由當初提 request 的 client 所使用,
即 IP/MAC 的對應要正確。

1. 記憶主機的 MAC 位址
2. 只允許特色的 DHCP server 被存取
3. 主機只能使用核發的 IP 而不可任意使用其他 IP

**

[ BOOTP ]

Bootstrap Protocol

架構在 UDP/IP 之上的協定,允許一台無磁碟主機,透過網路送出請求,
藉由自己的 MAC 位置查詢對應 IP,並得到開機印象檔(boot file) 進行開機。

RARP 只能在 LAN 裡面運作,而 BOOTP 可以經由 Router 轉送。
BOOTP 使用的 port Server:UDP67 , Client:UDP68

12月 24, 2010

DHCP snooping

DHCP Snooping 加強 DHCP 的安全性,主要是運作在 Switch 上面。

當 DHCP Server 分派一個 IP 位址給 Client 時,Switch 會去記憶並且確保這個 IP 位址是由當初發起 Request 的主機使用。也就是說在 IP/MAC 的對應上,只有特定 MAC 位置(當初 Request 者)才能用該核發 IP

DHCP snooping 屬於 L2 的技術,主要服務項目:
1. 記憶主機的 MAC 位址
2. 主機只能使用核發給予的IP (也就是說不能搶其他人的 IP 來用)
3. 只有特定的 DHCP Server 才允許被存取

12月 14, 2009

關於 DHCP 協定

APIA(Automatic Private IP Address) 可以在 DHCP Client 找不到 Server 時自動配置一個 IP 位址,完成 TCP/IP 垃址設定。而且在 APIPA 配置 IP 前,還會先使用 ARP 去檢查 IP 是否已經被使用,避免 IP 相衝的狀況。

** 找不到 DHCP Server **
當 DHCP Client 發出 Discover 封包,而未收到 DHCP Server 回應時,Client 會有什麼樣的反應?!

分為兩種情況:

(1)在 APIPA 功能開啟下,系統會將 IP 設成 169.254.0.0/16 中任一個 IP。雖然 Client 已經使用 APIPA 設定 IP 位址,不過每隔 5 分鐘仍會發出 Discover 找詢 Server,若找到 Server,則放棄使用原本的 168.254.0.0/16 的 IP。

(2)若 APIPA 功能末使用,則從第一次發出 Discover 封包後,每隔 5 分鐘會再發出封包,重試三次,若最後仍無收到 Server 回應則 TCP/IP 的設定就宣告失敗。

小結:
使用 APIPA 功能 → 從 169.254.0.0/16 中選一組 IP → 每隔 5 分鐘發出 Discover → 持續送出。
未用 APIPA 功能 → 第一次發出 Discover 封包後,每隔 5 分鐘再發一次 → 重覆三次 → 沒回應則宣告 TCP/IP 設定失敗。

** 重新啟動電腦後,要求更新租約 **
重開新機後,Client 在前次開機時,就已經取的IP,而且租約尚未過期。在這個狀況下,電腦會以廣播方式送出 Request 封包。在此封包中會含有 Requested Address 欄位,而此欄位值會填入前次所租用的 IP 位址。當 Server 收到此封包後,會判斷所要求的 IP 位址可否給 Client 用。如果可以則回覆 ACK 封包,否則送出 NACK。

** DHCP Relay Agent 議題 **
由於 Server 與 Client 之間,常以廣播方式傳送封包如果兩者位於不同的子網路下,則廣播封包會被 Router檔下來。那麼 Server 與 Client 無法進行溝通。

有兩種方法可以解決這個問題:

(1) 啟用 Router 的 DHCP Forwarding 功能
此功能是指 Router 收到 DHCP 廣播封包時,會讓封包通過如果 Router 支援 RFC 1542 則表示具有 DHCP Forwarding 功能

(2)指定某台電腦當 DHCP Relay Agent
DHCP Relay Agent 的功能相當於封包轉換程式,將廣播封包改以DHCP Server 為目的地的 Unicast 封包:

DHCP Request -> DHCP Relay Agent ---(Unicast)--> DHCP Server

使用 Unicast 的方式傳送 DHCP Request 封包,就不會被 Router 檔下來。

Agent 的作用主要是更改 DHCP Request 封包表頭。並以 Unicast 的方式傳給 Server,而Server 收到時,會再藉由 Agent進行 Relay 動作。DHCP Relay Agent 會以廣播的方式,傳回給 Client。

小結:
DHCP Client 廣播送出 Discover → DHCP Relay Agent 收到後 → 更改表頭,以 Unicast 送給 Server ---(Unicast)--> DHCP Relay Agent → Agent 以廣播方式回應 DHCP Client。

DHCP 使用 UDP 協定,其使用的 Port 則是: Client:67 <---> Server:68