0×1.DHCP工作過程
DHCP工作流程如下:

DHCP客戶端(PC1)被配置成自動獲取IP,R1上面配置了DHCP服務(wù),當(dāng)PC1啟動連接網(wǎng)絡(luò)時,通過下面的步驟來從DHCP服務(wù)端(R1)上獲取IP:
1)PC1通過網(wǎng)卡向外廣播DHCP Discover信息,該數(shù)據(jù)包的目的MAC是廣播MAC地址(FFFFFFFFFFFF),源MAC地址是PC1的網(wǎng)卡MAC地址;該數(shù)據(jù)包的目的IP是255.255.255.255,源IP是0.0.0.0;DHCP使用UDP協(xié)議,該數(shù)據(jù)包的目的UDP端口是67(DHCP服務(wù)端使用的UDP端口),源UDP端口是68(客戶端使用的UDP端口)。
2)R1收到PC1的DHCP Discover廣播包,比如上圖中R1的Fa0/0接口配置的IP地址是192.168.1.1/24,R1從Fa0/0接口接收到PC1的DHCP Discover廣播包后,它在本地的DHCP配置中尋找可以和自己Fa0/0匹配的地址池(192.168.1.0/24這個子網(wǎng)的地址池),如果配置了這個地址池,R1查找這個地址池中還可以使用的IP地址;這里假設(shè)192.168.1.100是可用的,R1在提供租用地址之前首先會發(fā)送一個ARP查詢包,查詢192.168.1.100在網(wǎng)絡(luò)上有沒有被使用,如果收到應(yīng)答,表明這個IP已經(jīng)被使用,R1在地址池中換一個地址再發(fā)送ARP查詢,直到找到?jīng)]有ARP回復(fù)的那個IP地址。
3)R1向PC1發(fā)送DHCP Offer信息,其中包括這個沒被使用的IP地址,DHCP Offer包仍然是一個廣播包,目的MAC是廣播MAC地址,源MAC是R1的Fa0/0的MAC地址,目的IP是255.255.255.255,源IP是192.168.1.1,目的端口是UDP68,源端口是UDP67。
4)在上面幾步中,如果PC1發(fā)送的DHCP Discover廣播沒有DHCP服務(wù)端回復(fù),PC1將無法獲得IP地址,PC1會每隔一段時間發(fā)送一次DHCP Discover,在沒有請求到IP地址的這段時間里,Windows主機會被臨時分配一個屬于169.254.0.0/16的本地地址。
5)接著上面的第三步,PC1收到R1發(fā)回的DHCP Offer信息,PC1馬上發(fā)送DHCP Request包,表示自己將使用R1所提供的IP地址;該數(shù)據(jù)包還是一個廣播包,目的MAC是廣播MAC,源MAC是PC1的網(wǎng)卡MAC,目的IP是255.255.255.255,源IP是0.0.0.0,傳輸層的目的UDP端口是67,源UDP端口是68。DHCP Request中包含了要選擇的DHCP服務(wù)器(R1的Fa0/0接口)的IP地址以及客戶端(PC1)將要使用的IP地址。
6)R1收到PC1發(fā)來的DHCP Request信息后,馬上發(fā)送DHCP Ack確認信息,該確認信息也是以廣播發(fā)送的(和第三步中的包頭差不多,這里就不描述了)。DHCP Ack中包含了一些其他選項,比如子網(wǎng)掩碼、默認網(wǎng)關(guān)、DNS地址、租約期限、域名等。
7)PC1收到DHCP Ack后,利用其中的信息配置自己的TCP/IP屬性,然后廣播一個ARP Reply包,這個包的目的是通知其他設(shè)備,該IP地址已經(jīng)被使用。
0×2.DHCP配置實例
a.思科路由器如何配置DHCP
在GNS3中搭建下面的拓撲,PC1-2為vpcs模擬兩臺真實計算機,R1是c3640路由,接口連線與IP如下圖所示,在R1上配置DHCP服務(wù),讓PC1-2分別獲取到自己網(wǎng)段的IP地址:

R1>
en
02
R1#
conf
t
03
/配置接口IP/
04
R1(config)#
int
fa 1/0
05
R1(config-if)#
ip
add
192.168.1.254 255.255.255.0
06
R1(config-if)#
no
shut
07
R1(config-if)#
int
fa 2/0
08
R1(config-if)#
ip
add
192.168.2.254 255.255.255.0
09
R1(config-if)#
no
shut
10
R1(config-if)#
exit
11
12
/配置dhcp地址池,地址池自定義名稱為xxx1/
13
R1(config)#
ip
dhcp
pool
xxx1
14
15
/這個地址池的可用IP范圍/
16
R1(dhcp-config)#
network
192.168.1.0 255.255.255.0
17
/默認網(wǎng)關(guān)/
18
R1(dhcp-config)#
default-router
192.168.1.254
19
/默認DNS地址/
20
R1(dhcp-config)#
dns-server
192.168.1.254
21
/域名(可選)/
22
R1(dhcp-config)#
domain-name
www.qingsword.com
23
/租約期限,3天/
24
R1(dhcp-config)#
lease
3
25
R1(dhcp-config)#
exit
26
27
/配置第二個地址池/
28
R1(config)#
ip
dhcp
pool
xxx2
29
30
R1(dhcp-config)#
network
192.168.2.0 255.255.255.0
31
R1(dhcp-config)#
default-router
192.168.2.254
32
R1(dhcp-config)#
dns-server
192.168.2.254
33
R1(dhcp-config)#
domain-name
www.qingsword.com
34
R1(dhcp-config)#
lease
1
35
R1(dhcp-config)#
exit
36
37
/排除地址,下面兩個地址不會被DHCP分配出去,因為他們是路由接口地址/
38
R1(config)#
ip
dhcp
excluded-address
192.168.1.254
39
R1(config)#
ip
dhcp
excluded-address
192.168.2.254
40
R1(config)#
end
完成后,打開PC1-2的終端,使用自動獲取IP命令:
1
/都能正確的獲取IP地址,如果是在真實PC上面自動獲取,還能看到域名租約期限等信息/
2
VPCS> set pcname PC1
3
PC1>
ip
dhcp
4
DDORA IP 192.168.1.1/24 GW 192.168.1.254
5
6
VPCS> set pcname R2
7
R2>
ip
dhcp
8
DDORA IP 192.168.2.1/24 GW 192.168.2.254
本來這一部分想用GNS3+VMware中的PC來模擬,但考慮到實驗的復(fù)雜度和描述難度,就使用vpcs代替了。
b.思科路由器如何配置DHCP中繼
如下圖所示,R1的f1/0連接到一臺vpcs,R1是DHCP中繼服務(wù)器,R2是DHCP服務(wù)器,R1負責(zé)將vpcs發(fā)來的DHCP廣播請求以單播的形式發(fā)給DHCP服務(wù)器R2:

R1配置:
01
R1>
en
02
R1#
conf
t
03
04
R1(config)#
int
fa 1/0
05
R1(config-if)#
ip
add
192.168.1.254 255.255.255.0
06
/*
07
- 在與PC客戶端相連的那個接口上配置DHCP中繼服務(wù),
08
"ip helper-address 12.1.1.2"
09
- 將這個接口收到的DHCP廣播請求以單播形式發(fā)給DHCP服務(wù)器12.1.1.2,
10
- DHCP中繼與DHCP服務(wù)器之間必須路由可達。
11
*/
12
R1(config-if)#
ip
helper-address
12.1.1.2
13
R1(config-if)#
no
shut
14
15
R1(config-if)#
int
s 0/0
16
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
17
R1(config-if)#
no
shut
18
R1(config-if)#
end
R2配置:
01
R2>
en
02
R2#
conf
t
03
04
R2(config)#
int
s 0/1
05
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
06
R2(config-if)#
no
shut
07
R2(config-if)#
exit
08
09
/DHCP地址池排除R1以太網(wǎng)接口的IP/
10
R2(config)#
ip
dhcp
excluded-address
192.168.1.254
11
/配置地址池與參數(shù)/
12
R2(config)#
ip
dhcp
pool
192pool
13
R2(dhcp-config)#
network
192.168.1.0 255.255.255.0
14
R2(dhcp-config)#
default-router
192.168.1.254
15
R2(dhcp-config)#
dns-server
192.168.1.254
16
R2(dhcp-config)#
domain-name
www.qingsword.com
17
R2(dhcp-config)#
lease
3
18
R2(dhcp-config)#
exit
19
20
/如果PC1要和R2通信還要添加下面一條靜態(tài)路由(這一句并不是DHCP中繼必須的)/
21
R2(config)#
ip
route
192.168.1.0 255.255.255.0 12.1.1.1
22
R2(config)#
end
PC1上通過DHCP獲取IP:
1
/成功獲取到IP和網(wǎng)關(guān)/
2
VPCS>
ip
dhcp
3
DDORA IP 192.168.1.1/24 GW 192.168.1.254
4
5
/嘗試
ping
R2,通信成功,如果沒有在R2上配置那條靜態(tài)路由,就
ping
不通/
6
VPCS>
ping
12.1.1.2
7
84 bytes from 12.1.1.2 icmp_seq=1 ttl=254 time=49.999 ms