动态主机配置协议(Dynamic Host Configuration Protocol ,DHCP)是一个局域网的网络协议,使用udp协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址;给用户或者内部网络管理员作为对所有计算机作中央管理的手段。端口号:server端 67 ,client端 68

地址分配方式:

Manual  Allocation  手工分配

  为每个主机绑定一个固定的IP地址,这种绑定是永久有效的。缺点:IP地址利用率低

Automatic Allocation 自动分配

  客户端从地址池中获得ip地址,一经获得,永久绑定。缺点:IP地址利用率低

Dynamic Allocation 动态分配

  客户端从地址池中获得ip地址,但是并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。优点:动态分配,IP地址利用率高。

 

DHCP的工作原理

]QD6YF40LQHG3243K0OQ@ZH

  dhcp客户端获得地址的过程分为以下4步:

1.DHCP DISCOVER (寻找DHCP Server)

当 DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0 ,而目的地址则为255.255.255.255 ,然后再附上 DHCP discover 的信息,向网络进行广播。若一直得不到响应的情况下,客户端一共会有四次 DHCP discover 广播。如果都没有得到 DHCP 服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败,dhcp客户端自动生成一个169.254.*.* 的地址来使用。

2.DHCP OFFER(提供 IP 租用地址)

   当 网络上DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它们会从那些还没有租出的地址范围内选择空置 IP ,响应给客户端一个 DHCP OFFER 封包,包内只包含一个ip地址信息,而没有网关,子网掩码,dns等信息。由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP discover 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer (通常是最先抵达的那个)。

3.DHCP REQUEST(DHCP 请求)

当DHCP 客户端收到dhcp offer 包后,将向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。同时,客户端还会向网络发送一个 ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLIENT 封包给 DHCP 服务器,拒绝接受其 DHCP offer ,并重新发送 DHCP discover 信息。若网络上没有其它机器使用该 IP 地址,则向提供该ip的dhcp服务器提出使用该ip地址的请求,并通告其他dhcp服务器,客户端已使用其他dhcp服务器的ip地址。

3.DHCP ACK(租约确认)

当 DHCP 服务器接收到客户端的 DHCP request 之后,会向客户端发出一个

DHCPACK 响应,以确认 IP 租约的正式生效。包中包含该ip地址的详细参数:子网掩码,默认网关,dns指向,还有租约信息。客户端将ack包中的信息写入自己的网卡中,结束了一个完整的 DHCP 工作过程。

dhcp客户端地址更新过程:

客户端获得ip地址后,当客户端重启机器后,客户端发送dhcp request广播包,请求继续使用重启前的ip地址。若请求成功,则租约将重新计时。到达租约期限的50%时,客户端要进行续约,发送dhcp request广播包,请求继续使用正在使用ip地址,若此时dhcp服务器不在线,则一直请求到租约的87.5%,若还请求不到,则发送dhcpdiscover报文,重新查找网络上的dhcp服务器,若仍找不到dhcp服务器,到达租约的100%时,系统自动产生一个169.254.*.* 的地址来使用。

下面通过4个案例详细介绍dhcp的配置过程:

  案例一:DHCP单作用域

  案例二:DHCP超级作用域

  案例三:DHCP中继(linux作为路由器和dhcp服务器)

  案例四:DHCP中继(windows server 2008作为路由器和dhcp服务器)

 

案例配置

案例一  DHCP单作用域

实验要求:

dhcp服务器为两台PC分配ip地址,PC1 要求从地址池中自动获得ip地址,PC2要求通过静态绑定获得ip地址。

 

拓扑图

p_w_picpath

 

配置步骤

1.新建挂载点,挂载光盘,安装dhcp服务器软件

p_w_picpath

2.修改dhcp的配置文件:/etc/dhcpd.conf,将/usr/share/doc/dhcp*/dhcpd.conf.sample读取到该配置文件内。

p_w_picpath

p_w_picpath

3.重启dhcp服务器

p_w_picpath

4. tail –F  /var/log/messages ,可以发现192.168.101.2  192.168.101.253已经派发给主机

p_w_picpath

5. pc1从地址池中得到ip地址192.168.101.253

p_w_picpath

6.PC2 通过mac---ip地址绑定,得到ip地址:192.168.101.2

p_w_picpath

 

 

 

案例二:超级作用域

在linux服务器上搭建dhcp超级作用域,使两台pc分别获得2.0 和3.0 网段ip

 

拓扑图

p_w_picpath

配置步骤

1.新建挂载点,挂载光盘,安装dhcp服务器软件

p_w_picpath

2.修改dhcp的配置文件:/etc/dhcpd.conf,将/usr/share/doc/dhcp*/dhcpd.conf.sample读取到该配置文件内。

p_w_picpath 

p_w_picpath

3重启dhcp服务器

p_w_picpath

4.pc1从子作用域192.168.2.0中获得ip192.168.2.3

p_w_picpath

5.pc2从子作用域192.168.2.0中获得ip192.168.3.3

p_w_picpath

 

案例三:DHCP中继(linux作为路由器和dhcp服务器)

如图所示,某公司有两个部门:技术部tec和市场部mkt,两个不能分处不同vlan,服务器vlan中有一台dhcp服务器,现要求使用该dhcp服务器为技术部和市场部提供ip地址。

实验环境中,使用一台linux主机作为路由器,另一台linux主机作为dhcp服务器,将linux路由器的三个网卡分别处于不同的vnet来模拟vlan的环境:接口eth0处于vnet1,eth1 处于vnet2,eth2处于vnet3.

拓扑图:

 

p_w_picpath

 

配置步骤:

linux DHCP Server 的配置

1.新建挂载点,挂载光盘,安装dhcp服务器软件

p_w_picpath

2.修改dhcp的配置文件:/etc/dhcpd.conf,将/usr/share/doc/dhcp*/dhcpd.conf.sample读取到该配置文件内。

p_w_picpath

p_w_picpath

3.重启dhcp服务器,将网卡选在处于vnet3 区域,配置网关为192.168.101.254

p_w_picpath

linux router的配置

p_w_picpath

三个网卡的ip地址

p_w_picpath

1.新建挂载点,挂载光盘,安装dhcp服务器软件

p_w_picpath

2.编辑/etc/system/dhcrelay文件。在INTERFACES后要写做中继的接口:eth0,eth1,但是还要写上与dhcp服务器所连的接口,可通过man dhcrelay查看

The  -i  flag  can be used to specify the network interfaces on which
       the relay agent should listen.  In general, it must listen not  only
       on  those  network interfaces to which clients are attached, but also
       on those network interfaces to which the server (or the  router  that
       reaches  the  server) is attached.

p_w_picpath

3.打开linux router的路由转发功能:vim   /etc/sysctl.conf

p_w_picpath

4.sysctl -p 使/etc/sysctl.conf的修改生效

p_w_picpath

5.启动dhcrelay服务:service dhcrelay restart

p_w_picpath

6.测试

找一台pc,将其网卡选择在vnet1区域。可以发现,该pc获得了ip为192.168.101.250的dhcp Server提供的ip地址192.168.10.253。

p_w_picpath

找一台pc,将其网卡选择在vnet2区域。可以发现,该pc获得了ip为192.168.101.250的dhcp Server提供的ip地址192.168.20.253。

p_w_picpath

两台dhcp客户端都成功获得了ip地址,且处于所在部门网段内。

 

 

案例四:DHCP中继(windows server 2008作为路由器,windows server 2008作为dhcp Server)

 

如图所示,某公司有两个部门:技术部tec和市场部mkt,两个不能分处不同vlan,服务器vlan中有一台wins  2003 dhcp服务器,现要求使用该dhcp服务器为技术部和市场部提供ip地址。

实验环境中,使用一台windows server2008 主机作为路由器,另一台windows server2008 主机作为dhcp服务器,将windows server2008路由器的三个网卡分别处于不同的vnet来模拟vlan的环境:接口eth0处于vnet1,eth1 处于vnet2,eth2处于vnet3.

拓扑图

p_w_picpath

 

 

配置步骤:

 

windows server2008 DHCP服务器配置

1.配置dhcp服务器的ip地址

p_w_picpath

2.在服务器管理器中选择DHCP服务器

p_w_picpath

3.dhcp服务器的ip地址

p_w_picpath

4.dns选项配置,配置分派给dhcp客户端的dns参数

p_w_picpath

5.dhcp作用域配置,为技术部配置作用域:包括地址池,网关,域名,子网掩码,租约期限

p_w_picpath

6.dhcp作用域配置,为市场部配置作用域:包括地址池,网关,域名,子网掩码,租约期限

p_w_picpath

6.确认配置信息

p_w_picpath

安装完成,通过管理工具打开dhcp控制窗口;

p_w_picpath 

Router路由器配置

1.网卡eth0 配置,区域选择在vnet1

p_w_picpath

2.网卡eth1 配置,区域选择在vnet2

p_w_picpath

3.网卡eth2 配置,区域选择在vnet3

p_w_picpath

4.安装路由远程访问服务,使该服务器成为一台路由器

p_w_picpath

5.选择路由和远程访问

p_w_picpath

6.打开路由与远程访问控制台,配置并启用路由和远程访问

p_w_picpath

7.选择自定义配置

p_w_picpath

8.选择LAN路由

p_w_picpath

9.完成路由安装

p_w_picpath

10.启用路由和远程访问

p_w_picpath

11.在常规选项上点右键,选择新增路由协议

p_w_picpath

12.新增的路由协议为DHCP中继代理程序

p_w_picpath

13.在DHCP中继代理程序上单机右键,选择新增接口,增加要中继的接口

p_w_picpath

14.选择需要中继的接口,在WS2003中选择两个无dhcp服务器的网卡接口(这和linux不同,linux上应选择需要中继的接口和与dhcp服务器相连的接口)

p_w_picpath 

p_w_picpath

15.选择的中继接口:

p_w_picpath

16.在DHCP中继代理程序上单机右键,选择属性

p_w_picpath 

17.指明dhcp服务器的IP地址,当数据包到达该接口上时,将目的地址换为该地址。

p_w_picpath

 

 

测试

将测试pc的网卡选择区域为vnet1

p_w_picpath

查看dhcp服务器的地址租用

p_w_picpath

将测试pc的网卡选择区域为vnet2

p_w_picpath

查看dhcp服务器的地址租用

p_w_picpath

配置完成!