详解DHCP服务安装与管理

DHCP服务安装与管理

一、DHCP是什么

名称:DHCP – Dynamic Host Configuration Protocol 动态主机配置协议 
功能:DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途: 
1、 给内部网络或网络服务供应商自动分配IP地址,主机名,DNS服务器,域名 
2、 配和其它服务,实现集成化管理功能。如:无人执守安装服务器

DHCP是一个C/S架构的协议,DHCP服务器端使用UDP的67号端口; DHCP 客户端使用UDP的68号端口。

为什么使用DHCP

①DHCP服务器用于为客户机动态分配IP地址,避免了TCP/IP网络中地址的冲突,便于对网络的IP地址进行管理; 
②在使用TCP/IP协议通信的网络中,每台计算机都必须至少有一个IP地址,这样才能与其他计算机通信。对于一个较大规模的网络来说,逐个地为每台计算机分配和设置IP地址,将是一件很麻烦的事情,也不便于管理和维护; 
③对于像笔记本这样的移动用户,经常从一个子网移动到另一个子网,需要不断地手动更换IP地址,很不方便; 
④DHCP服务器通过动态的IP地址分配还能解决IP地址资源不足的情况,因此DHCP产生了。

二、DHCP工作原理(C/S)

我们看下面的图,客户端从DHCP服务器获取IP地址的过程我们称为DHCP租约过程,分为四个步骤:

1、客户发出的IP租用请求报文

DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCP DISCOVER广播包,请求租用IP地址。该 广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。

2、DHCP Server回应的IP租用提供报文

任何接收到DHCP DISCOVER广播包并且能够提供IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCP OFFER广播包,提供一个IP地址。该广播包的源IP地址为DHCP服务器IP,目标IP地址为255.255.255.255;包中还包含提供的IP地址、子网掩码及租期等信息。

3、客户选择IP租用报文

客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCP OFFER包,并向网络中广播一个 DHCP REQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。 所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。

4、DHCP服务器发出IP租用确认报文

被客户机选择的DHCP服务器在收到DHCP REQUEST广播后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。

5、客户配置成功后发出的公告报文

客户机在收到DHCP ACK包,会使用该广播包中的信息来配置自己的TCP/IP,则租用过程完成,客户机可以在网络中通信。至此一个客户获取IP的DHCP服务过程基本结束,不过客户获取的IP一般是用租期,到期前需要更新租期,这个过程是通过租用更新数据包来完成的。

注意:客户端执行DHCP DISCOVER 后,如果没有DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个IP 地址,配置本机地址。

169.254.0.0/16是windows的自动专有IP寻址范围,也就是在无法通过DHCP获取IP地址时,由系统自动分配的IP地址段。

客户IP租用更新报文,由于IP是“租”来的,所以是有租期的:

(1)在当前租期已过去50%时,DHCP客户机直接向为其提供IP地址的DHCP服务器发送DHCP REQUEST消息包。如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%。 
(2)如果在租期过去50%时未能成功更新,则客户机将在当前租期过去87.5%时再次向为其提供IP地址的DHCP联系。如果联系不成功,则重新开始IP租用过程。 
(3)如果DHCP客户机重新启动时,它将尝试更新上次关机时拥有的IP租用。如果更新未能成功,客户机将尝试联系现有IP租用中列出的缺省网关。如果联系成功且租用尚未到期,客户机则认为自己仍然位于与它获得现有IP租用时相同的子网上(没有被移走)继续使用现有IP地址。 如果未能与缺省网关联系成功,客户机则认为自己已经被移到不同的子网上,将会开始新一轮的IP租用过程。


总结 
50%:续约。(续不上继续用) 
87.5%:再次续约。(续不上找别人) 
DHCP工作站除了在开机的时候发出 DHCPrequest 请求之外,在租约期限一半的时候也会发出 DHCPrequest ,如果此时得不到 DHCP服务器的确认的话,工作站还可以继续使用该IP;当租约期过了87.5%时,如果客户机仍然无法与当初的DHCP服务器联系上,它将与其它 DHCP服务器通信。如果网络上再没有任何DHCP协议服务器在运行时,该客户机必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开 始,再一次重复整个过程。要是您想退租,可以随时送出 DHCPRELEASE 命令解约,就算您的租约在前一秒钟才获得的。

什么是中继(建议不要用)

设想一个场景:一个公司有A和B两个网络,但是不想给每个网络都分配一个DHCP服务器,只想用一个DHCP服务器完成地址的分配,该怎么办呢?此时就可以用到中继了,将DHCP服务器放到A网络中,配置一个地址池,用于给A网络分配地址,然后配置一个中继地址池,用于给B网络分配地址。之后在路由器(直连A-B)上,配置一个中继,当B网络的客户机发起DHCP的请求时,路由器就将请求发给A网络的DHCP服务,DHCP服务器将请求响应给路由器,路由器再响应给B网络。(注意:此过程路由器和DHCP服务器间是单播通信,路由器和B网络的主机为广播通信)。

三、DHCP配置

1、安装 dhcp

[root@localhost ~]# yum -y install dhcp

2、dhcp主文件列表

[root@localhost ~]# rpm -ql dhcp/etc/dhcp/dhcpd.conf                # dhcp 配置文件/etc/rc.d/init.d/dhcpd              # dhcp 服务启动脚本/etc/rc.d/init.d/dhcrelay           # dhcp中继 服务启动脚本/etc/sysconfig/dhcpd                # 服务脚本配置文件/usr/sbin/dhcpd                     # dhcp 程序,可执行文件/usr/sbin/dhcrelay                  # dhcp中继程序,可执行文件

3、配置文件详解

[[email protected] ~]# cat /etc/dhcp/dhcpd.conf ## DHCP Server Configuration file.#   see /usr/share/doc/dhcp*/dhcpd.conf.sample#   see ‘man 5 dhcpd.conf‘#

提示说配置文件在 /usr/share/doc/dhcp*/dhcpd.conf.sample, 那么我们把它复制到/etc/dhcp目录,并改名为 dhcpd.conf :

[[email protected] ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf cp: overwrite `/etc/dhcp/dhcpd.conf‘? y

配置文件主要分为四个部分:

option               #定义全局参数

subnet Netaddress netmask NETMask{  #定义子网}

host NAME {          #主机配置,分配固定IP}

log-facility         #定义dhcp 日志信息

1、每一行必须以分号 ; 结尾。只能通过/var/log/messages文件查看是否有错误 
2、全局参数对全局生效,当全局配置与局部配置冲突时,局部参数将覆盖全局参数。 
3、局部配置必须包含在 花括号 中,其他都是全局配置

常用指令介绍:

指令                    说明domain-name             指定域名domain-name-servers     DNS服务器地址routers                 默认网关default-lease-time      默认租约期限max-lease-time          最大租约期限log-facility            日志subnet                  定义子网range                   定义地址池host                    保留主机地址filename                指定PXE文件server-name             服务器名称fixed-address           固定IP地址

配置文件:

全局配置

#option domain-name "mageedu.com";          #定义域名为test.org,这个没用,一般都注释掉option domain-name-servers 192.168.211.128;   #定义DNS服务器为172.16.0.1,多个以逗号分隔default-lease-time 600;    #定义默认租约期限,这里为600秒max-lease-time 7200;       #定义最大租约期限,这里为7200秒

### 日志信息log-facility local7;       #日志为faility local7;可以看/etc/rsyslog.conf,这里不解释

### 子网选项subnet 192.168.211.0 netmask 255.255.255.0 {    # 子网声明#定义了一个子网192.168.211.0/24,注意,这个地址池一定要和你服务器的IP在同一网段,即使是中继,也要至少有一个本地子网段!  192.168.211.240 192.168.211.245;    #地址池从192.168.211.240到192.168.211.245;以空格分割  option domain-name-servers 114.114.114.114,192.168.211.128;  #定义DNS服务器  option routers 192.168.211.128;         #定义网关为192.168.211.128  option broadcast-address 192.168.211.255;   #定义广播地址为192.168.211.255  default-lease-time 86400;     #定义默认IP 租约时间,以秒为单位的租约时间。  max-lease-time 86400;         #定义客户端IP租约时间的最大值,当客户端超过租约时间,却尚未更新IP 时,最长可以使用该IP 的时间;}

### 主机选项,保留地址(有时我们需要为某些主机配置固定IP地址,host选项满足这一需求)host server1 {                        #定义一个名为server1的主机    option routers 192.168.211.128;     #定义网关    option domain-name-servers 192.168.211.128;  #定义域名服务器    option broadcast-address 192.168.211.255;   #定义广播地址    filename "vmunix.passacaglia";     #指向一个文件,用于PXE    server-name "cobbler.mageedu.com";   #通知客户端dhcp服务器名字    hardware ethernet 0:0:c0:5d:bd:95;   #声明了server1这个主机的MAC地址    fixed-address 192.168.211.133;   #定义这个主机的固定ip地址为192.168.211.133}

## 绑定pc1主机ip地址配置host pc1 {     hardware ethernet 00:a0:cc:cf:9C:14;   #客户端MAC地址     fixed-address 192.168.1.20;            #客户端要获取的地址}

没有写在subnet或host中的选项是全局选项,也就是默认值,当host或者subnet中没有定义的时候生效。当内部定义后,则匹配最精确的,也就是自身定义的。

如果DHCP服务器是多网卡,还需要配置dhcpd监听网卡:

[root@localhost ~]# vim /etc/sysconfig/dhcpd# Command line options hereDHCPDARGS=eth0   #绑定网卡名称

4、启动 dhcp 服务

[root@localhost ~]# service dhcpd start

5、查看监听端口

[[email protected] ~]# ss -tulpn | grep dhcpudp    UNCONN     0      0                      *:67                    *:*      users:(("dhcpd",27249,7)

6、查看租约信息

作为服务器端的租约文件:/var/lib/dhcpd/dhcpd.leases 
作为客户端的租约文件: /var/lib/dhclient/dhclient-eth0.leases

租期数据库

在 DHCP 服务器上,/var/lib/dhcp/dhcpd.leases 文件中存放着 DHCP 的客户租期数据库。该文件不应该被手工修改。每个新近分配的 IP 地址的 DHCP 租期信息都会自动储存在租期数据库中。该信息包括租期的长度;IP 地址被分配的对象;租期的开始和终止日期;以及用来检索租期的网卡的 MAC 地址。 
租期数据库中所用的时间是格林威治标准时间(GMT),不是本地时间。 
租期数据库不时被重建,因此它不算太大。首先,所有已知的租期会被储存到一个临时的租期数据库中,dhcpd.leases 文件被重命名为 dhcpd.leases~,然后,临时租期数据库被写入 dhcpd.leases 文件。 
在租期数据库被重命名为备份文件,新文件被写入之前,DHCP 守护进程有可能被杀死,系统也有可能会崩溃。如果发生了这种情况,启动服务所需的dhcpd.leases 文件就不会存在。这时,请不要创建新租期文件。因为这样做会丢失所有原有的旧租期文件,从而导致更多问题。正确的办法是把dhcpd.leases~ 备份文件重命名为 dhcpd.leases,然后再启动守护进程。

配置dhcp中继

1)在dhcp服务器上的主配置文件/etc/dhcp/dhcpd.conf中添加需要中继的subnet并重启dhcp服务 
2)在中继服务器上开启包转发功能

[root@localhost ~]# vim /etc/sysctl.confnet.ipv4.ip_forward = 1[root@localhost ~]# sysctl -p    #更新配置文件

3)在中继服务器上的配置文件/etc/sysconfig/dhcrelay中添加参数

[root@localhost ~]# vim /etc/sysconfig/dhcrelayINTERFACES="eth0 eth1"            #声明你要使用哪几块网卡中继DHCPSERVERS="192.168.211.128"        #指定dhcp服务器

4)在中继服务器上启动中继服务

[root@localhost ~]# service dhcprelay start

配置DHCP客户端

通常网管员使用选择手工配置 DHCP 客户,需要修改/etc/sysconfig/network 文件来启用联网;并修改/etc/sysconfig/network-scripts 目录中每个网络设备的配置文件。在该目录中,每个设备都有一个叫做ifcfg-eth?的配置文件,eth?是网络设备的名称。如eth0等。如果你想在引导时启动联网,NETWORKING变量必须设为 yes。除了此处之外/etc/sysconfig/network 文件应该包含以下行:

NETWORKING=yesDEVICE=eth0BOOTPROTO=dhcpONBOOT=yes

测试:

在 dhcp 服务器上, tail -f /var/log/messages , 可以看到dhcp分配的详细信息。 
cat /var/lib/dhcpd/dhcpd.leases 也可以看到分配的租期数据库。

时间: 2024-12-25 10:33:57

详解DHCP服务安装与管理的相关文章

yum与rpm的详解 --用来安装软件

                   yum与rpm的详解                           --用来安装软件 关键字:本地yum  第三方yum  yum参数 yum软件控制 rpm参数  永久挂载   软件的依赖性 第一部分:配置本地yum源      1.yum安装http服务,并共享给其他主机可以访问 如果在服务器不在的情况下或是无法从网上获取第三方软件时,此时,可以利用自己的镜像进行安装,需要一个与本机匹配的安装镜像,rhel-server-7.0-x86_64-dv

Zabbix配置文件详解之服务端——zabbix_server

作为zabbix的部署,这里就不说了,网上一大堆文档,但关于配置文件的说明就比较少,这里列出服务端的配置文件zabbix_server的详细解释,感谢我主管的功劳. Zabbix Server端配置文件说明 # This is a configuration file for Zabbix Server process # To get more information about Zabbix, # visit http://www.zabbix.com ############ GENERA

iOS插件详解之----CLangFormat(代码格式化管理插件)(2016.1.12王彬)

iOS插件详解之----CLangFormat(代码格式化管理)(2016.1.12王彬) 虽然在项目创建和团队组建的初期,我们就把公共约定以及一些规范定下来了,并且由于我们的代码是通过Git来做版本控制的,web上直接就支持Markdown格式的readme文件,可以随时看到最新的版本,但是这种规范只能依靠个人的意识,或者通过代码Review来解决,而且做代码Review的时候,你也不好意思总是写上一堆诸如“这里要加个空格”.“那里要加上换行”的评论吧?如果不管,久而久之,会因为每个人的习惯不

WebSocket安卓客户端实现详解(三)–服务端主动通知

WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 WebSocket安卓客户端实现详解(二)–客户端发送请求 终于是最后一篇啦,有点激动\ ( ≧▽≦ ) /啦啦啦, 服务端主动通知 热身完毕,我们先回顾下第一篇中讲到的服务端主动通知的流程 根据notify中事件类型找到对应的处理类,处理对应逻辑. 然后用eventbus通知对应的ui界面更新. 如果

微信公众平台认证步骤详解及服务号和订阅号区别

微信公众号对象: 企业.媒体.以及公益.社区等组织.机构. 微信公众号作用: 通过微信公众渠道将品牌推广给上亿或者更多的微信用户. 1.极快的传播速度.极少的宣传成本: 2.提高品牌知名度,打造更具影响力的品牌形象. 3.危机公关(越来越需要) 微信公众号怎样认证: 一般企业或个人通过认证除了看努力还得看天意,当然也可以联系一些认证机构去办理相对要简单些.虽然微信公众号的口号是"再小的个体,也有自己品牌",但个体的力量毕竟不如团队的力量-- 认证条件: 1.微信公众号认证需要在业内有一

Nginx Windows版的服务安装和管理工具

以前研究过负载均衡,最近正在项目上实施(从来没做过小项目以上级别的东西,哈),nginx挺好,不过Windows有点为难,小流量和本地不追求性能,简单易用是目标. Nginx Windows上并没有提供安装为服务的方式,Windows Service多好用啊,开机自动运行.因此有了此工具,地址:https://github.com/xiangyuecn/Nginx-Windows-Service-Manager copy之前说点什么 一个入口,管理nginx的启动.关闭.重启.重新加载配置.扩展

centos之dhcp服务部署、管理、配置详解

DHCP全称:Dynamic Host Configuration Protocol 动态主机设置协议是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或网络服务供应商自动分配IP地址:给用户用于内部网管理员作为对所有计算机作中央管理的手段. 功能:通常被应用在大型的局域网络环境中,主要作用是集中的管理.分配IP地址,使网络环境中的主机动态的获得IP地址.Gateway地址.DNS服务器地址等信息,并能够提升地址的使用率. DHCP协议采用客户端/服务器模型,主机地址的动态分

bash数组和字符串处理、yum命令详解及编译安装

8月22号主要内容: 一.bash中的数组 二.bash中字符串处理 三.高级变量及配置用户环境 四.yum详解 五.编译安装 一.bash中的数组 1.数组的组成和申明 (1) 数组:存储多个元素的连续的内存空间,相当于多个变量的 集合. (2) 组成:数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式 ,即为关联索引,bash4.0版本之后开始支持. bash的数组支持稀疏格式(索引不连续) (3) 申明数组: declare -a ARRAY

【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单

写在开头 现在scrapy的安装教程都明显过时了,随便一搜都是要你安装一大堆的依赖,什么装python(如果别人连python都没装,为什么要学scrapy-.)wisted, zope interface,pywin32---现在scrapy的安装真的很简单的好不好! 代码我放github上了,可以参考: https://github.com/hk029/doubanbook 为什么要用scrapy 我之前讲过了requests,也用它做了点东西,([图文详解]python爬虫实战--5分钟做