一.dhcp服务简介:

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

DHCP 是 Dynamic Host Configuration Protocol(动态主机配置协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘启动并连接上网络,BOOTP则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性" ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常严重的资源浪费。DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 "租约" 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。DHCP 的分配形式 首先,必须至少有一台 DHCP 工作在网络上面,它会监听网络的 DHCP 请求,并与客户端磋商 TCP/IP的设定环境。

二.Dhcp提供服务的过程

      假设多部计算机在同一个网络当中,也就是说,DHCP Server 与他的 Clients 都在同一个网段之内,可以透过某些的方式来达到相互沟通的状态。那么Client 从 DHCP Server 得到 IP及相关参数信息的程序为: 

      ①若 Client 端计算机设定使用 DHCP 协议以取得网络参数时,则Client 端计算机在开机的时候,或者是重新启动网络卡的时候,会自动的发出 DHCPClient 的需求给网域内的每部计算机(名为dhcpdiscover的广播数据包):这个时候,由于发出的讯息希望每部计算机都可以接受,所以该讯息除了网络卡的硬件地址(MAC)无法改变外,需要将该讯息的来源软件地址设定为0.0.0.0 ,而目的地址则为 255.255.255.255 ( Linux 会自动设定,无须考虑这个问题!)。网域内的其它没有提供DHCP 服务的计算机,收到这个封包之后会自动的将该封包丢弃而不回应;

     ②DHCP 主机响应讯息:如果是 DHCP 主机收到这个Client 的 DHCP 需求时,那么 DHCP 主机首先会针对该次需求的讯息所携带的 MAC与 DHCP 主机本身的设定值去比对,如果 DHCP 主机的设定有针对该 MAC 做静态IP (每次都给予一个固定的 IP )的提供时,则提供 Client 端相关的固定 IP 与相关的网络参数;而如果该讯息的MAC 并不在 DHCP 主机的设定之内时,则 DHCP 主机会选取目前网络内没有使用的IP (这个 IP 与设定值有关) 来发放给 client 端使用!服务器通过广播形式向客户端提供名为dhcpoffer的数据包。其中包含提供给请求主机的ip地址及相关参数。此外,需要特别留意的是,在DHCP 主机发放给 Client 端的讯息当中,会附带一个『租约期限』的讯息,以告诉Client 端,IP 可以使用的期限有多长! 

     ③Client 端接受来自 DHCP 主机的网络参数,并设定 Client自己的网络环境:当 Client 端接受响应的讯息之后,首先会以 ARP 封包在网域内发出讯息,以确定来自DHCP 主机发放的 IP 并没有被占用!如果该 IP 已经被占用了,那么 Client 对于这次的DHCP 信息将不接受,而将再次向网域内发出 DHCP 的需求广播封包(名为:dhcpdiscover);若该 IP 没有被占用,则client 可以接受 DHCP 主机所给的网络的参数,那么这些参数将会被使用于 client端的网络设定当中,同时, Client 端也会以广播方式对 DHCP 主机发出名为dhcpquest确认封包,告诉 Server这次的需求已经确认!而 Server 也会比对该确认包中的ip地址及相关参数如果正确则将该信息记录下来。并向客户端发送dhcpack的确认封包;如果ip地址及参数不正确则放弃该确认包!

     ④Client 端结束该 IP 的使用权:当 Client 开始使用这个DHCP 发放的 IP 之后,有几个情况下他可能会失去这个 IP 的使用权:  Client 端离线:不论是关闭网络接口( ifdown)、重新开机 ( reboot )、关机 ( shutdown ) 等行为,皆算是离线状态,这个时候Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;  Client 端租约到期:前面提到 DHCP server 端发放的IP 有使用的期限, Client 使用这个 IP 到达期限规定的时间,就需要将 IP 缴回去!这个时候就会造成断线,而Client 也可以再向 DHCP 主机要求再次分配 IP!   以上就是 DHCP 这个协议在 Server 端与 Client 端的运作状态,由上面这个运作状态来看,可以明白,只要Server 端设定没有问题,加上 Server 与 Client 在硬件联机上面确定是 OK 的,那么Client 就可以直接从 Server 来取得上网的网络参数,当然啦,只要我们这些管理员能够好好的、正确的管理好我们的DHCP 。

 

三.Dhcp实例

 

1.实例1  配置超级作用域的dhcp服务器

(1.实验原理:

在一个超级作域中添加多个子作用域,可以同时为上千台主机提供dhcp服务。

(2.实验拓扑图

p_w_picpath

(3.实验环境简介

本实验使用linux 配置dhcp服务器。

(4.实验步骤

①.安装dhcp服务

[root@donghao244 ~]# mount /dev/cdrom /mnt/cdrom/ //光盘进行挂载

mount: block device /dev/cdrom is write-protected, mounting read-only

//以只读模式挂载

[root@donghao244 ~]# cd /mnt/cdrom/Server/ //进入软件包所在的创库目录

[root@donghao244Server]# rpm -ivh dhcp-3.0.5-21.el5.i386.rpm

Preparing... ############################[100%]

package dhcp-3.0.5-21.el5.i386 is already installed  //已经安装过了

②.修改dhcp服务器的配置文件(/etc/dhcpd.conf)

6 shared-network dongdong{   //超级作用域

  7 subnet 192.168.10.0 netmask 255.255.255.0 {  //第一个子域

10         option routers              192.168.10.244;  //网关

11         option subnet-mask         255.255.255.0;   //掩码

14         option domain-name        "domain.org";  //域名

15   option domain-name-servers 192.168.10.244; 23   //dns服务器

24   range dynamic-bootp 192.168.10.242 192.168.10.243; //地址池

25         default-lease-time 21600;

26         max-lease-time 43200

34 }

35 subnet 192.168.11.0 netmask 255.255.255.0 {  //第二个子域

36

37        option routers      192.168.11.244;

38        option subnet-mask  255.255.255.0;

40  option domain-name-servers  192.168.11.244;

42   range  dynamic-bootp   192.168.11.240  192.168.11.240;

43         default-lease-time 21600;

44         max-lease-time 43200;

45 }

46 }  //超级作用域的结束标志

③.启动dhcp服务器,并将dhcp加入开机自启动

[root@donghao244 Server]# service dhcpd restart //重新启动dhcp服务

Shuttingdown                dhcpd:      [  OK  ]

Starting                         dhcpd:      [  OK  ]

(5.实验验证

①.修改客户端的mac地址

 //此处的mac地址修改适用于主机不足的情况

[root@station98 Server]#vim /etc/sysconfig/network-scripts/ifcfg-eth0

//修改网卡所对应的文件,分别修改并添加如下两行

  5 #HWADDR=00:0C:29:FD:45:E3     //禁用此行

  6 MACADDR=88:AE:1D:D5:45:00    //添加此行

[root@station98 Server]# service network restart  //重新启动网卡

[root@station98 Server]# ifconfige   th0 

Link encap:Ethernet    HWaddr 88:AE:1D:D5:45:00

//mac地址已经成功修改

inet addr:192.168.10.243  Bcast:192.168.10.255  Mask:255.255.255.0

②.使用“dhclient”获得ip地址

直接执行“dhclient”获得ip地址

[root@station98 Server]# ifconfige   th0 

Link encap:Ethernet    HWaddr 88:AE:1D:D5:45:00

//mac地址已经成功修改

inet addr:192.168.10.243  Bcast:192.168.10.255  Mask:255.255.255.0

③.查看dhcp服务器的dhcpd.lease文件中的记录

[root@donghao244 Server]# cat /var/lib/dhcpd/dhcpd.leases

lease 192.168.10.243 {   //ip地址的租约文件

  starts 2 2012/08/14 12:06:34;

  ends 2 2012/08/14 18:06:34;

  binding state active;

  next binding state free;

  hardware ethernet 88:AE:1D:D5:45:00;

}

可以继续修改mac可以获得多个ip。这样可以 延伸出来一个小想法!

编辑一个脚本专门用于***网络中的dhcp服务器。使得dhcp服务器瘫痪。没有可分配的ip地址向主机提供。。。小邪恶,呵呵,可以一试,此处未完待续。。。。。。

2.实例2  配置dhcp中继的dhcp服务器

(1.实验原理:

在网络上的设备上配置dhcp中继服务。

(2.实验拓扑图

 

wps_clip_p_w_picpath-6880

 

(3.实验环境简介

此处以redhat 作为路由器。本实验主要在redhat上进行dhcp服务中继的配置。

(4.实验步骤:

①.dhcp服务器上安装dhcp服务

[root@donghao244 ~]# mount /dev/cdrom /mnt/cdrom/ //光盘进行挂载

mount: block device /dev/cdrom is write-protected, mounting read-only

//以只读模式挂载

[root@donghao244 ~]# cd /mnt/cdrom/Server/ //进入软件包所在的创库目录

[root@donghao244Server]# rpm -ivh dhcp-3.0.5-21.el5.i386.rpm

Preparing... ############################[100%]

package dhcp-3.0.5-21.el5.i386 is already installed //已经安装过了

②.修改dhcp服务器的配置文件

[root@donghao244 ~]# vim /etc/dhcpd.conf

  6 subnet 192.168.10.0 netmask 255.255.255.0 { //10.x网段的作用域

  7         option routers                  192.168.10.244;

  8         option subnet-mask              255.255.255.0;

  9         option domain-name-servers      222.88.88.88;

10         range dynamic-bootp 192.168.10.1 192.168.10.243;

11         default-lease-time 21600;

12         max-lease-time 43200;

13 }

14 subnet 192.168.20.0 netmask 255.255.255.0 { //20.x网段的作用域

15         option routers                  192.168.20.244;

16         option subnet-mask              255.255.255.0;

17         option domain-name-servers      222.88.88.88;

18         range dynamic-bootp 192.168.20.1 192.168.20.243;

19         default-lease-time 21600;

20         max-lease-time 43200;

21 }

22 subnet 192.168.30.0 netmask 255.255.255.0 { //30.x网段的作用域

23         option routers                  192.168.30.244;

24         option subnet-mask              255.255.255.0;

25         option domain-name-servers      222.88.88.88;

26         range dynamic-bootp 192.168.30.1 192.168.30.243;

27         default-lease-time 21600;

28         max-lease-time 43200;

29 }

③.在路由器上启用dhcrelay 中继服务

[root@station98 ~]# vim /etc/sysctl.conf //开启路由转发

7  net.ipv4.ip_forward = 1  //打开此行

执行 systcl -p //使修改生效

[root@station98 ~]# vim /etc/sysconfig/dhcrelay

//编辑中继服务器的脚本文件

  2 INTERFACES="eth0 eth1 eth2"    //开启转发的网卡

  3 DHCPSERVERS="192.168.10.244"

//dhcp服务器的ip地址

④.启动dhcp服务器,并将dhcp加入开机自启动

[root@donghao244 ~]# service dhcpd restart//重新启动dhcp服务

Shutting        down         dhcpd   [  OK  ]

Starting                      dhcpd:   [  OK  ]

[root@donghao244 ~]# chkconfig dhcpd on //加入开机自动启动

[root@station98 ~]# service dhcrelay start //重新启动dhcrelay服务

Starting                     dhcrelay  [  OK  ]

[root@station98 ~]# chkconfig dhcrelay on //加入开机自动启动

(5.实验验证

①.使用处于多个广播区域中的主机

环境配置为

第一种:

物理机的VMware Virtual Ethernet Adapter for VMnet1 连接“路由器”的eth 1 ,通过使用hostonly方式连接。

“路由器”的eth0与dhcp服务器处于同一个单独的vmnet 2 区域中。

第二种:

物理机的VMware Virtual Ethernet Adapter for VMnet1 连接“路由器”的eth 2 。使用单独的hostonly方式连接。

“路由器”的eth0与dhcp服务器处于同一个单独的vmnet 2 区域中。

②.在client端查看信息如下:

第一种连接:

实际地址: 00-50-56-C0-00-01 

IP 地址: 192.168.20.243  

子网掩码: 255.255.255.0

默认网关: 192.168.20.244

DHCP 服务器: 192.168.10.244

获得了租约: 2012-8-14 21:03:22

租约过期: 2012-8-15 3:03:22

DNS 服务器: 222.88.88.88

第二种连接:

实际地址: 00-50-56-C0-00-01

IP 地址: 192.168.30.243

子网掩码: 255.255.255.0

默认网关: 192.168.30.244

DHCP 服务器: 192.168.10.244

获得了租约: 2012-8-14 21:13:25

租约过期: 2012-8-15 3:13:25

DNS 服务器: 222.88.88.88

③.查看dhcp服务器的dhcp.lease文件中的记录

lease 192.168.20.243 {

  starts 2 2012/08/14 13:03:21;

  ends 2 2012/08/14 19:03:21;

  binding state active; //binding状态处于激活

  next binding state free;  //下一个binding状态处于空闲

  hardware ethernet 00:50:56:c0:00:01;

  uid "\001\000PV\300\000\001";

  client-hostname "DONGHAODONG";

lease 192.168.20.243 {

  starts 2 2012/08/14 13:03:21;

  ends 2 2012/08/14 13:13:23;

  tstp 2 2012/08/14 13:13:23;

binding state free;

  hardware ethernet 00:50:56:c0:00:01;

  uid "\001\000PV\300\000\001";

}

lease 192.168.30.243 {

  starts 2 2012/08/14 13:13:24;

  ends 2 2012/08/14 19:13:24;

  binding state active; //binding状态处于激活

  next binding state free;  //下一个binding状态处于空闲

  hardware ethernet 00:50:56:c0:00:01;

  uid "\001\000PV\300\000\001";

  client-hostname "DONGHAODONG";

lease 192.168.30.243 {

  starts 2 2012/08/14 13:16:33;

  ends 2 2012/08/14 13:16:34;

tstp 2 2012/08/14 13:16:34;

  binding state free;

  hardware ethernet 00:50:56:c0:00:01;

  uid "\001\000PV\300\000\001";

3.实例3  基于class的dhcp服务

(1.实验原理:

通过类对与客户端进行选择性的配置网络信息

(2.实验拓扑图

 

wps_clip_p_w_picpath-7135

 

(3.实验环境简介

本实验使用linux 配置dhcp服务器。

(4.实验步骤:

①.安装dhcp服务

[root@donghao244 ~]# mount /dev/cdrom /mnt/cdrom/ //光盘进行挂载

mount: block device /dev/cdrom is write-protected, mounting read-only

//以只读模式挂载

[root@donghao244 ~]# cd /mnt/cdrom/Server/ //进入软件包所在的创库目录

[root@donghao244Server]# rpm -ivh dhcp-3.0.5-21.el5.i386.rpm

Preparing... ############################[100%]

package dhcp-3.0.5-21.el5.i386 is already installed  //已经安装过了

②.修改dhcp服务器的配置文件,内容如下:

  4 ddns-update-style interim;

  5 ignore client-updates;

  6 subnet 192.168.10.0 netmask 255.255.255.0 {

  7 class "microsoft" {  //创建针对windows操作系统的主机

  8   match if substring (option vendor-class-identifier,0,4) = "MSFT";

  9   option routers  192.168.10.254;

10 }

11 class "vm"{  //创建针对虚拟机的主机

12    match if substring (hardware,1,3) = 00:0c:29;

13    option routers  192.168.10.253;

14 }

15 pool {  //创建地址池块

16     allow members of "microsoft"; //关联匹配规则类

17     range dynamic-bootp 192.168.10.200 192.168.10.200;

//针对windows操作系统的主机分陪的地址区块

18 }

19 pool {  //创建地址池块

20     allow members of "vm"; //关联匹配规则类

21     range dynamic-bootp 192.168.10.1 192.168.10.99;

//针对虚拟主机分配的地址区块

22 }

23 }

③.启动dhcp服务器,并将dhcp加入开机自启动

[root@donghao244 ~]# service dhcpd restart//重新启动dhcp服务

Shutting        down         dhcpd   [  OK  ]

Starting                      dhcpd:   [  OK  ]

[root@donghao244 ~]# chkconfig dhcpd on //加入开机自动启动

(5.实验验证

将服务器与物理机通过VMware Virtual Ethernet Adapter for VMnet1 与dhcp服务器直接相连。将VMware Virtual Ethernet Adapter for VMnet1 虚拟网卡设为自动获取ip地址。

①.使用“ipconfig /release 与 ipconfig/renew ”重新获得ip地址

实际地址: 00-50-56-C0-00-01

IP 地址: 192.168.10.200

子网掩码: 255.255.255.0

默认网关: 192.168.10.254 

DHCP 服务器: 192.168.10.244

获得了租约: 2012-8-14 21:44:16

租约过期: 2012-8-15 9:44:16

②.查看dhcp服务器的dhcp.lease文件中的记录

lease 192.168.10.200 {

  starts 2 2012/08/14 14:00:46;

  ends 3 2012/08/15 02:00:46;

binding state active;

  next binding state free;

  hardware ethernet 00:50:56:c0:00:01;

  uid "\001\000PV\300\000\001";

  client-hostname "DONGHAODONG";

}

lease 192.168.10.200 {

  starts 2 2012/08/14 14:00:46;

  ends 3 2012/08/15 02:00:46;

binding state active;

  next binding state free;

  hardware ethernet 00:50:56:c0:00:01;

  uid "\001\000PV\300\000\001";

  client-hostname "DONGHAODONG";

}

测试正常!!!

嗯,韩宇说的对!!!