秘籍第五式 DHCP

幼敏悟过人,读书辄成诵。这篇文章主要讲述秘籍第五式 DHCP相关的知识,希望能为你提供帮助。
一、概述

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

特点: C/S 模式
自动分配IP地址,方便管理
DHCP不会同时租借相同的IP地址给两台主机;
DHCP管理员可以约束特定的计算机使用特定的IP地址;
可以为每个DHCP作用域设置很多选项;
客户机在不同子网间移动时不需要重新设置IP地址。每次都自动获取IP地址就可以了。
DHCP的缺点:
当网络上存在多服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;
DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP协议转发。
端口:
DHCP服务使用:端口67(bootps) 68(bootpc) 。



DHCP协议由 bootp协议发展而来,是BOOTP的增强版本,bootps代表服务端端口, bootpc代表客户端端口
bootp协议:引导程序协议(BOOTP)。它可以让无盘工作站从一个中心服务器上获得IP地址,为局域网中的无盘工作站分配动态IP地址,并不需要每个用户去设置静态IP地址。

BOOTP有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,MCA地址与IP的对应是静态的。换而言之,BOOTP非常缺乏“动态性 ”,若在有限的IP资源环境中,BOOTP的一对一对应会造成非常可观的浪费。
DHCP可以说是BOOTP的增强版本,它分为两个部分:一个是服务器端,而另一个是客户端。所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP环境数据。比较BOOTP, DHCP透过“租约”的概念,有效且动态的分配客户端的TCP/IP设定,而且,作为兼容考虑,DHCP也完全照顾了BOOTP Client的需求。

DHCP服务运行原理:

【秘籍第五式 DHCP】
DHCP Client发现阶段:
即DHCP客户端寻找DHCP服务端的过程,对应于客户端发送DHCP Discovery,因为DHCP Server对应于DHCP客户端是未知的,所以DHCP 客户端发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。
注意:客户端执行DHCP DISCOVER 后,如果没有DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个IP 地址配置本机地址。

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

DHCP Server 提供阶段:
DHCP Server提供阶段,即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCPdiscover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCPoffer提供信息

DHCP Client 确认阶段:
即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCPoffer提供信息,则DHCP客户机只接受第一个收到的DHCPoffer提供信息,然后它就以广播方式回答一个DHCPrequest请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址

DHCP Server确认阶段:
即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCPrequest请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCPack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址

DHCP Client重新登录网络:
当DHCP Client重新登录后,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
DHCP Client更新租约:

DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。

DHCP服务器工作原理当中,服务器比做服务员(一个餐馆里也可以有多个服务员),IP地址比做客户需要的食物。那么可以这样描述整个过程:客人走进餐馆,问:“有没有服务员啊?”(DHCP discover),多个服务员同时回答:“有,我这有鸡翅”“有,我这有汉堡”(DHCP offer)。客人说:“好吧,我要一份汉堡”(DHCP request,这个客人比较死板,总是选择第一次听到的食物),端着汉堡的服务员回应了一声:“来啦”(DHCP ack),并把食物端到客人面前,供其享用(将网卡和IP地址绑定)。客人下次来的时候,就直接找上次那个服务员点自己喜欢的汉堡了(DHCP request),如果还有汉堡,服务员会再次确认并上菜(DHCP ack),而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCP nack)。当然,服务员隔一段时间会来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。

二、安装配置1、安装
dhcp-common-4.1.1-25.P1.el6.x86_64.rpm#包括DHCP客户端和服务端共同需要的一些文件
dhclient-4.1.1-25.P1.el6.x86_64.rpm#dhcpclient
dhcp-4.1.1-25.P1.el6.x86_64.rpm# dhcp 服务端包

yum -y install dhcp

2、配置文件
1、主配置文件
cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
#see /usr/share/doc/dhcp*/dhcpd.conf.example
#see dhcpd.conf(5) man page
#
2、DHCP主程序包安装好后会自动生成主配置文件的范本文件
yes |cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

此时不要启动,启动会失败
#启动失败的原因是 dhcp服务器配置的IP地址和默认配置文件里定义的地址段不相同。
##在启动DHCP服务之前,需要给DHCPServer配置一个静态的IP地址
3、配置文件
dhcp 范本配置文件内容包含了部分参数、声明以及选项的用法,其中注释部分可以放在任何位
置,并以“#”号开头,当一行内容结束时,以“; ”号结束,大括号所在行除外

可以看出整个配置文件分成全局和局部两个部分。但是并不容易看出哪些属于参数,哪些属于声明和选项。

概念与协议:
作用域:可以分配IP的范围 subnet
地址池:可以分配给客户端的IP,range包括的IP
保留地址:指定某个客户端使用一个特定IP,通过host配置的
租约(时间):客户端可以使用这个IP地址的时间


配置文件:/etc/dhcp/dhcpd.conf部分配置解释
# option definitions common to all supported networks...#定义全局配置,通用于所有支持的网络选项.
option domain-name "example.org"; #为客户端指定所属的域
option domain-name-servers ns1.example.org, ns2.example.org; #为客户端指定DNS服务器地址

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

max-lease-time 7200; (数字)
作用:定义客户端IP租约时间的最大值,当客户端超过租约时间,却尚未更新IP 时,最长可以使用该IP的时间;
例:
比如,机器在开机获得IP地址后,然后关机了。这时,当时间过了default-lease-time 600秒后,没有机器向DHCP续约,DHCP会保留7200秒,保留此IP地址不用于分配给其它机器。 当超过7200秒后,将不再保留此IP地址给此机器。
注意:(3)、(4)都是以秒为单位的租约时间,该项参数可以作用在全局配置中,也可以作用在局部配置中。

log-facility local7; #定义日志类型为local7

subnet:
声明一般用来指定IP 作用域、定义为客户端分配的IP 地址池等等
声明格式如下:
subnet 网络号 netmask 子网掩码
选项或参数


例:
常见声明的使用如下:
(1)subnet 网络号 netmask 子网掩码 ......
作用:定义作用域,指定子网
如:
subnet 10.5.5.0 netmask 255.255.255.224
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;

注意:网络号必须与DHCP 服务器的网络号相同

下面介绍以下每个选项的含意:
(1)range 起始IP 地址结束IP 地址
作用:指定动态IP 地址范围
注意:可以在subnet(子网)声明中指定多个range,但多个range 所定义IP 范围不能重复

常用选项介绍
选项通常用来配置DHCP 客户端的可选参数,比如定义客户端的DNS 地址、默认网关等等。选项
内容都是以option 关键字开始。
常见选项使用如下:
(1)option routers IP 地址
作用:为客户端指定默认网关
如:option routers 10.5.5.1;
(2)option domain-name
作用:为客户端指定默认的域
(3)option domain-name-servers IP 地址
作用:为客户端指定DNS 服务器地址
注意:(1)、(2)、(3)选项可以用在全局配置中,也可以用在局部配置中。
2、租约数据库文件
租约数据库文件用于保存一系列的租约声明,其中包含客户端的主机名、MAC 地址、分配到的IP地址,以及IP地址的有效期等相关信息。这个数据库文件是可编辑的ASCII 格式文本文件。每
当发生租约变化的时候,都会在文件结尾添加新的租约记录。
DHCP 刚安装好后租约数据库文件dhcpd.leases 是个空文件
/var/lib/dhcpd/dhcpd.leases
当DHCP 服务正常运行后就可以使用cat 命令查看租约数据库文件内容了

3、随机分配IP
1、为两台机器添加一块网卡并重启
类型都是自定义,VMnet4,两台机器新添加的网卡,必须类型完全一致
需要给DHCP主机添加一块网卡,放在VMNET4,让添加的网卡分配地址服务,
131:ifconfig ens37 192.168.1.22/24 ##重启会失效
132: 添加网卡,并把网卡改到VMNET4

2、应用案例
公司有60 台计算机,IP 地址段为192.168.1.1-192.168.1.254,子网掩码是255.255.255.0,网关为192.168.1.1,192.168.1.2-192.168.1.30 网段地址给服务器配置,客户端可以使用的地址段为192.168.1.100-200,其余剩下的IP 地址为保留地址。

131操作:
1、先给DHCP服务器配置一个192.168.1.0网段的静态地址,否则服务不能启动。
2、配置好地址后,修改配置文件
mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bk
vim /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0
range 192.168.1.100 192.168.1.200;
option domain-name-servers 192.168.1.1;
option domain-name "qingchen.cn";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;


systemctl enable dhcpd
systemctl restart dhcpd
[root@k8s01 ~]# ps aux|grep dhcp
dhcpd83470.00.2 1059408136 ?Ss14:300:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
[root@k8s01 ~]# netstat -tlunp|grep dhcpd
udp00 0.0.0.0:670.0.0.0:*8347/dhcpd

132操作:
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
[root@k8s02 network-scripts]# cat ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
BOOTPROTO=dhcp##改成dhcp
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37##和网卡名称对应
DEVICE=ens37##和网卡名称对应
ONBOOT=yes

重启网卡:
ifdown ens37 & & ifup ens37
查看网关
[root@k8s02 network-scripts]# route -n
Kernel IP routing table
DestinationGatewayGenmaskFlags Metric RefUse Iface
0.0.0.0192.168.10.20.0.0.0UG10000 ens33
0.0.0.0192.168.1.10.0.0.0UG10100 ens37
172.17.0.00.0.0.0255.255.0.0U000 docker0
192.168.1.00.0.0.0255.255.255.0U10100 ens37
192.168.10.00.0.0.0255.255.255.0U10000 ens33
查看默认DNS
[root@k8s02 network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
search qingchen.cn
nameserver 192.168.10.2
nameserver 192.168.1.1

131查看租约信息
[root@k8s01 ~]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

server-duid "\\000\\001\\000\\001)k\\353\\352\\000\\014),\\365,";

lease 192.168.1.100
starts 6 2022/01/08 06:33:35;
ends 6 2022/01/08 06:43:35;
cltt 6 2022/01/08 06:33:35;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:da:b1:7b;
client-hostname "k8s02";

4、IP 地址绑定
在DHCP 中的IP 地址绑定用于给客户端分配固定IP 地址。比如服务器需要使用固定IP 地址就可以使用IP 地址绑定,通过MAC 地址与IP 地址的对应关系为指定的物理地址计算机分配固定IP地址。
整个配置过程需要用到 host 声明和hardware、fixed-address 参数。

(1)host 主机名 ......
作用:用于定义保留地址
(2)hardware 类型硬件地址
作用:定义网络接口类型和硬件地址。常用类型为以太网(ethernet),地址为MAC 地址。
(3)fixed-address IP 地址
作用:定义DHCP 客户端指定的IP 地址。

131操作:
[root@k8s01 ~]# cat /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0
range 192.168.1.100 192.168.1.200;
option domain-name-servers 192.168.1.1;
option domain-name "qingchen.cn";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
host k8s01
hardware ethernet 00:0c:29:da:b1:7b;
fixed-address 192.168.1.244;


###host那一段,是属于subnet里面的,固定IP地址可以不在range范围

132操作:
ifdown ens37 & & ifup ens37


    推荐阅读