Linux CentOS 8(DHCP的配置与管理)

news2024/12/24 10:21:45


Linux CentOS 8(DHCP的配置与管理)


目录

    • 一、项目介绍
    • 二、DHCP服务简介
    • 三、DHCP工作原理
    • 四、配置DHCP服务
      • 4.1 项目配置准备
      • 4.2 dhcpd配置文件框架与参数说明
      • 4.3 登录客户机验证
      • 4.4 客户端IP地址的释放与重新申请
      • 4.5 保留特定IP地址


一、项目介绍

当计算机中的网络变得多且复杂的时候,逐一为多台计算机去配置IP地址将会变得繁琐不堪。为了更高效地完成这项工作,工程师常会采用动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)来自动为客户端配置IP地址、子网掩码和默认网关等信息。

二、DHCP服务简介

DHCP动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client),并且大部分DHCP协议通信以广播方式进行。DHCP通常被用于局域网环境,主要有两个作用:一是用于内部网或网络服务供应商自动分配IP地址,使客户端动态地获得IP地址、Gateway地址和DNS服务器地址等信息;二是给予用户以内部网管理员身份对所有计算机作集中管理的手段,并提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

三、DHCP工作原理

由于在IP地址动态获取过程中采用广播方式发送报文,因此要求DHCP客户端和服务器位于同一个网段内。如果DHCP客户端和DHCP服务器位于不同的网段,则需要通过DHCP中继来中继转发DHCP报文。

通过DHCP中继完成动态配置的过程中,客户端与服务器的处理方式与不通过DHCP中继时的处理方式基本相同。下面仅以DHCP客户端与DHCP服务器在同一网段的情况为例,说明DHCP协议的工作过程。

客户端为了动态获取并使用一个合法的IP地址,需要经历以下几个阶段,如图1所示:

在这里插入图片描述

图1
  • 发现阶段:即DHCP客户端通过发送DHCP Discover报文来寻找DHCP服务器并的阶段。

  • 提供阶段:即DHCP服务器通过回复DHCP Offer报文来提供IP地址的阶段。

  • 选择阶段:即DHCP客户端通过发送DHCP Request报文来请求某台DHCP服务器提供的IP地址的阶段。

  • 确认阶段:即DHCP服务器通过回复DHCP Ask报文来确认所提供的IP地址的阶段。

详细过程:

1)发现阶段
在发现阶段,DHCP客户端通过发送DHCP Discover报文来寻找DHCP服务器。

由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP Discover报文。广播信息中包含DHCP客户端的MAC地址和计算机名,以便DHCP服务器确定是哪个客户端所发送的请求。所有收到DHCP Discover报文的DHCP服务器都会发送回应报文,而DHCP客户端据此也可以知道网络中存在的DHCP服务器的位置。

该DHCP Discover包的源IP地址为0.0.0.0,目标IP地址为255.255.255.255。

2)提供阶段
在提供阶段,DHCP服务器通过发送DHCP Offer报文来回复DHCP客户端。

网络中接收到DHCP Discover报文的DHCP服务器,会选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址,域名服务器地址等)一同通过DHCP Offer报文发送给DHCP客户端。

DHCP服务器通过地址池保存可供分配的IP地址和其他配置信息。当DHCP服务器接收到DHCP请求报文后,将从IP地址池中取得空闲的IP地址及其他的参数,并对该IP地址做上标记,最后以广播的方式发送回客户端。

该DHCP Offer包的源IP地址为DHCP服务器的IP地址,目标IP地址为255.255.255.255。

3)选择阶段
在选择阶段,DHCP客户端通过发送DHCP Request报文给客户端请求IP地址。

如果有多台DHCP服务器同时向DHCP客户端回应DHCP Offer报文,则DHCP客户端只接受第一个收到的DHCP Offer报文。并以广播方式向这台服务器发送DHCP Request报文。该报文包含了DHCP客户端自己的MAC地址、接收的租约中的IP地址、提供此租约的DHCP服务器地址等,其他DHCP服务器将收回它们为此DHCP客户端所保留的IP地址租约,以给其他DHCP客户端使用。

该DHCP Request包的源IP地址为0.0.0.0,目标IP地址为255.255.255.255。

4)确认阶段
在确认阶段,DHCP服务器通过发送DHCP Ask报文来回应客户端。

收到DHCP客户端发送的DHCP Request请求报文后,DHCP服务器根据DHCP Request报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则发送DHCP Ask报文作为应答,通知DHCP客户端可以使用分配的IP地址。

DHCP客户端收到DHCP服务器返回的DHCP Ask报文确认报文后,会以广播的方式发送ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP-Decline报文给DHCP服务器,通知DHCP服务器该地址不可用,并重新申请IP地址。

如果DHCP服务器收到DHCP Request报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP-Nak报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP-Discover报文来请求新的IP地址。

该DHCP Ask包的源IP地址为DHCP服务器的UP地址,目标IP地址为255.255.255.255。

5)获取IP地址后的处理过程

  • 客户端重新登录时的IP处理

DHCP客户端获得分配的IP地址后,在每次重登网路时,都只需直接发送DHCP Request报文,DHCP服务器会尝试继续将之前分配的IP地址再发送给客户端,并回应DHCP Ask报文。如果DHCP服务器不能再分配之前那个IP地址(如这个IP已分配给其他客户端使用),那么服务器将会回应客户端DHCP Nack报文给予否认。当客户端收到该报文后,它将再次发送DHCP Discover报文重新请求新的IP地址。

而如果客户端改变了所处的网络,在开机时联系不上DHCP客户端,那么即使租约并未到期,客户端也会将所获得的IP地址释放掉。

  • IP地址的续约

DHCP的租约期限一般为8天,客户端一般在租约达到50%时即四天时,会直接向提供租约的DHCP服务器发送DHCP Request报文,请求更新地址租约。如果DHCP服务器应答则获得租约延期。如果DHCP服务器未应答,则在租约达到87.5%时,客户端会再次发送同样的报文请求续约,如果DHCP仍是未应答,则在租约达100%时,客户端发送DHCP Discover报文进行租约申请,如果DHCP始终未应答,那么此时客户端将会放弃当前IP地址,从而获得一个“169”网段的IP地址。

扩展:
a. DHCP服务器在提供阶段为客户端分配IP地址时,服务器首先需要确认所分配的IP没有被网络上的其他设备所使用。DHCP服务器通过发送ICMP Echo Request(ping)报文对分配的IP进行探测。如果在规定的时间内没有应答,那么服务器就会再次发送ping报文。到达规定的次数后,如果仍没有应答,则所分配的IP地址可用。否则将探测的IP地址记录为冲突地址,并重新选择IP地址进行分配。

b. DHCP服务器为客户端分配的IP地址的优先次序如下:
① 与客户端MAC地址或客户端ID静态绑定的IP地址;
②DHCP服务器记录的曾经分配给客户端的IP地址;
③ 客户端发送的DHCP Offer报文中Option 50字段指定的IP地址;
④ 在DHCP地址池中,顺序查找可供分配的IP地址,最先找到的IP地址;
⑤如果未找到可用的IP地址,则依次查询租约过期、曾经发生过冲突的IP地址,如果找到则进行分配,否则将不予处理。

四、配置DHCP服务

4.1 项目配置准备

(1) 部署DHCP服务之前应该先进行IP地址规划,明确哪些IP地址用于哪些客户端,哪些IP地址用于手工指定的主机上。同时,用于手工配置的IP地址,一定要排除掉保留地址,或者采用地址池之外的可用IP地址,否则会造成IP地址冲突。

(2) DHCP服务器主机与客户端能相互连通。

(3) 在原始的Linux上默认没有安装DHCP,先搭好yum仓库源,再运行“yum install dhcp-server” 安装DHCP服务。Linux系统中的DHCP服务的软件名为dhcp,服务名为dhcpd

(4) 安装完成之后,执行“systemctl enable dhcpd” 命令将服务设置为开机自动运行。

[root@localhost ~]# yum install dhcp-server -y
[root@localhost ~]# systemctl enable dhcpd 

(5) 复制样例文件到主配置文件。

[root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

4.2 dhcpd配置文件框架与参数说明

(1)在dhcpd.conf中,每行开头的“#”表示注释,除了注释以外,其他每一行都应以“ ”结尾。

(2)dhcpd.conf配置文件的格式如下:

#全局配置
全局参数/选项;                            #全局生效
#局部配置
声明 {
  配置选项/局部参数;
  配置选项/局部参数;                      #局部生效
  ……
}

全局配置 可以包含参数或选项,该部分对整个DHCP服务器生效。
局部配置 通常由声明部分来表示,该部分仅对局部生效,比如只对某个IP作用域生效。

(3)基础参数介绍:

配置内容,如图2所示:
在这里插入图片描述

图2
参数说明
option domain-name-servers 192.168.1.1定义DNS服务器IP地址
subnet 192.168.10.0 netmask 255.255.255.0定义客户端的子网掩码
range 192.168.10.11 192.168.10.30定义用于分配的IP地址池
option routers 192.168.10.254定义客户端的网关地址
default-lease-time 600默认超过时间,单位是秒
max-lease-time 7200最大超时时间,单位是秒
host client(主机名)主机名可由自己随意命名
hardware ethernet xxx指定网卡接口的类型与MAC地址
fixed-address 192.168.10.16将某个固定的IP地址分配给指定主机

(4)最后重启dhcpd服务。

[root@localhost network-scripts]# systemctl restart dhcpd           #重启dhcpd服务

4.3 登录客户机验证

(1)由于虚拟机 VMWare 本身默认开启了 DHCP 服务,如果不将它关闭,客户端可能会获取到其他地址池的IP地址。所以我们需要将 VMnet1 和 VMnet8 的 DHCP 服务关闭。

打开 VMWare 虚拟机功能选项卡中的【编辑】,打开【虚拟网络编辑器】,然后在弹出的界面中分别给 VMnet1 和 VMnet8 取消勾选【使用本地 DHCP 服务将 IP 地址分配给虚拟机】,如图3所示:
在这里插入图片描述

图3

(2)本次实验使用的客户机为Windows7。对应地,打开【网络共享中心】,在网卡的属性配置中,给IPv4的网络勾选【自动获得IP地址】,如图4所示:
在这里插入图片描述

图4

(3)等待IP地址获取结束后,打开系统的【命令提示符】,输入“ipconfig /all ‘查看IP地址等信息,如图5所示:
在这里插入图片描述

图5

(4)可以看见该客户机的IP地址是由 DHCP 服务自动获取的,并且属于原先配置的IP地址池范围内。

4.4 客户端IP地址的释放与重新申请

(1)在【命令提示符】中输入ipconfig /release释放已获得的IP地址,再输入ipconfig /renew 进行重新申请IP地址。

\Users\client > ipconfig /release                 #释放已获得的IP地址
\Users\client > ipconfig /renew                  #重新申请IP地址

(2)IP地址的分别变化,如图6、图7所示:
在这里插入图片描述

图6

在这里插入图片描述

图7

4.5 保留特定IP地址

(1)保留IP地址是通过将客户端的MAC地址与需要保留的IP地址进行绑定而实现的。整个配置需要用到host声明和hardwarefixed-address参数。

host声明和hardwarefixed-address参数在上文【基础参数介绍】已有说明。指定网卡的MAC地址需要在对应客户端上查询,在【命令提示符】中输入“ipconfig /all“ 后可获知主机的MAC地址。

(2)在dhcpd.conf配置文件中添加以下配置信息,如图8所示:
在这里插入图片描述

图8
[root@localhost network-scripts]# systemctl restart dhcpd           #重启dhcpd服务

(3)在客户端上验证
在客户端上的【命令提示符】中输入,如图9所示:

\Users\client > ipconfig /release                 #释放已获得的IP地址
\Users\client > ipconfig /renew                  #重新申请IP地址

在这里插入图片描述

图9

(4)可以看见该客户机的IP地址是由DHCP服务自动获取的,并且是DHCP服务器配置里所指定的保留IP地址。


制作成员: 裕新
排版: 裕新
初审: 杨佳佳
复审: 二月二

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1222680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】容器string的构造函数和迭代器

目录 1 什么是string 2 迭代器 2.1 迭代器的使用 2.2 auto关键字以及代码可读性 3 构造函数 1 什么是string 上图是C官网对于string的解释:string是表示字符序列的对象。 string本质是一个类,位于std的命名空间下,使用前需要包含头文件…

基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码

基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于乌燕鸥算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于乌燕鸥优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

安全知识普及:什么是垃圾邮件和网络钓鱼欺诈

文章目录 什么是垃圾邮件?如何保护您自己免遭垃圾电子邮件和网络钓鱼侵害区分私人和公用电子邮件私人电子邮件公共电子邮件 使用反垃圾邮件过滤器推荐阅读 什么是垃圾邮件? 您的邮箱里经常会出现一些莫名其妙的邮件,而这就是电子形式的垃圾邮…

【STM32】CRC(循环冗余校验)

一、CRC的背景知识 1、什么是CRC (1)CRC(Cyclic Redundancy Check),循环冗余校验 (2)什么是校验,为什么需要校验:数据传输,数据存储过程中需要使用到的 (3)什么是冗余:表示比实际上要传输的数据…

【Unity小技巧】图片使用的一些常见问题

文章目录 前言Button不规则按钮点击空白区域不响应点击事件1. 设置资源参数2. 代码设置按钮Image的alphaHitTestMinimumThreshold3. 解释:4. 效果 Unity Image 原图比例控制方法一 Preserve Aspect1. 设置勾选Preserve Aspect(保持长宽比)&am…

docker删除镜像命令

在Docker中删除镜像的命令是 docker rmi。这个命令用于删除一个或多个Docker镜像。使用这个命令时,你需要指定要删除的镜像的ID或名称。以下是一些常用的用法: 删除单个镜像: docker rmi [IMAGE_ID或REPOSITORY:TAG]例如,如果你知…

【OpenAI开发者大会,全新大模型它来了,价格大跌...】

继今年春天发布 GPT-4 之后,OpenAI 又创造了一个不眠夜。 过去一年,ChatGPT 绝对是整个科技领域最热的词汇。 北京时间 11 月 7 日凌晨 02:00,OpenAI 的首次 DevDay 开发者日活动正式开始。Keynote 主论坛环节由 Sam Altman 主讲并在油管现…

Reflect的作用,target,property,value,receiver代表啥

1.真的proxy let target {name:张三} let handler {get(target,property,receiver){console.log(1,target,2,property,3,receiver)return Reflect.get(target,property,receiver)},set(target,property,value,receiver){console.log(a,target,b,property,c,value,d,receiver)…

vue3安装vue-router

环境 node 18.14.2 yarn 1.22.19 windows 11 vite快速创建vue项目 参考 安装vue-touter 官网 yarn add vue-router4src下新建router文件夹,该文件夹下新建index.ts // router/index.ts 文件 import { createRouter, createWebHashHistory, RouterOptions, Ro…

【139.单词拆分】

目录 一、题目解析二、算法原理三、代码实现 一、题目解析 二、算法原理 三、代码实现 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {int n s.size();unordered_set<string> hash;for (auto x : wordDict) hash.insert(x);…

动态sql行转列

动态sql行转列 介绍案例转之前转之后 注意 介绍 本篇介绍 根据 时间格式化后行转列的案例讲解动态sql案例的初学 案例 --设置一个动态变量 赋予初始值 SET sql NULL;--获取规范化后需要用到的行头列表 SELECT GROUP_CONCAT(CONCAT(--注意1MAX(IF(date ", date, "…

Eclipse使用配置tomcat服务:Server配置

目标&#xff1a; 在Eclipse中&#xff0c;默认会把Web项目放到Eclipse的工作空间下 的.metadata\.plugins\org.eclipse.wst.server.core\tmp0(或者是tmp1)\wtpwebapps\下 &#xff0c;如果现在Eclipse中有名为imsmanagere的项目&#xff0c;将它按以前的方式部署到服务器上&am…

揭示CDN加速的局限性与探讨其小众化原因

在网络加速领域&#xff0c;CDN&#xff08;内容分发网络&#xff09;被认为是提升性能的关键技术之一。然而&#xff0c;尽管其在某些方面表现出色&#xff0c;CDN在广泛应用中仍然相对小众。本文将从CDN加速的局限性出发&#xff0c;深入探讨为何这项技术尚未迎来大规模的应用…

【网络安全】伪装IP网络攻击的识别方法

随着互联网的普及和数字化进程的加速&#xff0c;网络攻击事件屡见不鲜。其中&#xff0c;伪装IP的网络攻击是一种较为常见的攻击方式。为了保护网络安全&#xff0c;我们需要了解如何识别和防范这种攻击。 一、伪装IP网络攻击的概念 伪装IP网络攻击是指攻击者通过篡改、伪造I…

天猫精灵/小爱同学+巴法云+Openwrt控制局电脑/群晖开关机

天猫精灵/小爱同学巴法云Openwrt控制局电脑/群晖开关机 事情的起因实战环境开始发车1.天猫精灵/小爱同学 连接 八法云 2.openwrt3.docker环节注意:sshpass 要先使用 ssh命令登陆一下你要唤醒或者远程关机的设备,不然可能因为一个登陆提示你是否登陆的yes/no导致程序没有反应,然…

DeepMind发布新模型Mirasol3B:更高效处理音频、视频数据

Google DeepMind日前悄然宣布了其人工智能研究的重大进展&#xff0c;推出了一款名为“Mirasol3B”的新型自回归模型&#xff0c;旨在提升对长视频输入的理解能力。该新模型展示了一种颠覆性的多模态学习方法&#xff0c;以更综合和高效的方式处理音频、视频和文本数据。 Googl…

Mysql数据备份 —xtrabackup

一 备份介绍 ### 优点&#xff1a; 1. **在线备份&#xff1a;** XtraBackup 支持在线备份&#xff0c;这意味着你可以在 MySQL 服务器运行的同时进行备份&#xff0c;而无需停止数据库服务。这对于生产环境中的数据库是非常关键的&#xff0c;因为可以最小化停机时间。 2. **…

算法:记忆化搜索

文章目录 记忆化搜索斐波那契数列 例题不同路径最长递增子序列猜数字大小矩阵中的最长递增路径 记忆化搜索的原理其实很简单&#xff0c;简单来说就是对暴力搜索的一些优化&#xff0c;因此整体上来讲难度不高 记忆化搜索 所谓记忆化搜索&#xff0c;直白来说就是一个带有备忘…

MATLAB中plotmatrix函数用法

目录 语法 说明 示例 使用两个矩阵输入创建散点图矩阵 使用一个矩阵输入创建散点图矩阵 指定标记类型和颜色 创建并修改散点图矩阵 plotmatrix函数的功能是创建散点图矩阵。 语法 plotmatrix(X,Y) plotmatrix(X) plotmatrix(___,LineSpec) plotmatrix(ax,___) [S,AX,B…

一次显著的接口性能优化,从10s优化到0.9s

最近在登录项目后台的时候&#xff0c;发现当我输入账号和密码后&#xff0c;竟然就卡在了 Loading 页面。。 加载了10S才进后台 等了足足 10S 才进去后台&#xff01; 通过 F12&#xff0c;打开 Network 网络请求一看&#xff0c;竟然是因为有两个接口返回的数据太慢了&#…