1 DHCP原理
1.1 DHCP概述
      DHCP(Dynamic Host Configuration Protocal)就是动态主机配置协议哈,可以自动配置主机的IP地址、子网掩码、网关及DNS等TCP/IP信息。所以DHCP可以有效地降低客户端IP地址配置的复杂度和网络的管理成本。如果路由器能够转发DHCP请求,只需要在一个子网中配置DHCP服务器就可以向其他子网提供TCP/IP配置的服务支持哈~~
1.2 DHCP的应用环境
      DHCP主要应用在以下两个应用环境,一个就是局域网中存在大量主机,第二种就是局域网中存在比较多的移动办公设备。
1.3 DHCP术语
DHCP服务器:配置DHCP服务的计算机
DHCP客户端:启用DHCP设置的计算机
作用域:一个完整连续的可用IP地址范围,DHCP服务主要就是通过作用域来管理网络分布、IP地址分配及其他相关配置参数。
超级作用域:管理级的作用域集合,用于支持同一物理网络上的多个逻辑IP子网。超级作用域包含子作用域的列表,对子作用域进行统一管理。
排除范围:排除范围是作用域内从DHCP服务中排除的有限IP地址序列。排除范围确保在这些范围中的任何地址都不是由网络上的服务器提供给DHCP 客户机的。
地址池:在定义DHCP作用域并应用排除范围之后,剩余的地址在作用域内形成可用地址池,也就是作用域中包含的可用IP地址范围哈,地址池中的地址可以由DHCP服务器动态分配给DHCP客户机。
租约:客户计算机可以使用动态分配的IP地址的时间,这个时间可以由DHCP服务器设定哈。当向一台客户机发出租约后,此租约就被看作是活动的,在租约终止前,客户机可以向DHCP服务器更新其租约。当租约到期或被服务器删除后,它就变成不活动的了,租约持续时间决定了租约什么时候终止及客户机隔多久向DHCP服务器更新其租约。
预约:创建从DHCP服务器到客户机的永久地址租约指定,预约可以保证子网上的特定硬件设备总是使用相同的IP地址,这对于远程访问网关、DNS服务器等必须要配置IP地址的计算机非常有用。
选项类型:DHCP服务器向DHCP客户机提供租约服务时可以指定的其他客户机配置参数。典型地这些选项类型由各个作用域启用和配置。虽然大多数选项都是在RFC2132中预定义了,但若需要的话,我们还是可以使用DHCP管理器定义并添加自定义选项类型。
选项类别:DHCP服务用于进一步提供给客户机的选项类型的方法。选项类别可以在用户的DHCP服务器上配置以提供特定的客户机支持。当一个选项类别添加到服务器后,就可以为该类别的客户机配置提供特定类别的选项类型。
1.4 DHCP工作原理
我们来了解下DHCP的工作原理哈~~
(1)当DHCP客户机第一次登录网络时,如果客户机上没有任何IP信息设定,它会向网络发出DHCP DISCVER数据包,为保证服务器能够接收到请求,数据包源地址设定为0.0.0.0,而目的地址为255.255.255.255,以广播形式发送DHCP DISCOVER的信息。
(2)当DHCP服务器监听到客户端发出的DHCP DISCOVER广播后,它会从那些还没有租出的地址范围内选择可用的IP及其他TCP/IP设定以DHCP OFFER数据包的形式发送给客户机。
(3)如果客户端收到网络上多台DHCP服务器的响应,客户端会挑选最快的一个DHCP OFFER并向网络发送一个DHCP REQUEST广播封包,告诉所有DHCP服务器它将使用哪一台服务器提供的IP地址。同时,客户端还会向网络发送ARP广播数据包,查询网络上面有没有其他机器使用该IP地址,如果发现该IP地址已经被占用,客户端则会发送一个DHCP DECLINE数据包给DHCP服务器,拒绝接受其DHCP OFFER,并重新发送DHCP REQUEST信息。
注:实际上并不是所有DHCP客户端都会无条件接受DHCP服务器的响应,客户端可以保留自己的一些TCP/IP设定,比如网关、DNS地址等等哈~~~
(4)将地址分配给客户端后,DHCP服务器会发送一个DHCP ACK消息,以确认IP租约的正式生效,结束完整的DHCP工作过程。
(5)DHCP客户端成功地从服务器取得IP地址之后,一般不需要再发送DHCP DISCOVER信息了,除非其租约已经到期或者IP地址重新设定回0.0.0.0。此时客户端会直接使用已经租用到的IP地址向为其发此IP地址的DHCP服务器发出DHCP REQUEST信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没有特殊的情况,会直接响应DHCP ACK,允许客户端继续使用该IP地址。如果该地址已经失效或者已经被其他主机使用了,服务器则会响应一个DHCP NACK数据包给客户端,要求其重新执行DHCP DISCOVER。
注意:客户端执行DHCP DISCOVER后,如果没有DHCP服务器响应客户端的请求,客户端会随机使用169.254.0.0/16网段中的一个IP地址配置本机地址。
2 安装DHCP服务
2.1 DHCP所需软件
dhcp-3.0.5-7.el5.i386.rpm
这是DHCP主程序包,包括DHCP服务和中继代理程序,安装该软件包进行相应配置,即可以为客户机动态分配IP地址及其他TCP/IP信息。
dhcp-devel-3.0.5-7.el5.i386.rpm
这是DHCP服务器开发工具软件包,为DHCP开发提供库文件支持。
dhcpv6-0.10-33.el5.i386.rpm
这是DHCP的IPv6扩展工具,使DHCP服务器能够支持IPv6的最新功能,如IPv6地址的动态配置以及IPv6中继代理等等哈~~
dhcpv6_client-0.10-33.el5.i386.rpm
这是DHCP客户端IPv6软件包,帮助客户端获取动态IP地址。
2.2 DHCP的安装
我们先检测下系统是否已经安装了DHCP相关软件哈~:rpm -qa | grep dhcp
image
我们安装DHCP主程序包哈~
image
如果需要我们还可以安装DHCP服务器开发工具软件包和DHCP的IPv6扩展工具
image
安装完后我们再查询下哈~
image
3 DHCP常规服务器配置
基本的DHCP服务器搭建流程:
(1)编辑主配置文件dhcpd.conf,指定IP作用域(指定一个或多个IP地址范围)。
(2)建立租约数据库文件。
(3)重新加载配置文件或重新启动dhcpd服务使配置生效。
DHCP工作流程:
 
(1)客户端发送广播向服务器申请IP地址。
(2)服务器收到请求后查看主配置文件dhcpd.conf,先根据客户端的MAC地址查看是否为客户端设置了固定IP地址。
(3)如果为客户端设置了固定IP地址则将该IP地址发送给客户端。如果没有设置固定IP地址,则将地址池中的IP地址发送给客户端。
(4)客户端收到服务器回应后,客户端给于服务器回应,告诉服务器已经使用了分配的IP地址。
(5)服务器将相关租约信息存入数据库。
3.1 主配置文件dhcpd.conf
1)dhcpd.conf主配置文件组成部分
parameters(参数)
declarations(声明)
option(选项)
2)dhcpd.conf主配置文件整体框架
dhcpd.conf包括全局配置局部配置
全局配置可以包含参数或选项,该部分对整个DHCP服务器生效。
局部配置通常由声明部分来表示,该部分仅对局部生效,比如只对某个IP作用域生效哈~
dhcpd.conf文件格式:
#全局配置    
参数或选项;                     #全局生效    

#局部配置    
声明 {    
                参数或选项;            #局部生效    
}
当DHCP主程序包安装好后会自动生成主配置文件的范本文件/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
image
而在/etc目录下会建立一个空白的dhcpd.conf主配置文件。
image
image
现在我们将范本配置文件复制到/etc目录下替换掉空白dhcpd.conf主配置文件。
image
dhcp范本配置文件内容包含了部分参数、声明以及选项的用法,其中注释部分可以放在任何位置,并以“#”号开头,当一行内容结束时,以“;”号结束,大括号所在行除外哈~~~
image
可以看出整个配置文件分成全局和局部两个部分。但是并不容易看出哪些属于参数,哪些属于声明和选项哈~
3.2 常用参数介绍
参数主要用于设置服务器和客户端的动作或者是否执行某些任务,比如设置IP地址租约时间、是否检查客户端所用的IP地址等等哈~
常见参数使用如下:
(1)ddns-update-style (none|interim|ad-hoc)
作用:定义所支持的DNS动态更新类型。
none:表示不支持动态更新
interim:表示DNS互动更新模式
ad-hoc:表示特殊DNS更新模式
image
注意:这个选项是必选参数哈,配置文件中必须包含这一个参数并且要放在第一行。
(2)ignore client-updates
作用:忽略客户端更新
image
注意:这个参数只能在服务器端使用。
(3)default-lease-time number(数字)
作用:定义默认IP租约时间
image
(4)max-lease-time number(数字)
作用:定义客户端IP租约时间的最大值
image
注意:(3)、(4)都是以秒为单位的租约时间,该项参数可以作用在全局配置中,也可以作用在局部配置中。
3.3 常用声明介绍
声明一般用来指定IP作用域、定义为客户端分配的IP地址池等等哈~
声明格式如下:
声明 {    
                选项或参数;    
}
常见声明的使用如下:
(1)subnet 网络号 netmask 子网掩码 {......}
作用:定义作用域,指定子网
image
注意:网络号必须与DHCP服务器的网络号相同
(2)range 起始IP地址 结束IP地址
作用:指定动态IP地址范围
image
注意:可以在subnet声明中指定多个range,但多个range所定义IP范围不能重复哈~
3.4 常用选项介绍
 选项通常用来配置DHCP客户端的可选参数,比如定义客户端的DNS地址、默认网关等等。选项内容都是以option关键字开始滴~
常见选项使用如下:
(1)option routers IP地址
作用:为客户端指定默认网关
image
(2)option subnet-mask 子网掩码
作用:设置客户端的子网掩码
image
(3)option domain-name-servers IP地址
作用:为客户端指定DNS服务器地址
image 
注意:(1)、(2)、(3)选项可以用在全局配置中,也可以用在局部配置中。
3.5 租约数据库文件
租约数据库文件用于保存一系列的租约声明,其中包含客户端的主机名、MAC地址、分配到的IP地址,以及IP地址的有效期等相关信息。这个数据库文件是可编辑的ASCII格式文本文件。每当发生租约变化的时候,都会在文件结尾添加新的租约记录。
DHCP刚安装好后租约数据库文件dhcpd.leases是个空文件。
image
当DHCP服务正常运行后就可以使用cat命令查看租约数据库文件内容了
3.6 应用案例I
技术部有60台计算机,IP地址段为192.168.0.1-192.168.0.254,子网掩码是255.255.255.0,网关为192.168.0.1,192.168.0.2-192.168.0.30网段地址给服务器配置,客户端可以使用的地址段为192.168.0.100-200,其余剩下的IP地址为保留地址。
定制全局配置和局部配置,局部配置需要把192.168.0.0/24网段声明出来,然后在该声明中指定一个IP地址池,范围为192.168.0.100-192.168.0.200,分配给客户端使用,最后重新启动dhcpd服务让配置生效哈。
image
配置完后保存退出并重启dhcpd服务
image
现在我们测试下:
image
查看租约数据库文件
cat /var/lib/dhcpd/dhcpd.leases
image
3.7 DHCP的启动与停止
(1)DHCP服务启动
services dhcpd start
/etc/rc.d/init.d/dhcpd start
(2)DHCP服务停止
services dhcpd stop
/etc/rc.d/init.d/dhcpd stop
(3)DHCP服务重启
services dhcpd restart
/etc/rc.d/init.d/dhcpd restart
(4)DHCP服务重启
services dhcpd reload
/etc/rc.d/init.d/dhcpd reload
(5)自动加载DHCP服务
1)chkconfig
运行级别3自动加载dhcpd服务
chkconfig --level 3 dhcpd .
运行级别3关闭自动加载dhcpd服务
chkconfig --level 3 dhcpd off
2) ntsysv
选中就自动加载dhcpd服务哈~
image
3.8 IP地址绑定
在DHCP中的IP地址绑定用于给客户端分配固定IP地址。比如服务器需要使用固定IP地址就可以使用IP地址绑定,通过MAC地址与IP地址的对应关系为指定的物理地址计算机分配固定IP地址。
整个配置过程需要用到host声明和hardware、fixed-address参数。
(1)host 主机名 {......}
作用:用于定义保留地址
image
注意:该项通常搭配subnet声明使用。
(2)hardware 类型 硬件地址
作用:定义网络接口类型和硬件地址。常用类型为以太网(ethernet),地址为MAC地址。
image
(3)fixed-address IP地址
作用:定义DHCP客户端指定的IP地址。
image
注意:(2)、(3)项只能应用于host声明中。
3.9 应用案例II
技术部有200台计算机,采用192.168.8.0/24网段给技术部使用,路由器IP地址为192.168.8.1,DNS服务器IP地址为192.168.8.2,DHCP服务器为192.168.8.3,客户端地址范围为192.168.8.30-192.168.8.254,子网掩码为255.255.255.0,技术总监CIO使用的固定IP地址为192.168.8.88,部门经理使用的固定IP地址为192.168.8.66。
要保证使用固定IP地址的话,就要在subnet声明中嵌套host声明,目的是要单独为总监和经理的主机设置固定IP地址,并在host声明中加入IP地址和MAC地址绑定的选项以申请固定IP地址。
(1)编辑主配置文件dhcpd.conf
image
(2)重启dhcpd服务
service dhcpd restart
image
(3)测试验证
image
image
4 DHCP高级服务器配置
4.1 DHCP规划
(1)小型网络DHCP服务器
image
如果公司规模比较小,只有几台计算机联网,综合考虑到管理复杂程度和维护成本的因素,我们完全可以不采用DHCP而直接手动配置IP地址哈,如果网络规模在几十台计算机并且网络拓扑结构简单,采用DHCP服务器就是个不错的选择,我们可以修改dhcpd.conf主配置文件来实现,同时请注意以下两点哈~~~
1)DHCP服务器硬件设备选择
DHCP服务器需要长时间运行,所以需要选择性能稳定的计算机来搭建。
2)计算机IP获取方式规划
确定哪些计算机需要采用动态IP地址配置,哪些计算机、服务器及网络设备采用静态IP地址来配置
(2)大型网络DHCP服务器
如果网络存在较多计算机,为了管理和维护的方便,我们应该配置DHCP服务器来动态分配IP地址,对于大型网络DHCP搭建考虑的因素就要更加全面和周到。
image
1)DHCP服务器位置
客户端在第一次获取IP地址时发送DHCP DISCOVER消息采用广播形式,这样会造成网络带宽的浪费,并且如果在一段时间内没有接到DHCP服务器的回应,客户端会继续发送DHCP DISCOVER消息,这样会继续增加网络的负担。所以为了提高DHCP服务器的响应时间,搭建DHCP服务器要选择适当的接入位置,尽量使用服务器连接网络核心设置,在上图大型企业网络拓扑中DHCP服务器就直接连接企业网络中的核心交换机哈~
2)DHCP服务器作用域设置
企业中部门职能不同,相应的需求也不相同,管理员需要按照企业的实际需求,设计作用域并进行租约、网关及IP范围的划分。比如销售部人员就一般使用笔记本等移动设备,因业务需要会比较频繁地出差,那么销售部的计算机会不断接入或脱离企业网络,如果IP租约设置过长,移动设备申请并且暂不使用的IP地址无法得到释放,会导致网络中IP资源短缺,所以需要合理规划DHCP服务器的设置。关于大型网络的DHCP配置方法可以参考4.2 DHCP多作用域设置哈~
(3)跨路由网络DHCP服务器
image
对于大型网络来说DHCP服务器是不可或缺的,如果网络内部划分多个子网并采用路由器进行连接。因为广播数据包无法穿越路由器,所以默认情况下,一个子网内的客户机无法向其他子网的DHCP服务器发送请求,所以需要为每个子网搭建一台DHCP服务器,显然这样会增加硬件成本哈。因此我们可以搭建一台DHCP服务器,同时在连接多个子网的路由器上设置DHCP中继代理就可以利用路由器转发DHCP消息,所有计算机能够通过DHCP服务器获取TCP/IP信息,具体配置可以参考4.3 DHCP中继代理哈~~~
配置存在路由的网络需要注意两点:
1)存在DHCP服务器
一个物理网络被划分为多个逻辑子网,在所有子网中必须存在一台DHCP服务器能够提供TCP/IP信息分配服务。
2)路由器中继代理设置
路由器默认并不转发广播数据包,为了能够转送DHCP DISCOVER消息,必须要在路由器上配置DHCP中继代理。
(4)80/20规则
对于一个物理网络而言,搭建一台DHCP服务器已经可以实现动态IP地址分配,但还是存在不稳定因素,如果一旦仅有的DHCP服务器崩溃,那么客户机将无法获取IP地址。如果我们选择安装多台DHCP服务器,然而DHCP服务器之间没有监督机制,无法保证分配地址没有冲突。
因此我们需要合理划分DHCP服务器的地址池,防止为客户端分配重复的地址。考虑到网络的稳定性,可以选择两台DHCP服务器,采用80/20规则划分DHCP服务器的作用域,一台DHCP服务器作为主服务器,管理80%的网络IP地址,另一台DHCP服务器作为辅助服务器,包含剩余20%的网络地址。日常工作中,分配TCP/IP信息由主DHCP服务器完成,在该服务器不可用时,辅助DHCP服务器才开始工作。此规则适用于多子网的网络拓扑结构,我们可以根据具体需求进行服务器规划。
4.2 DHCP多作用域设置
DHCP服务器使用单一的作用域,大部分时间能够满足网络的需求,但是有些特殊情况下,按照网络规划我们需要配置多作用域。
网络中如果计算机和其他设备数量增加,IP地址需要进行扩容才能满足需求。小型网络可以对所有设备重新分配IP地址,其网络内部客户机和服务器数量较少,实现起来比较简单。但如果是一个大型网络,重新配置整个网络的IP地址是不明智的,如果操作不当,可能会造成通信暂时中断以及其他网络故障。我们可以通过多作用域的设置,即DHCP服务器发布多个作用域实现IP地址增容的目的。
公司IP地址规划为192.168.2.0/24网段,可以容纳254台设备,使用DHCP服务器建立一个192.168.2.0网段的作用域,动态管理网络IP地址,但网络规模扩大到500台机器,显然一个C类网的地址无法满足要求了。这时,可以再为DHCP服务器添加一个新作用域,管理分配192.168.3.0/24网段的IP地址,为网络增加254个新的IP地址,这样既可以保持原有IP地址的规划,又可以扩容现有的网络IP地址。
(1)简单实现DHCP多作用域
对于多作用域的配置,必须保证DHCP服务器能够侦听所有子网客户机的请求信息,下面将讲解配置多作用域的基本方法,为DHCP添加多个网卡连接每个子网,并发布多个作用域的声明。
注意:划分子网时,如果选择直接配置多作用域实现动态IP分配的任务,则必须要为DHCP服务器添加多块网卡,并配置多个IP地址,否则DHCP服务器只能分配与其现有网卡IP地址对应网段的作用域。
采用双网卡实现两个作用域
image
1)网卡配置IP地址
DHCP服务器有多块网卡时,需要使用ifconfig命令为每块网卡配置独立的IP地址,但要注意,IP地址配置的网段要与DHCP服务器发布的作用域对应哈~
ifconfig eth0 192.168.2.1 netmask 255.255.255.0
ifconfig eth1 192.168.3.1 netmask 255.255.255.0
image
2)编辑dhcpd.conf主配置文件
当DHCP服务器网络环境搭建完毕后,我们可以编辑dhcpd.conf主配置文件完成多作用域的设置。
ddns-update-style none;
ignore client-updates;
subnet 192.168.2.0 netmask 255.255.255.0 {
# --- default gateway
        option routers                  192.168.2.1;
        option subnet-mask              255.255.255.0;
        option nis-domain               "domain.org";
        option domain-name              "domain.org";
        option domain-name-servers      192.168.2.2;
        option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.1;
#       option netbios-name-servers     192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;
        range dynamic-bootp 192.168.2.50 192.168.2.250;
        default-lease-time 21600;
        max-lease-time 43200;
        # we want the nameserver to appear at a fixed address
        host ns {
                next-server marvin.redhat.com;
                hardware ethernet 12:34:56:78:AB:CD;
                fixed-address 207.175.42.254;
        }
}
subnet 192.168.3.0 netmask 255.255.255.0 {
# --- default gateway
        option routers                  192.168.3.1;
        option subnet-mask              255.255.255.0;
        option nis-domain               "domain.org";
        option domain-name              "domain.org";
        option domain-name-servers      192.168.2.2;
        option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.1;
#       option netbios-name-servers     192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;
        range dynamic-bootp 192.168.3.50 192.168.3.250;
        default-lease-time 21600;
        max-lease-time 43200;
        max-lease-time 43200;
}
保存退出哈~
3)测试验证
重启DHCP服务后检查系统日志,检测配置是否成功,使用tail命令动态显示日志信息。
tail -F /etc/log/messages
image
经过设置,对于DHCP服务器将通过eth0和eth1两块网卡侦听客户机的请求,并发送相应的回应。
Jan 19 16:02:51 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da via eth1
Jan 19 16:02:51 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da via eth0
Jan 19 16:02:52 rhel5 dhcpd: DHCPOFFER . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:52 rhel5 dhcpd: DHCPOFFER . 192.168.2.250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:52 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:52 rhel5 dhcpd: DHCPACK . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:52 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative).
Jan 19 16:02:53 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPOFFER . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:53 rhel5 dhcpd: DHCPOFFER . 192.168.2.250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:53 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPACK . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative).
Jan 19 16:02:54 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPOFFER . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:54 rhel5 dhcpd: DHCPOFFER . 192.168.2.250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:54 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPACK . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative).
Jan 19 16:02:55 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPOFFER . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:55 rhel5 dhcpd: DHCPOFFER . 192.168.2.250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:55 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPACK . 192.168.3.250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPREQUEST for 192.168.3.250 (192.168.3.1) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative).
image
(2)DHCP超级作用域功能及实现
对于多作用域设置,使用多网卡的方式,虽然可以达到扩展可用IP地址范围的目的,但会增加网络拓扑的复杂性,并加大维护的难度。而如果想保持现有网络的结构,并实现网络扩容,可以选择采用超级作用域。
超级作用域是DHCP服务器的一种管理功能,使用超级作用域可以将多个作用域组合为单个管理实体,进行统一的管理操作。
使用超级作用域,DHCP服务器能够具备以下功能:
  • 通过这种方式,DHCP服务器可为单个物理网络上的客户机提供多个作用域的租约。
  • 支持DHCP和BOOTP中继代理,能够为远程DHCP客户端分配TCP/IP信息,搭建DHCP服务器时,可以根据网络部署需求,选择使用超级作用域。
  • 现有网络IP地址有限,而且需要向网络添加更多的计算机,最初的作用域无法满足要求,需要使用新的IP地址范围扩展地址空间。
  • 客户端需要从原有作用域迁移到新作用域;当前网络对IP地址进行重新规划,使客户端变更使用的地址,使用新作用域声明的IP地址。
关于超级作用域的配置,在dhcpd.conf配置文件中有固定格式
shared-network 超级作用域名称 {                #作用域名称,标示超级作用域
        
                                    [参数]
                                                                                                                                                                                                                                                 #该参数对所有子作用域有效,可以不配置        
                                subnet 子网编号 netmask 子网掩码 {        
                                [参数]        
                                [声明]        
}    
}
 
企业内部建立DHCP服务器,网络规划采用单作用域的结构,使用192.168.0.0/24网段的IP地址。随着公司规模扩大,设备数量增多,现有的IP地址无法满足网络的需求,需要添加可用的IP地址。这时我们可以使用超级作用域完成增加IP地址的目的,在DHCP服务器上添加新的作用域,使用192.168.8.0/24网段扩展网络地址的范围。
image
修改dhcpd.conf配置文件,建立超级作用域并添加新作用域。
image
检测配置文件:dhcpd
image
重启dhcpd服务
image
使用cat命令查看系统日志
image
DHCP服务器启用超级作用域后,将会在其网络接口上根据超级作用域的设置,侦听并发送多个子网的信息。使用单块网卡就可以完成多个作用域的IP地址管理工作。想比多网卡实现多作用域的设置,能够不改变当前网络拓扑结构,轻松完成IP地址的扩容。
image
注意:DHCP服务器启用超级作用域能够方便地为网络中的客户机提供分配IP地址的服务,但是超级作用域可能由多个作用域组成,那么分配给客户机的IP地址也可以并不在同一个网段,这个时候,这些客户机互相访问和访问外网就成了问题,我们可以对网关配置多个IP地址,并在每个作用域中设置对应的网关IP地址,就可以使用客户机通过网关与其他不在同一网段的计算机进行通信哈~
4.3 DHCP中继代理
在ISC DHCP软件中提供的中继代理程序为dhcrelay,通过简单的配置就可以完成DHCP的中继设置,启动dhcrelay的方式为将DHCP请求中继到指定的DHCP服务器。
dhcrelay命令格式:
开户所有网络接口的DHCP中继功能,转发到指定DHCP服务器
dhcrelay DHCP服务器地址
开启指定网络接口的DHCP中继功能
dhcrelay -i 网卡 DHCP服务器地址
公司内部存在两个子网,分别为192.168.2.0/24,192.168.3.0/24,现在需要使用一台DHCP服务器为这两个子网客户机分配IP地址。
image
(1)配置DHCP服务器
配置DHCP服务器IP地址
image
DHCP服务器位于LAN1,需要为LAN1和LAN2的客户机分配IP地址,也就是申明两个网段,这里可以建立两个作用域,声明192.168.2.0/24和192.168.3.0/24网段。
image
(2)配置DHCP中继代理
1)配置网卡IP地址
根据网络拓扑图设置DHCP服务器网卡IP地址
image
2)启用中继代理
在DHCP中继代理计算机上安装dhcp-3.0.5-7.el5.i386.rpm软件包。
image
中继代理计算机默认不转发DHCP客户机的请求,需要使用dhcrelay指定DHCP服务器的位置。
image
(3)客户端测试验证
在LAN2中选择客户机测试能否正常获取DHCP服务器的IP地址。
DHCP服务器端日志信息
image
LAN2中guest客户端获取IP地址。
image
LAN1客户端获取IP地址时DHCP服务器端日志信息。   
image
LAN1中客户端获取IP地址。
image
注意:当有多台DHCP服务器时,把DHCP服务器放在不同子网上能够取得一定的容错能力,而不是把所有DHCP服务器都放在同一子网上。这些服务器在它们的作用域中不应有公共的IP地址(每台服务器都有独立唯一的地址池哈~)。当本地的DHCP服务器崩溃时,请求就转发到远程子网。远程子网中的DHCP服务器如果有所请求子网的IP地址作用域(每台DHCP服务器都有每个子网的地址池,但IP范围不重复),它就响应DHCP请求,能在远程客户机自己的DHCP服务器脱机时向其提供IP地址。
5 DHCP客户端配置
5.1 Linux客户端配置
配置Linux客户端需要修改网卡配置文件,将BOOTPROTO项设置为BOOTPROTO=dhcp。
(1)将BOOTPROTO=none修改为BOOTPROTO=dhcp,启用客户端DHCP功能。
vim /etc/sysconfig/network-.s/ifcfg-eth0
image
(2)重新启动网卡或者使用dhclient命令
ifdown eth0;ifup eth0
image
使用dhclient命令则重新发送广播申请IP地址:dhclient eth0
image
(3)使用ifconfig命令测试
image
客户端IP地址已经由原来的192.168.8.88改为192.168.3.250哈~
5.2 Windows客户端配置
windows客户端没什么好讲的,这个比较简单,设置两个自动获得就可以了哈~
image
释放IP地址:ipconfig /release
image
重新申请IP地址:ipconfig /renew
image
6 DHCP服务配置排错
6.1 dhcpd
image
检查后发现没有18行代码没有以“;”结尾哈
image
修改后提示“There's already a DHCP server running.”
image
配置文件错误并不是唯一导致dhcpd服务无法启动的原因,如果网卡接口配置错误也可能导致服务启动失败。
image
提示没有为eth0(192.168.100.188)设置子网声明,没有配置任何接口进行侦听哈,我们只要更改网卡IP地址就可以了哈~~~
6.2 租约文件
一定要确保租约文件存在哈,否则无法启动dhcpd服务,如果租约文件不存在,我们可以手动建立一个哈~ 
6.3 ping
DHCP设置完后,重启dhcp服务使配置生效,如果客户端仍然无法连接DHCP服务器,我们可以使用ping命令测试网络连通性哈~
6.4 MULTICAST
如果网络正常,DHCP服务器配置正确,但是还是无法获得IP地址等信息的话,很可以是因为DHCP服务器的网卡没有开启MULTICAST(多点传送)功能。只要在该网卡上开启MULTICAST(多点传送)功能即可。
创建一个到地址255.255.255.255的路由,加这条路由命令到/etc/rc.d/rc.local使得每次启动后自动运行。
image
如果提示“255.255.255.255:Unkown host” ,那么我们需要修改/etc/hosts文件,并添加一条主机记录。
255.255.255.255后面为主机名,主机名没有特别约束,只要是合法的主机名就可以了哈~
image
注意:可以编辑/etc/rc.d/rc.local文件,添加route add -host 255.255.255.255 dev eth0条目使多点传送功能长久生效哈~
image
6.5 查看系统日志
不管什么服务哈,查看系统日志都是必不可少滴,这是个好习惯哈。如果遇到的问题没有我没有提到哈,当然,每种可能性问题我也不可能都说全哈,那么查看系统日志文件/var/log/messages看看,说不定问题的答案就在里面哈~~~
###########################################################
ps:快过年了,明天偶就放假了哈,终于赶在放假前发布第三季DHCP服务内容,如果哪位博友发现问题,欢迎指定哈,过年期间将陆续发布,下一季也就是第四季(比较繁琐的)DNS服务全攻略,敬请期待哈~~~~
最后祝各位HAPPY 牛 Year!!!
image
########################################################