DHCP

November 11, 2017

DHCP

DHCP(Dynamic Host Configuration Protocol),屬於第七層的 Application Layer。DHCP 此協定運作於 Server-Client 的架構之中,來讓 Client 端取得網路相關的設定,包含 IP AddressDefault RouteDNS。Client 端指的是一般電腦設備,而 Server 端就是DHCP Server。

優點

  1. 有效節省 IP
  2. 減少維護者負擔
  3. 容易維護

DHCP 的 port

DHCP 分配(Allocate)IP 位址方式

  1. 動態分配方式 DHCP Server 上設定好一個 IP Address 範圍以及使用期限,以便回收 IP Address,以便給其它 Client。
  2. 靜態分配方式 DHCP Server 根據已定義並手動寫入對應表的 MAC 位址與 IP 位址來分配。
  3. 自動分配方式 DHCP Server 可以針對事先已經定義好的 IP Address 範圍來分配 IP Address 給 Client 端,IPAddress 的使用是沒有期限,相對的DHCP Server 會記錄 Client 端使用的 IP Address,以避免 IP Address 衝突。

Client 取得 DHCP 設定過程

wiki

Discovery(Client端→DHCP Server)

Client 端以 Broadcast 找尋 DHCP Server。設定 DHCP Relay Agent,以達到跨網路尋求的步驟。

Offer(DHCP Server→Client端)

DHCP Server 接收 Discovery 之後,DHCP Server 會回傳一個 MAC 位址和其它網路設定資料(Subnet Mask、Default Route Address以及 DHCP Server Address 等等)。

Request(Client端→DHCP Server)

Client 端獲取 Offer 網路封包後,此時這用戶端就知道要合作的 DHCP Server 在哪, 會發送 Broadcast,因為 Client 端必須要讓其他 DHCP Server 知道有 DHCP Server 在幫忙。

Acknowledge(DHCP Server→Client端)

確認時效以及所有其他設定資料,TCP/IP 在 DHCP 之下就完成。

封包格式

OP

1:Client 端送出 2:Server 端送出

htype

網路類型 1:Ethernet

hlen

MAC 長度 Ethernet:6

Hops

Client 端將封包送出,此值為 0 Relay Agent 轉送到 DHCP Server 時加 1

Xid

Client 端藉由此數字,分辨 DHCP Server 所回應的是哪一個封包。

CIADDR

Client IP address

YIADDR

Your IP address

SIADDR

Server IP address

GIADDR

Gateway IP address

CHADDR

Client hardware address

實作

跳過 Route 上的介面 IP 設定。

R1(DHCP Server)

以下示範(圖資7樓),其餘類似(圖資五樓、行政)

DHCP_Server(config)#ip dhcp pool CSIE
DHCP_Server(dhcp-config)# network 192.168.23.64 255.255.255.192 # 要派出去的 IP 範圍
DHCP_Server(dhcp-config)#default-router 192.168.23.126       # Default Gateway
DHCP_Server(dhcp-config)#dns-server 192.168.12.101 192.168.12.102 # DNS Server
DHCP_Server(dhcp-config)#lease 7 # 租用天數
R1(config)#ip dhcp excluded-address 192.168.23.120 192.168.23.126 # 120~126保留
R1(config)#ip dhcp excluded-address 192.168.23 62 # 保留
R1(組態)

使用 Show runn 指令

PC4(取得 DHCP)
PC4> ip dhcp

DHCP Relay

DHCPbroadcast 傳送,如果 DHCP Server 與 Client 端不在同一個網段,就無法連接,Route 會阻擋 broadcast。得靠 DHCP Relay。 記得,要被 Relay 的 Route 要設置路由協定,讓它能跟 DHCP Server 通訊,否則封包傳送不到。

R3 0/0
interface FastEthernet0/0
ip address 192.168.23.190 255.255.255.192
ip helper-address 192.168.22.1 # ip 填上 DHCP Server IP。
PC8

查看 DHCP Server 指派的 IP

DHCP Server 下以下指令

Show ip dhcp binding

Wireshark 查看 SW1 e6 到 PC5 介面流量

發現 Discovery(frame 4)和 Request(frame 6)以 Broadcast 發送。

查看 Frame 4 封包內容(Discovery)

(Client端→DHCP Server)

查看 Frame 5 封包(Offer)

(DHCP Server→Client端)

Unicast 回應,給了 IPlease TimeSubnet MaskDNS 等資訊。如下:

查看Frame 6封包(Request)

(Client端→DHCP Server) 省略前半部內容(幾乎一樣的內容 Boot Reply 需要注意)。 以下查看 Option 內容

SW3 e7 > PC7 查看 DHCP Relay agent 流量

這邊的 DHCP 是有做 Relay agent

查看 Frame 38封包(Offer)

多了 Relay agent IP Address 位址。再往下看

DHCP Server Identifier 是我設定 192.168.22.1 DHCP Server位址。其餘封包內容跟一般 DHCP 大同小異。

參考資料

wikiwand ietf netadmin link