You are on page 1of 12

esson3 DHCP 动态配置服务 徐云雷

Lesson3 DHCP 动态配置服务

BOOTP 协议介绍

• DHCP 协议是在 BOOTP 协议的基础上发展起来的,因此,在介绍 DHCP 协议之前,我们先来介绍 BOOTP


协议。
• BOOTP 协议虽然简单,却可以为许多应用提供服务,主要是远程引导(客户机不包括引导盘)。DHCP 与
BOOTP 两者的基本原理是一样的。
• BOOTP 是一个主机配置协议,在客户机启动时分配 IP 地址。相对比较而言,BOOTP 是静态的,而 DHCP
是动态的。
• 设计 BOOTP 协议的目的是用作远端引导。主要是告诉连接客户机引导文件的位置。DHCP 有一个动态 IP
分配策略,这个策略在整个子网掩码范围内汇集永久和短期租借的地址。而 BOOTP 协议没有这个功能。

DHCP 的基本原理
• 什么是 DHCP
• DHCP 的特点
• DHCP 中几个常用的概念
• DHCP 的工作原理
• DHCP 服务器的设置
• Dhcpd 进程的控制

什么是 DHCP
• 动态主机分配协议(Dynamic Host Configuration Protocol,DHCP)是一个简化主机 IP 地址分配管理的 TCP/IP
标准协议。用户可以利用 DHCP 服务器管理动态的 IP 地址分配及其他相关的环境配置工作(如:DNS、
WINS、Gateway 的设置)

• 在使用 TCP/IP 协议的网络上,每一台计算机都拥有唯一的计算机名和 IP 地址。IP 地址(及其子网掩码)
使用与鉴别它所连接的主机和子网,当用户将计算机从一个子网移动到另一个子网的时候,一定要改变该
计算机的 IP 地址。如采用静态 IP 地址的分配方法将增加网络管理员的负担,而 DHCP 可以让用户将 DHCP
服务器中的 IP 地址数据库中的 IP 地址动态的分配给局域网中的客户机,从而减轻了网络管理员的负担。
用户可以利用即时服务器 6.0 提供的 DHCP 服务在网络上自动的分配 IP 地址及相关环境的配置工作。
• 在使用 DHCP 时,整个网络至少有一台服务器上安装了 DHCP 服务,其他要使用 DHCP 功能的工作站也必
须设置成利用 DHCP 获得 IP 地址。

DHCP 的特点
• 安全而可靠的设置:DHCP 避免了因手工设置 IP 地址及子网掩码所产生的错误,同时也避免了把一个 IP
地址分配给多台工作站所造成的地址冲突。对于没有网络参数配置经验的人员来说,IP 地址的配置并不是
件简单的工作,从而难免会发生错误,轻则影响用户的使用,重则影响整个局域网的使用,而这些配置工
作完全依赖于网络管理员也给其带来了不小的工作强度,DHCP 使用自动的配置方式,大大减少了这些方
面的矛盾。
• 降低了管理 IP 地址设置的负担:使用 DHCP 服务器大大缩短了配置或重新配置网络中工作站所花费的时
间,同时通过对 DHCP 服务器的设置可灵活的设置地址的租期。同时,DHCP 地址租约的更新过程将有助
于用户确定那个客户的设置需要经常更新(如:使用便携机的客户经常更换地点)
,且这些变更由客户机与
DHCP 服务器自动完成,无需网络管理员干涉。
1 -- 1
esson3 DHCP 动态配置服务 徐云雷

• 增加了局域网的可管理性:使用 DHCP 可以指定为固定的工作站或群租设置指定的 IP 地址和网络参数,这


样,可以非常方便的知道整个局域网的设置情况,加强了对局域网的管理。

DHCP 中几个常用的概念

• 作用域:作用域是一个网络中的所有可分配的 IP 地址的连续范围。作用域主要用来定义网络中单一的物理
子网的 IP 地址范围。作用域是服务器用来管理分配给网络客户的 IP 地址的主要手段。
• 超级作用域:超级作用域是一组作用域的集合,它用来实现同一个物理子网中包含多个逻辑 IP 子网。在超
级作用域中只包含一个成员作用域或子作用域的列表。然而超级作用域并不用于设置具体的范围。子作用
域的各种属性需要单独设置。
• 排除范围:排除范围是不用于分配的 IP 地址序列。它保证在这个序列中的 IP 地址不会被 DHCP 服务器分
配给客户机。
• 地址池:在用户定义了 DHCP 范围及排除范围后,剩余的地址构成了一个地址池,地址池中的地址可以动
态的分配给网络中的客户机使用。
• 租约:租约是 DHCP 服务器指定的时间长度,在这个时间范围内客户机可以使用所获得的 IP 地址。当客户
机获得 IP 地址时租约被激活。在租约到期前客户机需要更新 IP 地址的租约,当租约过期或从服务器上删除
则租约停止。
• 保留地址:用户可以利用保留地址创建一个永久的地址租约。保留地址保证子网中的指定硬件设备始终使
用同一个 IP 地址。
• 选项类型:选项类型是 DHCP 服务器给 DHCP 工作站分配服务租约时分配的其它客户配置参数。经常使用
的选项包括:默认网关的 IP 地址(routers)
,DNS 服务器等。一般在设置每个范围是这些选项都被激活。
DHCP 管理器允许设置应用于服务器上所有范围的默认选项。
大多数选项都是通过 RFC 2132 预先设定好的,
但用户可以根据需要利用 DHCP 管理器定义及添加自定义选项类型。

DHCP 的工作原理
• 第一种:客户机第一次启动登录网络时的初始化租约过程。
• 当 DHCP 客户机启动登录网络时通过以下步骤从 DHCP 服务器获得租约:
1. DHCP 客户机在本地子网中先发送 DHCP discover 信息,此信息以广播的形式发送,因为客户
机现在不知道 DHCP 服务器的 IP 地址。
2. 在 DHCP 服务器收到 DHCP 客户机广播的 DHCP discover 信息后,它向 DHCP 客户机发送 DHCP
offer 信息,其中包括一个可租用的 IP 地址。

2 -- 2
esson3 DHCP 动态配置服务 徐云雷

3. 如果没有 DHCP 服务器对客户机的请求作出反应,则客户机无法获得 IP 地址,初始化失败。但


客户机在后台每隔 5 分钟发送四次 DHCP discover 信息直到它收到 DHCP offer 信息。
4. 一旦客户机收到 DHCP offer 信息,它发送 DHCP request 信息到服务器表示它将使用服务器所提
供的 IP 地址。
5. DHCP 服务器在收到 DHCP request 信息后,即发送 DHCP positive 确认信息,以确定此租约成立,
且此信息中还包含其它 DHCP 选项信息。
6. 客户机收到确认信息后,利用其中的信息配制它的 TCP/IP 属性并加入到网络中。图 3-2 所示是
DHCP 客户机从 DHCP 服务器获得租约的过程。
7. 当客户机请求的是一个无效的或重复的 IP 地址,则 DHCP 服务器在第五步发送 DHCP negative
确认信息,客户机收到 DHCP negative 确认信息初始化失败。

• 第二种:DHCP 客户机更新租约的过程:
• 在客户机重新启动或租期达到 50%时,客户机都需要更新租约。
1. 客户机直接向提供租约的电位器发送请求,要求更新及延长现有地址的租约。
2. 如果 DHCP 服务器收到请求,它发送 DHCP 确认信息给客户机,更新客户机的租约。
3. 如果客户机无法于提供租约的服务器取得联系,则客户机一直等到租期达到 87.5%时,客户机
进入到一种重新申请的状态,它向网络上所有的 DHCP 服务器广播 DHCP discover 请求以更新现
有的地址租约。
4. 如有服务器响应客户机的请求,那么客户机使用该服务器提供的地址信息更新现有的租约。
5. 如果租约过期或无法与其它服务器通信,客户机将无法使用现有的地址租约。
6. 客户机返回到初始启动状态,利用前面所述的步骤重新获取 IP 地址租约。

DHCP 服务器的设置

• DHCP 是使用配置文件来控制的,它的配置文件是/etc/dhcpd.conf。
#Sample /etc/dhcpd.conf
default-lease-time 1200;
max-lease-time 9200;
ddns-update-style ad-hoc;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1,192.168.1.2;
option domain-name "mydomain.org";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}

3 -- 3
esson3 DHCP 动态配置服务 徐云雷

• default-lease-time:定义缺省的租期的时间,它的单位是秒,如果一个 dhcp 申请租约没有指定时间,将使用


这个时间值。
• max-lease-time:定义最大租约时间,单位是秒。它定义了可以使用的租期的最大值。
• ddns-update-style:dhcp 服务器可以动态的升级域名系统,这个选项用来设置动态升级域名系统的模式,目
前,可以支持的模式有三种:ad-hoc,interim 和 none,none 表示不支持自动升级模式。
• option subnet-mask:这里定义客户机申请时,分配给它的网络掩码。
• option broadcast-address:定义分配给客户机的广播地址。
• option routers:定义分配给客户机的默认网关的地址。
• option domain-name-servers:定义分配给客户机的域名解析服务器地址,可以设置多个。
• option domain-name:定义分配给客户机的域名。
• Subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
• 定义用来给客户机分配的 IP 地址范围的。首先,它先声明一个子网,并指定网络掩码,其次,在定义这个
子网内,哪些 IP 地址是用来分配的。使用 range 关键字指定可以分配的 IP 地址的起始和终止范围,这个范
围可以是多个,分别用 range 把它们定义出来。
• 这段配置文件将允许 DHCP 服务器分配两段地址范围给 DHCP 客户,192.168.1.10-100 和 192.168.1.150-200,
如果 DHCP 客户在申请租约时不请求一个特定租约失效时间,则以 default-lease-time 为租约时间,如果有请
求一个特定的租约失效时间,则采用 max-lease-time。
• host haagen {
hardware ethernet 08:00:2b:4c:59:23;
fixed-address 192.168.1.222;
}
• DHCP 服务器可以设定对于某台主机,总是分配固定的 IP 地址。它可以根据申请 DHCP 服务的客户机的
MAC 地址来判断,如果指定了为该主机分配固定的 IP 地址,那么就把设置好的 IP 地址分配给它。Hardware
ethernet 指定了客户机的 MAC 地址,而 fixed-address 指定要为该主机分配的 IP 地址。
• subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
default-lease-time 1200;
max-lease-time 9200;
ddns-update-style ad-hoc;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1,192.168.1.2;
option domain-name "mydomain.org";
}
• 这些配置信息出现在 subnet 的内部,只对该子网有效,因为 dhcpd.conf 可以指定多个子网。如果要对所有
的子网起作用,就要写到 subnet 语句的外边。
• share-network 用于告诉 DHCP 服务器某些 IP 子网其实是共享同一个物理网络。任何一个在共享物理网络里
的子网都必须声明在 share-network 语句里。当属于其子网里的客户启动时,将获得在 share-network 语句里
指定参数,除非这些参数被 subnet 或 host 里的参数覆盖。用 share-network 是一种权宜之计,例如某公司用
B 类网络 145.252,公司里的部门 A 被划在子网 145.252.1.0 里,子网掩码为 255.255.255.0,这里子网号为 8
个 bit,主机号也为 8 个 bit,但如果部门 A 急速增长,超过了 254 个节点,而物理网络还来不及增加,就要
4 -- 4
esson3 DHCP 动态配置服务 徐云雷

在原来这个物理网络上使用两个 8bit 掩码的子网,而这两个子网其实是在同一个物理网络上,这样就可以


使用 share-network 语句了,格式如下:
• shared-network mynet {
subnet 145.252.1.0 netmask 255.255.255.0 {
range 145.252.1.10 145.252.1.253;
}
subnet 145.252.2.0 netmask 255.255.255.0 {
range 145.252.2.10 145.252.1.253;
}
}
• 这里的 mynet 是个共享网络名。
• host 语句:上面的例子中,我们提到了 host 语句,它可以设定为一台客户机设定固定的一个 IP 地址,这里
要介绍它的另外一种格式:
host haagen { hardware ethernet 08:00:2b:4c:59:23; fixed-address 192.168.1.222; }
这种格式把配置内容写在一行上,简化了配置文件。
• group 语句:提供组设置,可以把一些信息归类成一个组,对这个组进行设置,例如可以把 host 信息放在一
个组里,如下:
group {
host ncd1 { hardware ethernet 00:c0:c3:49:2b:57; }
host ncd2 { hardware Ethernet 00:c0:c3:49:2b:64;}
host ncd3 { hardware Ethernet 00:c0:c3:49:2b:80;}
}
• server-name 语句:server-name 语句用于告诉客户机 DHCP 服务器的名字,格式是:
server-name “larry”;
• option host-name 语句:用于为客户机指定主机名,例如
option host-name “larry”;
• 当 dhcp 客户机申请了一个 IP 地址以后,会在系统中生成一个租约文件,默认的是/var/lib/dhcp/dhcpd.leases,
文件包含租约声明等内容,每次一个租约被获取、更新或释放,它的新值就被记录到文件的的末尾。这个
文件的格式是:
lease ip-address { statements... }
• 每个记录包含一个提供给客户的 IP 地址,在花括号里的语句包含一些租约信息。具体的租约信息因客户发
出不同的 DHCP 请求而稍有差别。
• 一个典型的 dhcpd.lease 的内容如下:
# All times in this file are in UTC (GMT), not your local timezone. This is
# not a bug, so please don't ask about it. There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0

lease 192.168.0.40 {
starts 6 2002/03/23 02:15:49;
ends 6 2002/03/23 14:15:49;
binding state active;
next binding state free;
5 -- 5
esson3 DHCP 动态配置服务 徐云雷

hardware ethernet 00:e0:08:00:07:16;


uid "\001\000\340\010\000\007\026";
client-hostname "larry";
}

dhcpd 进程的控制
• dhcpd 属于服务器端程序,它以守护模式运行在系统中,进程名字是 dhcpd。要启动 dhcpd 服务,可以使用
下面几种方法:
• 1. 运行命令/usr/sbin/dhcpd,如果看到下列信息,表示启动成功。
Internet Software Consortium DHCP Server V3.0
Copyright 1995-2001 Internet Software Consortium.
All rights reserved.
For info, please visit http://www.isc.org/products/DHCP
Wrote 0 leases to leases file.
Listening on LPF/eth0/00:00:e2:81:1a:e3/abc
Sending on LPF/eth0/00:00:e2:81:1a:e3/abc
Sending on Socket/fallback/fallback-net
• 2. 运行脚本:/etc/rc.d/init.d/dhcpd start。
• 如果要停止 dhcpd 服务,使用下列方法:
• 1. 运行命令 killall dhcpd;
• 2. 运行脚本/etc/rc.d/inti.d/dhcpd stop;
• 如果要设置客户端计算机使用 dhcp 协议,可以有如下几种方法:
• 1. 修改/etc/sysconfig/network-scripts/if-cfg 文件,增加这样一行,
BOOTPROTO=DHCP
以后每次启动计算机,系统都会自动的进行 DHCP 配置。
• 2. 使用即时控制台的网络配置界面,把网络接口配置为 DHCP 方式。
• 3. 使用 netconfig,配置网络接口为 DHCP 方式。
• 4. 使用 netcfg,配置网络接口为 DHCP 方式。
• 5. 如果计算机已经进入系统,可以运行 dhcpcd 命令,进行 DHCP 查找和获取网络配置信息。
• 6. 使用命令 pump 也可以获取 DHCP 网络配置信息。

使用 webmin 配置 DHCP 服务器


• 打开 webmin 设置 DHCP 服务器的窗口(点击“服务”模块,在点击“DHCP 服务器”组件),如图。
• 要设置 DHCP 服务器,先增加一个子网。点击“增加一个新的子网”,这将出现图的设置窗口。
网络地址:输入局域网的网络地址,例如可以输入 192.168.0.0。
网络掩码:输入网络掩码,例如 255.255.255.0。
地址范围:输入要为主机动态分配的地址范围,例如可以输入 192.168.0.20
-192.168.0.40,这段网络地址就会为使用 DHCP 协议的主机分配 IP 地址。

6 -- 6
esson3 DHCP 动态配置服务 徐云雷

• 在创建子网的窗口中,还有很多可以设置的项目,它们都是可选的设置信息,用来控制 DHCP 服务器的行


为,我们只说明其中的几个:
缺省租赁时间:设置 default-lease-time 值。
最大租赁时间:设置 max-lease-time 值。
启动文件名:客户机申请一个 DHCP 服务后,可以从服务器端获取一个启动信息相关的文件,这
里设置这个文件的名字。
服务器名:告诉客户机服务器的名字,相当于 server-name 语句。
dynamic DNS enabled:设置是否支持 DDns,相当于在配置文件中增加一条语句 ddns-updates on。
• 如果要增加一个共享网络,要在“网络名”里输入一个共享的网络名,这可以自定义,例如输入“myshare”。
然后,在右下角的“subnets in this shared network”选项里选择为这个共享网络增加的子网。我们曾经新建过
一个 192.168.0.0 的子网,它显示在列表中,选中它,就为这个共享网络增加了一个子网。如果 DHCP server
中定义了多个子网,它们都会显示在这个列表中,可以为共享网络选择多个子网。

7 -- 7
esson3 DHCP 动态配置服务 徐云雷

• 新增共享网络和子网后,DHCP 服务器界面将变成如图所示。它显示了两个图标,一个是子网的,一个是
共享网络的,如果要对已经添加的子网或共享网络进行修改,点击这两个图标就可以了。

• 要增加一个主机,点击“增加一个新的主机”,配置界面如图。
• 在“主机名”一栏中,填入要增加的主机名,例如 haagen,然后在下面的 hardware Address 中选择网络类型,
一般是 ethernet,表示以太网,接着在后面的输入框里输入该客户机的 MAC 地址,例如 00:c0:c3:49:2b:57;

“固定的 IP 地址”栏里输入要
分配的 IP 地址,例如
192.168.0.25,在点击下面
的“新建”按钮就可以了。

8 -- 8
esson3 DHCP 动态配置服务 徐云雷

• 在添加主机的界面中,有一个 Host assigned to 选项,它是一个下拉列表,包括四项:Toplevel、Shared network、


Subnet、group
• Toplevel 表示把 host 语句作为全局选项,不包括在任何选项中;shared network,如果选择了这个项目,表
示把 host 语句写入 shared-network 语句内,这时,它右边的列表将显示目前系统中可供选择的 shared-network
名;subnet,表示把 host 语句写入 subnet 语句内,同样,选择它后,右边的列表框内将显示可供选择的 subnet
名;group,
表示把 host 语句写入 group 语句内。输入完这些信息以后,保存设置。这时已经增加了一个新的主机,如
图。

• 可以为系统增加一个主机组,点击“增加一个新的主机组”,进入如图界面,这里不需要填入任何信息,只要
保存就可以了。

• 返回的界面中,可以看到,已经新增了一个组。如图。组图标的下面显示“没有成员”。要给该组增加成员,
可以再点击图标“haagen”,在“host assigned to”选项中选择“group”,那么它右边的输入框中将显示“没有成员”
项,选中,保存设置,就可以把 haagen 主机填入到新定义的组中。

9 -- 9
esson3 DHCP 动态配置服务 徐云雷

• webmin 配置 DHCP 服务器的最后几个项目是:编辑客户选项、列出活动的租赁和启动 DHCP 服务。


• 编辑客户选项:这个按钮允许用户对 dhcpd.conf 文件中的全局选项进行编辑和设置。例如:定义网络掩码,
默认网关,广播地址等等。其设置界面如图。

• 列出活动的租赁:这个设置页中将列示目前系统中已经存在的租约,它把这些租约以列表的形式分别显示
出来,如图。点击该 IP 地址,将删除这一条租约,这只是删除 dhcpd.lease 文件中的信息,客户机的 IP 地
址仍然有效,直到租约过期。

10 -- 10
esson3 DHCP 动态配置服务 徐云雷

• 启动 dhcp 服务:点击此按钮,启动系统的 dhcpd 服务。如果该服务已经启动,这个标签将变成“应用改变”,


它表示重新启动 dhcpd 服务。
• 在 DHCP 服务配置页里,最后一个要介绍的内容是当前模块的配置。在 DHCP 配置页的左上部,有一个链
接,“当前模块配置”,点击这个链接,可以进入配置当前模块页。如图。

• 在这个页面上,主要是配置 dhcpd 服务的系统文件,具体项目如下:


DHCP 服务器配置文件:这个项目指定 dhcpd 服务的配置文件的位置和文件名,缺省的文件是
/etc/dhcpd.conf,如果用户有另外的配置文件,可以在这里指定。注意,要指定该文件的绝对路径。
DHCP 服务器执行文件:指定 dhcpd 程序的位置,这是 DHCP 运行的主程序,一般的,它是
/usr/sbin/dhcpd,如果用户的系统中的 dhcpd 文件位置与此不同,要详细指定。
DHCP 服务器 pid 文件的路径:用于记录 dhcpd 进程在系统中的进程号,这在终止 dhcpd 服务的时
候需要,缺省的文件是/var/run/dhcpd.pid。
DHCP 服 务 器 租 赁 文 件 : 用 于 记 录 本 系 统 中 已 经 存 在 的 租 约 的 文 件 , 此 文 件 缺 省 是
/var/lib/dhcp/dhcpd.leases。
Sort leases by:设置在“列出活动的租赁”界面中显示当前租约的顺序,它有三种选择,分别为:按
dhcpd.leases 文件中的先后顺序显示;按照租约的 IP 地址排序显示;按照租约的客户机主机名排序
显示。
Display subnets and hosts:设置显示当前系统中的子网和主机名时,是以图标来显示,还是以列表
的形式来显示,缺省的是以图标的格式显示。
icons in row:设置当以图标的格式显示主机名时,每行上的图标的个数。这只有在上一个项目中
选择了 icons 时才起作用。
Display leases times in:设置显示租约的时间格式,有两个选项,一种是以 GMT(Greenwich mean
time,格林尼治时间)显示,另一种是以服务器的本地时间显示。

课后练习

• dhcp 服务的缺省配置文件是什么?
• 怎么给一台客户机配置固定的 IP 地址?
• 有几种方法可以启动 dhcpd 服务?

11 -- 11
esson3 DHCP 动态配置服务 徐云雷

练习实验

• 设置 DHCP 服务器
相关信息:本实验需要两台计算机,一台作为 DHCP 服务器,另一台作为 DHCP 客户端。
步骤:
1. 修改/etc/dhcpd.conf 文件,设置 IP 地址范围为 192.168.11.11 到 192.168.11.15,子网掩
码为 255.255.255.0。
2. 配置客户端计算机使用 DHCP 获得 IP 地址。重启 network 服务,并记录获得的 IP 地
址。
3. 设置 DHCP 服务器网关和 DNS 服务器选项为 192.168.11.254 和 12.34.45.56。重启 DHCP
服务。重启客户端的网络服务。

12 -- 12

You might also like