Dhcp server
原理
DHCPDISCOVER(DHCP发现)
DHCPOFFER(DHCP提供)
DHCPREQUEST(DHCP请求)
DHCPACK(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地址配置本机地址。
DHCPDISCOVER(DHCP发现)
DHCPOFFER(DHCP提供)
DHCPREQUEST(DHCP请求)
DHCPACK(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.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地址。
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)服务器将相关租约信息存入数据库。
(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(选项)
parameters(参数)
declarations(声明)
option(选项)
2)dhcpd.conf主配置文件整体框架
dhcpd.conf包括全局配置和局部配置。
全局配置可以包含参数或选项,该部分对整个DHCP服务器生效。
局部配置通常由声明部分来表示,该部分仅对局部生效,比如只对某个IP作用域生效哈~
dhcpd.conf文件格式:
#全局配置
参数或选项; #全局生效
dhcpd.conf包括全局配置和局部配置。
全局配置可以包含参数或选项,该部分对整个DHCP服务器生效。
局部配置通常由声明部分来表示,该部分仅对局部生效,比如只对某个IP作用域生效哈~
dhcpd.conf文件格式:
#全局配置
参数或选项; #全局生效
#局部配置
声明 {
参数或选项; #局部生效
}
当DHCP主程序包安装好后会自动生成主配置文件的范本文件/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
而在/etc目录下会建立一个空白的dhcpd.conf主配置文件。
现在我们将范本配置文件复制到/etc目录下替换掉空白dhcpd.conf主配置文件。
dhcp范本配置文件内容包含了部分参数、声明以及选项的用法,其中注释部分可以放在任何位置,并以“#”号开头,当一行内容结束时,以“;”号结束,大括号所在行除外哈~~~
可以看出整个配置文件分成全局和局部两个部分。但是并不容易看出哪些属于参数,哪些属于声明和选项哈~
声明 {
参数或选项; #局部生效
}
当DHCP主程序包安装好后会自动生成主配置文件的范本文件/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
而在/etc目录下会建立一个空白的dhcpd.conf主配置文件。
现在我们将范本配置文件复制到/etc目录下替换掉空白dhcpd.conf主配置文件。
dhcp范本配置文件内容包含了部分参数、声明以及选项的用法,其中注释部分可以放在任何位置,并以“#”号开头,当一行内容结束时,以“;”号结束,大括号所在行除外哈~~~
可以看出整个配置文件分成全局和局部两个部分。但是并不容易看出哪些属于参数,哪些属于声明和选项哈~
3.2 常用参数介绍
参数主要用于设置服务器和客户端的动作或者是否执行某些任务,比如设置IP地址租约时间、是否检查客户端所用的IP地址等等哈~
参数主要用于设置服务器和客户端的动作或者是否执行某些任务,比如设置IP地址租约时间、是否检查客户端所用的IP地址等等哈~
常见参数使用如下:
(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)都是以秒为单位的租约时间,该项参数可以作用在全局配置中,也可以作用在局部配置中。
(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)都是以秒为单位的租约时间,该项参数可以作用在全局配置中,也可以作用在局部配置中。
3.3 常用声明介绍
声明一般用来指定IP作用域、定义为客户端分配的IP地址池等等哈~
声明格式如下:
声明 {
选项或参数;
}
常见声明的使用如下:
(1)subnet 网络号 netmask 子网掩码 {......}
作用:定义作用域,指定子网
注意:网络号必须与DHCP服务器的网络号相同
(2)range 起始IP地址 结束IP地址
作用:指定动态IP地址范围
注意:可以在subnet声明中指定多个range,但多个range所定义IP范围不能重复哈~
3.4 常用选项介绍
选项通常用来配置DHCP客户端的可选参数,比如定义客户端的DNS地址、默认网关等等。选项内容都是以option关键字开始滴~
常见选项使用如下:
(1)option routers IP地址
作用:为客户端指定默认网关
(2)option subnet-mask 子网掩码
作用:设置客户端的子网掩码
(3)option domain-name-servers IP地址
作用:为客户端指定DNS服务器地址
注意:(1)、(2)、(3)选项可以用在全局配置中,也可以用在局部配置中。
声明一般用来指定IP作用域、定义为客户端分配的IP地址池等等哈~
声明格式如下:
声明 {
选项或参数;
}
常见声明的使用如下:
(1)subnet 网络号 netmask 子网掩码 {......}
作用:定义作用域,指定子网
注意:网络号必须与DHCP服务器的网络号相同
(2)range 起始IP地址 结束IP地址
作用:指定动态IP地址范围
注意:可以在subnet声明中指定多个range,但多个range所定义IP范围不能重复哈~
3.4 常用选项介绍
选项通常用来配置DHCP客户端的可选参数,比如定义客户端的DNS地址、默认网关等等。选项内容都是以option关键字开始滴~
常见选项使用如下:
(1)option routers IP地址
作用:为客户端指定默认网关
(2)option subnet-mask 子网掩码
作用:设置客户端的子网掩码
(3)option domain-name-servers IP地址
作用:为客户端指定DNS服务器地址
注意:(1)、(2)、(3)选项可以用在全局配置中,也可以用在局部配置中。
ddns-update-style interim;
ignore client-updates;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 192.168.1.51,192.168.1.52;
option domain-name "domain.org";
option domain-name-servers 192.168.1.51,192.168.1.52;
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;
# 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.1.2 192.168.1.100;
default-lease-time 21600;
max-lease-time 43200;
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;
}
}
host ns {
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
}
}
3.5 租约数据库文件
租约数据库文件用于保存一系列的租约声明,其中包含客户端的主机名、MAC地址、分配到的IP地址,以及IP地址的有效期等相关信息。这个数据库文件是可编辑的ASCII格式文本文件。每当发生租约变化的时候,都会在文件结尾添加新的租约记录。
DHCP刚安装好后租约数据库文件dhcpd.leases是个空文件。
当DHCP服务正常运行后就可以使用cat命令查看租约数据库文件内容了
租约数据库文件用于保存一系列的租约声明,其中包含客户端的主机名、MAC地址、分配到的IP地址,以及IP地址的有效期等相关信息。这个数据库文件是可编辑的ASCII格式文本文件。每当发生租约变化的时候,都会在文件结尾添加新的租约记录。
DHCP刚安装好后租约数据库文件dhcpd.leases是个空文件。
当DHCP服务正常运行后就可以使用cat命令查看租约数据库文件内容了