linux dhcp 及其作用

作用

DHCP
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 的设定环境。它提供两种 IP 定位方式:

Automatic Allocation

自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。

Dynamic Allocation

动态分配,当 DHCP 第一次从 HDCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。 动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 地址不足的时候,例如:您是一家 ISP ,只能提供 200 个IP地址用来给拨接客户,但并不意味着您的客户最多只能有 200 个。因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的行为习惯的不同,也有可能是电话线路的限制。这样,您就可以将这 200 个地址,轮流的租用给拨接上来的客户使用了。这也是为什么当您查看 IP 地址的时候,会因每次拨接而不同的原因了(除非您申请的是一个固定 IP ,通常的 ISP 都可以满足这样的要求,这或许要另外收费)。当然,ISP 不一定使用 DHCP 来分配地址,但这个概念和使用 IP Pool 的原理是一样的。 DHCP 除了能动态的设定 IP 地址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照硬件地址来固定的分配 IP 地址,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定 router、netmask、DNS Server、WINS Server、等等项目,您在客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定。 DHCP 的工作原理 根据客户端是否第一次登录网络,DHCP 的工作形式会有所不同。 第一次登录的时候:

寻找 Server。当 DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0 ,而目的地址则为 255.255.255.255 ,然后再附上 DHCP discover 的信息,向网络进行广播。 在 Windows 的预设情形下,DHCP discover 的等待时间预设为 1 秒,也就是当客户端将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到响应的话,就会进行第二次 DHCP discover 广播。若一直得不到响应的情况下,客户端一共会有四次 DHCP discover 广播(包括第一次在内),除了第一次会等待 1 秒之外,其余三次的等待时间分别是 9、13、16 秒。如果都没有得到 DHCP 服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。

提供 IP 租用地址。当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。 由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP discover 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,DHCP offer 封包会包含一个租约期限的信息。

接受 IP 租约。如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个),并且会向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。 同时,客户端还会向网络发送一个 ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其 DHCP offer ,并重新发送 DHCP discover 信息。 事实上,并不是所有 DHCP 客户端都会无条件接受 DHCP 服务器的 offer ,尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用 DHCP request 向服务器提出 DHCP 选择,而这些选择会以不同的号码填写在 DHCP Option Field 里面:

换一句话说,在 DHCP 服务器上面的设定,未必是客户端全都接受,客户端可以保留自己的一些 TCP/IP 设定。而主动权永远在客户端这边。

租约确认。当 DHCP 服务器接收到客户端的 DHCP request 之后,会向客户端发出一个 DHCPACK 响应,以确认 IP 租约的正式生效,也就结束了一个完整的 DHCP 工作过程。 如上的工作流程如下图:

DHCP 发放流程第一次登录之后: 一旦 DHCP 客户端成功地从服务器哪里取得 DHCP 租约之后,除非其租约已经失效并且 IP 地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCP discover 信息了,而会直接使用已经租用到的 IP 地址向之前之 DHCP 服务器发出 DHCP request 信息,DHCP 服务器会尽量让客户端使用原来的 IP 地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其从新执行 DHCP discover。 至于 IP 的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP 工作站除了在开机的时候发出 DHCP request 请求之外,在租约期限一半的时候也会发出 DHCP request ,如果此时得不到 DHCP 服务器的确认的话,工作站还可以继续使用该 IP ;然后在剩下的租约期限的再一半的时候(即租约的75%),还得不到确认的话,那么工作站就不能拥有这个 IP 了。至于为什么不是到租约期限完全结束才放弃 IP 呢?,对不起,小弟也是不学无术之人,没有去深究了,只知道要回答 MCSE 题目的时候,您一定要记得 NT 是这么工作的就是了。 要是您想退租,可以随时送出 DHCPLEREASE 命令解约,就算您的租约在前一秒钟才获得的。

跨网络的 DHCP 运作 从前面描述的过程中,我们不难发现:DHCDISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP 服务器安设在其它的网络上面呢?由于 DHCP 客户端还没有 IP 环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP 广播封包传递出去,因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户的 DHCP 请求,然后将此请求传递给真正的 DHCP 服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。 若不使用 Proxy,您也可以在每一个网络之中安装 DHCP 服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。端视您的实际情况而定了。 DHCP封包格式

以下为各字段的简要说明: OP

若是 client 送给 server 的封包,设为 1 ,反向为 2 。 HTYPE

硬件类别,Ethernet 为 1 。

HLEN

硬件地址长度, Ethernet 为 6 。

HOPS

若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。

TRANSACTION ID

DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。

SECONDS

Client 端启动时间(秒)。

FLAGS

从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。

ciaddr

要是 client 端想继续使用之前取得之 IP 地址,则列于这里。

yiaddr

从 server 送回 client 之 DHCP OFFER 与 DHCPACK 封包中,此栏填写分配给 client 的 IP 地址。

siaddr

若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。

giaddr

若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0 。

chaddr

Client 之硬件地址。

sname

Server 之名称字符串,以 0x00 结尾。

file

若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。

options

允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。 CODE LEN VALUE 此字段完全兼容 BOOTP ,同时扩充了更多选项。其中,DHCP 封包可利用编码为 0x53 之选项来设定封包类别:项值 类别

1 DHCP DISCOVER

2 DHCP OFFER

3 DHCP REQUEST

4 DHCPDECLINE

5 DHCPACK

6 DHCPNACK

7 DHCPRELEASE DHCP 的选项非常多,有空请查阅 RFC 或相关文献,并好好理解,这里不再叙述了。

DHCP 协议之 RFC 文件 RFC-951、RFC-1084、RFC-1123、RFC-1533、RFC-1534、RFC-1497、RFC-1541

 

 

 

 

 

 

配置

 

一、安装DHCP服务
dhcp-3.0.5-6.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地址。
二、dhcp的安装
用此命令rpm -qa | grep dhcp来查看是否安装了dhcp包
三、dhcp常规服务器配置
基本dhcp服务器搭建流程:
(1)编辑主配置文件dhcpd.conf,指定ip作用域(指定一个或多个ip地址范围)。
(2)建立租约数据库文件。
(3)重新加载配置文件或重新启动dhcpd服务使配置生效。
四、主配置文件dhcpd.conf
1)dhcpd.conf主配置文件组成部分
parameters(参数)
declarations(声明)
option(选项)
2)dhcpd.conf主配置文件整体框架:全局配置和局部配置。
全局配置可以包含参数或选项,该部分对整个dhcp服务器生效。
局部配置通常由声明部分来表示,该部分对局部生效,比如只对某个ip作用域生效。
当dhcp主程序包安装好后会自动生成主配置文件的范本文件:/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
注意当一行内容结束时,以“;”结束。
3)常用参数介绍:
(1)ddns-update-style(none|interim|ad-hoc)
作用:定义所支持的dns动态更新类型。
none:表示不支持动态更新
interim:表示dns互动更新模式
ad-hoc:表示特殊dns更新模式
注意:这个选项是必选参数,配置文件中必须包含这一个参数且要放在第一行。
(2)ignore client-updates
作用:忽略客户端更新
注意:这个参数只能在服务器端使用。
(3)default-lease-time number(数字)
作用:定义默认ip租约时间
(4)max-lease-time number(数字)
作用:定义客户端ip租约时间的最大值
注意:(3)、(4)都是以秒为单位,该参数可用于全局也可用于局部。
4)常用声明介绍
声明一般用来指定ip作用域、定义为客户端分配的ip地址池等
(1)subnet 网络号 netmask 子网掩码 {.......}
作用:定义作用域,指定子网。如图:


注意:网络号必须与dhcp服务器的网络号相同
(2)range 起始ip地址 结束ip地址
作用:指定动态ip地址范围
注意:可以再subnet声明中指定多个range,但多个range所定义ip范围不能重复。
5)常用选项介绍:
(1)option routers ip地址
作用:为客户端指定默认网关
(2)option subnet-mask 子网掩码
作用:设置客户端的子网掩码
(3)option domain-name-servers ip地址
作用:为客户端指定dns服务器地址
注意(1)、(2)、(3)选项可以用于在全局配置中,也可以使局部。
6)租约数据库文件
租约数据库文件用于保存一系列的租约声明,其中包含客户端的主机名、mac地址、分配到的ip地址,以及ip地址的有效期等相关信息。这个数据库文件是可编辑的ASCII格式文本文件。每当发生租约变化的时候,都会在文件结尾添加新的租约记录。
dhcp刚装好后租约数据库文件dhcpd.leases是个空文件。
当dhcp服务正常运行后就可以使用cat命令查看租约数据库文件的内容了。
五、应用案例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服务让配置生效。如图:


重启dhcpd服务
测试
查看租约数据库文件:cat /var/lib/dhcpd/dhcpd.leases 如图:


六、ip地址绑定
通过mac地址与ip地址的对应关系为制定的物理地址计算机分配固定ip地址。
(1)host 主机名 {......}
作用:用于定义保留地址
注意:该项通常搭配subnet声明使用
(2)hardware 类型 硬件地址
作用:定义网络接口类型和硬件地址。
(3)fixed-address ip地址
作用:定义dhcp客户端制定的ip地址。
注意:(2)、(3)项只能应用于hosts声明中。
七、应用案例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。
(1)编辑主配置文件dhcpd.conf 如图:


(2)重新启动
(3)测试验证
八、dhcp高级服务器配置
1、dhcp规划
(1)小型网络dhcp服务器 如图:



1)dhcp服务器硬件设备选择
2)计算机ip获取方式规划
(2)大型网络dhcp服务器 如图:


1)dhcp服务器的配置
2)dhcp服务器作用域的设置(注意地址租约,因为有的部门总出差,租约不能设置过长)
(3)跨路由网路dhcp服务器 如图:


在此我们搭建一台dhcp服务器,同时在连接多个子网的路由器上设置dhcp中继代理就可以利用路由器转发dhcp消息,所有计算机通过dhcp服务器获取tcp/ip信息。
配置时需注意两点:
1)存在dhcp服务器
一个屋里网络被划分为多个逻辑子网,在所有子网中必须存在一台dhcp服务器能够提供tcp/ip信息分配服务。
2)路由器中继代理设置
路由器默认并不转发广播数据包,为了能够传送DHCP DISCOVER 消息,必须要在路由器上配置dhcp中继代理。
(4)80/20规则
我们选择两台dhcp服务器,采用80/20规则划分dhcp服务器的作用域,一台dhcp服务器作为主的,管理80%的ip地址,另一台dhcp服务器作为辅助的,包含剩余20%的地址。日常工作中,由主dhcp服务器提供,当主服务器down掉后,辅助的开始起作用,此规则适用于多子网的网络拓扑结构。
2、dhcp多作用域设置
需求分析:公司ip地址规划为:192.168.2.0/24网段,可以容纳254台设备,使用dhcp服务器建立一个192.168.2.0网段的作用域,动态管理网路ip地址,但网络规模扩大到500台机器,显然一个C类网段的地址无法满足要求了。这时,可以再为dhcp服务器添加一个新作用域,管理分配192.168.3.0/24网段的ip地址,为网络增加254个新的ip地址。
项目实施:
(1)简单实现dhcp多作用域
注意:划分子网时,如果选择直接配置多作用域实现动态ip分配的任务,则必须要为dhcp服务器添加多块网卡,并配置多个ip地址,否则dhcp服务器只能分配与其现有网卡ip地址对应网段的作用域。
采用双网卡实现两个作用域 如图:


1)网卡配置ip地址
ifconfig eth0 192.168.2.1 netmask 255.255.255.0
ifconfig eth1 192.168.3.1 netmask 255.255.255.0
2)编辑dhcpd.conf主配置文件 如图:






3)测试验证
重启dhcp服务后检查系统日志,检测配置是否成功,使用tail命令动态显示日志信息。
tail -F /etc/log/messages 如图:


(2)dhcp超级作用域功能及实现
对于多作用域设置,使用多网卡的方式,虽然可以达到扩展可用的ip地址范围的目的,但会增加网络拓扑的复杂性,并加大维护的难度。而如果想保持现有网络的结构,并实现网络扩容,可以选择采用超级作用域。使用超级作用域组合为单个管理实体,进行统一的管理操作。
关于超级作用域的设置,在dhcpd.conf配置文件中有固定格式
shared-network 超级作用域名称 {
          [参数]
          subnet 子网编号 netmask 子网掩码 {
          [参数]
          [声明]
}
}
需求分析:企业内部建立dhcp服务器,网络规划采用单作用域的结构,使用192.168.0.0/24网段的ip地址。随着公司规模的扩大,设备数量增多,现有的ip地址无法满足网络的需求,需要添加可用的ip地址。这时我们使用超级作用域完成增加ip地址的目的,在dhcp服务器上添加新的作用域,使用192.168.8.0/24网段扩展网络地址的范围。如图:


修改dhcpd.conf配置文件,建立超级作用域并添加新作用域。如图:



检测配置文件:dhcpd 如图:


重启dhcpd服务
使用cat命令查看系统日志
dhcp服务器启用超级作用域后,将会在其网络接口上根据超级作用域的设置,侦听并发送多个子网的信息。使用单块网卡就可以完成多个作用域的ip地址管理工作。想比多网卡实现多作用域的设置,能够不改变当前网络拓扑结构,轻松完成ip地址的扩容。
注意:dhcp服务器启用超级作用域能够方便的为网络中的客户机提供分配ip地址的服务,但是超级作用域可能由多个作用域组成,那么分配给客户机的ip地址也可以并不在同一个网段,这个时候,这些客户机相互访问和访问外网就成了问题,我们可以对网关配置多个ip地址,并在每个作用域中设置对应的网关ip地址,就可以使用客户机通过网关与其他不在同一网段的计算机进行通信。
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地址。 如图:


(1)配置dhcp服务器
配置dhcp服务器ip地址 如图:


dhcp服务器位于LAN1,需要为LAN1和LAN2的客户机分配ip地址,也就是声明那两个网段,这里可以建立两个作用域,声明192.168.2.0/24和192.168.3.0/24网段。如图:


(2)配置dhcp中继代理
1)配置网卡的ip地址
根据网络拓扑设置dhcp服务器网卡ip地址 如图:


2)启用中继代理
在dhcp中继代理计算机上安装dhcp-3.0.5-7.el5.i386.rpm软件包。如图:


中继代理计算机默认不转发dhcp客户机的请求,需要使用dhcrelay指定dhcp服务器的位置 如图:


(3)客户端测试验证:
在LAN2中选择客户机测试能否正常获取dhcp服务器的ip地址
dhcp服务器的日志信息 如图:


LAN2中guest客户端获取ip地址 如图:

LAN1客户端获取ip地址时dhcp服务器端日志信息 如图:


LAN1中客户端获取ip地址 如图:



注意:当有多台dhcp服务器时,把dhcp服务器放在不同子网上能够取得一定的容错能力,而不是把所有dhcp服务器都放在同一子网上。这些服务器在它们的作用域中不应有公共的ip地址。
九、客户端的配置:
重新申请ip地址:ipconfig /renew 注意前提是设置成自动获取ip 如图:





十、dhcp服务配置排错
1、dhcpd 如图:


2、租约文件
一定要确保租约文件存在,否则无法启动dhcpd服务
3、ping
4、MULTICAST
如果网络正常,dhcp服务器配置正确,但是还是无法获得ip地址的话,很可能是因为dhcp服务器网卡没有开启MULTICAST(多点传送)功能。
创建一个到地址255.255.255.255的路由,加这条路由命令道/etc/rc.d/rc.local使得每次启动后自动运行。如图:


如果提示:"255.255.255.255:Unkown host",那么我们需要修改/etc/hosts文件,并添加一条主机记录。
255.255.255.255后面为主机名,主机名没有特别约束。如图:


注意:可以编辑/etc/rc.d/rc.local文件,添加route add -host 255.255.255.255 dev eth0条目是多点传送功能长久生效。如图:


5、查看系统日志
/var/log/messages

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值