02 DHCP原理与配置

目录

2.1 DHCP工作原理

        1. 了解DHCP服务

        2. 使用DHCP的好处

        3. DHCP的分配方式

        4. DHCP的租约过程

                1. 客户机请求IP地址

                2. 服务器响应

                3. 客户机选择IP地址

                4. 服务器确定租约

                5. 重新登录

                6. 更新租约

2.2 使用DHCP动态配置主机地址

        2.2.1 配置DHCP服务器

                1. 安装DHCP服务器软件

                2. 建立主配置文件dhcpd.conf

                        1. /etc/dhcp/dhcpd.conf文件的配置构成

                        2. dhcpd服务的全局配置

                        3. subnet网段声明

                        4.host主机声明(可选)

                3. 启动dhcpd服务

        2.2.2 使用DHCP客户端

2.3 DHCP中继

        1. DHCP中继原理

        2. DHCP中继配置


2.1 DHCP工作原理

        当局域网络中有大量的主机时,如果逐个为每一台主机手动设置IP地址、默认网关、DNS服务器地址等网络参数,显然是一个费力也未必讨好的办法。而 DHCP(Dynamic HostConfiguration Protocol,动态主机配置协议)服务器的应用,正好可以解决这一问题。

        1. 了解DHCP服务

        DHCP (Dynamic Host Configuration Protocol,动态主机配置协议〉是由Internet 工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。DHCP服务避免了因手动设置IP地址所产生的错误,同时也避免了把一个P地址分配给多台工作站所造成的地址冲突。DHCP提供了安全、可靠且简单的TCPIP网络设置,降低了配置IP地址的负担。DHCP的网络结构如图2.1所示。

        2. 使用DHCP的好处

        Internet是目前世界上用户最多的服务之一,有几十亿人在使用Internet。由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的IP地址,不仅造成了IP地址的浪费,也会为ISP服务商带来高额的维护成本。而使用DHCP服务则有以下好处。

  1. 减少管理员的工作量。
  2. 避免输入错误的可能。
  3. 避免IP地址冲突。
  4. 当网络更改IP地址段时,不需要再重新配置每个用户的IP地址。
  5. 提高了IP地址的利用率。
  6. 方便客户端的配置。

        3. DHCP的分配方式

        DHCP的典型应用模式如下:在网络中架设一台专用的DHCP服务器,负责集中分配各种网络地址参数(主要包括IP地址、子网掩码、广播地址、默认网关地址、DNS服务器地址)﹔其他主机作为DHCP客户机,将网卡配置为自动获取地址,即可与DHCP服务器进行通信,完成自动配置过程。

        在DHCP的工作原理中,DHCP服务器提供了三种IP地址分配方式:自动分配(Automatic Allocation)、手动分配和动态分配(Dynamic Allocation)。

  1. 自动分配是当DHCP客户机第一次成功地从DHCP服务器获取到一个IP地址后,就永久地使用这个IP地址。
  2. 手动分配是由DHCP服务器管理员专门指定IP地址。
  3. 动态分配是当DHCP客户机第一次从DHCP服务器获取到IP地址后,并非永久地使用该地址,而是在每次使用完后,DHCP客户机就会释放这个IP地址,供其他客户机使用。

        4. DHCP的租约过程

        客户端从DHCP服务器获取IP地址的过程称之为DHCP租约过程,此过程主要分为以下四个步骤。

  1. 客户端在网络中搜索服务器;
  2. 服务器向客户端响应服务;
  3. 客户端向服务器发出服务请求;
  4. 服务器向客户端提供服务。

        其中包含的具体过程如下所示:

                1. 客户机请求IP地址

        当一个 DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址。此时DHCP客户机以广播方式发送DHCP Discover '发现信息来寻找DHCP服务器,如图2.2所示。

                2. 服务器响应

        当DHCP服务器接收到来自客户机请求P地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机。如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则DHCP Offer消息。如图2.3所示。        

                3. 客户机选择IP地址

·        DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出P地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机。之后DHCP客户机会向服务器发送DHCP Request消息。如图2.4所示。

                4. 服务器确定租约

        DHCP服务器接收到DHCP Request消息后,以DHCPACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息。当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。如图2.5所示。

                5. 重新登录

        DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。

                6. 更新租约

        当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约。

2.2 使用DHCP动态配置主机地址

        使用DHCP服务可以为大量客户机自动分配地址并提供集中管理,能够减轻管理和维护成本、提高网络配置效率。其中 DHCP服务可分配的地址信息主要包括:

  1. 网卡的IP地址、子网掩码;
  2. 对应的网络地址、广播地址;
  3. 默认网关地址;
  4. DNS服务器地址;
  5. ……

        2.2.1 配置DHCP服务器

                1. 安装DHCP服务器软件

        先执行"rpm -q dhcp"命令查看系统中是否已经安装dhcp软件包,如果没有安装,则只要挂载CentOS系统光盘,安装其中的dhcp-4.2.5-47.el7.centos.x86_64.rpm软件包即可,

        安装dhcp软件包后系统将会自动复制相关程序,并添加名为dhcpd的系统服务。

                2. 建立主配置文件dhcpd.conf

        dhcpd服务的主配置文件是letcldhcpldhcpd.conf,但是该文件中默认不包含任何有效配置,需要管理员手动建立。这时管理员可以根据文件中的提示,参考配置文件范本建立新的dhcpd.conf文件。

                        1. /etc/dhcp/dhcpd.conf文件的配置构成

        在主配置文件 dhcpd.conf 中,可以使用声明、参数、选项这三种类型的配置,各自的作用和表现形式如下所述。

  1. 声明:用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围。较常见的声明是subnet、host,其中 subnet声明用来约束一个网段,host声明用来纳巿一台特定的主机。
  2. 参数:由配置关键字和对应的值组成,总是以":"(分号)结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。
  3. 选项:由"option”引导,后面跟具体的配置关键字和对应的值,也是以"“;"结束,用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS服务器地址等)。
                        2. dhcpd服务的全局配置

        为了使配置文件的结构更加清晰,全局配置通常会放在配置文件 dhcpd.conf的开头部分,可以是配置参数,也可以是配置选项。常用的全局配置参数和选项如下所述。

  1. ddns-update-style,动态DNS更新模式。用来设置与 DHCP服务相关联的DNS数据动态更新模式。在实际的DHCP应用中很少用到该参数,将值设为"none"即可。
  2. default-lease-time,默认租约时间。单位为秒,表示客户端可以从 DHCP服务器租用某个IP地址的默认时间。
  3. max-lease-time,最大租约时间。单位为秒,表示允许 DHCP客户端请求的最大租约时间,当客户端未请求明确的租约时间时,服务器将采用默认租约时间。
  4. option domain-name,默认搜索区域。为客户机指定解析主机名时的默认搜索域,该配置选项将体现在客户机的letc/resolv.conf 配置文件中,如“search benet.com”。
  5. option domain-name-servers,DNS服务器地址。为客户机指定解析域名时使用的DNS服务器地址,该配置选项同样将体现在客户机的letc/resolv.conf配置文件中(如“nameserver 202.106.0.20")。需设置多个DNS服务器地址时,以逗号进行分隔。

        例如,若需要为局域网搭建一台DHCP服务器,所有网段使用相同的租约时间,默认搜索域为bdqn.com,DNS服务器地址为202.106.0.20和202.106.148.1,则可以修改dhcpd.conf 配置文件,参考以下操作调整全局配置。

                        3. subnet网段声明

        一台DHCP服务器可以为多个网段提供服务,因此 subnet网段声明必须有而且可以有多个。例如,若要DHCP服务器为192.168.4.0/24网段提供服务,用于自动分配的IP地址范围为192.168.4.128~192.168.4.254,为客户机指定默认网关地址为192.168.4.1,则可以修改dhcpd.conf配置文件,参考以下内容调整subnet网段声明。

                        4.host主机声明(可选)

        host声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的IP地址(保留地址),这些主机的共同特点是要求每次获取的IP地址相同,以确保服务的稳定性。

        host声明通过host关键字指定需要使用保留地址的客户机名称,并使用""hardwareethernet"参数指定该主机的MAC地址,使用"fixed-address"参数指定保留给该主机的IP地址。例如,若要为打印机 prtsvr (MAC地址为00:c0:c3:22:46:81)分配固定的I旧地址192.168.4.100,可以修改dhcpd.conf 配置文件,参考以下内容在网段声明内添加 host主机声明。

                3. 启动dhcpd服务

        在启动dhcpd服务之前,应确认提供 DHCP服务器的网络接口具有静态指定的固定IP地址,并且至少有一个网络接口的IP地址与DHCP服务器中的一个subnet网段相对应,否则将无法正常启动dhcpd服务。例如,DHCP服务器的I地址为192.168.4.11,用于为网段192.168.4.0/24内的其他客户机提供自动分配地址服务。

        安装dhcp软件包以后,对应的系统服务脚本位于/usr/lib/systemd/system/dhcpd.service,可以使用systemd服务进行控制。

        例如:执行以下操作可以启动dhcpd服务,并检查UDP的67端口是否在监听,以确认DHCP服务器是否正常。

        需要关闭、重启 dhcpd服务时,只要将上述操作命令中的"start"改为"stop"或"restart"即可。如果 dhcpd服务启动失败,可以检查日志文件/varllog/messages末尾的错误提示信息,并根据提示进行排错。

        2.2.2 使用DHCP客户端

        当局域网内有可用的DHCP服务器时,在 Linux'客户机中可以设置使用DHCP的方式获取地址。只需要编辑对应网卡的配置文件,修改或添加"BOOTPROTO=dhcp"配置行,并重新加载配置文件或者重新启动network服务即可。例如,执行以下操作可修改网卡配置文件,并重新加载配置以通过DHCP方式自动获取地址。

        在Linux'客户机中,还可以使用dhclient工具来测试DHCP服务器。若直接执行“dhclient"命令,则 dhclient将尝试为除回环接口lo以外的所有网络接口通过DHCP方式申请新的地址,然后自动转入后台继续运行。当然,测试时可以指定一个具体的网络接口,并结合"-d"选项使其在前台运行,测试完毕后按Ctrl+C组合键终止。例如,执行"dhclient -d ens33"命令后,可以为网卡 ens33自动获取新的IP地址,并显示获取过程。

        在服务器端可以通过查看租约文件lvar/libldhcpd/dhcpd.leases来了解服务器的IP地址分配情况,具体操作如下。该租约文件中记录了分配出去的每个IP地址信息(租约记录),包括IP地址、客户端的MAC地址、租用的起始时间和结束时间等。

       客户端需要通过dhclient命令释放获取的IP租约时,可以结合"-r”选项。例如,执行以下的"dhclient -r ens33"将会释放之前为网卡 ens33获取的IP租约。此时再通过执行"ifconfigens33"命令就看不到分配的IP地址了。

2.3 DHCP中继

        1. DHCP中继原理

        当企业内部网络规模比较大时,通常通过VLAN将网络规划为多个不同的子网。但是在该情况下一台DHCP服务器无法为不同网段的客户机同时提供服务,因为DHCP协议使用广播,而VLAN能隔离广播。

        例如:DHCP服务器在VLAN 100中,就只有VLAN 100内的客户机能从DHCP服务器那里获取IP地址。如果VLAN 2或VLAN 3的客户机就无法通过这台DHCP服务器来获取IP地址。

        针对以上问题,一般有两种解决方案:

  1. 为每个网段安装一台DHCP服务器,但这种方式的弊端是:资源浪费与不利于管理;
  2. 在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器获取IP地址,如图2.6所示。

        2. DHCP中继配置

        DHCP中继的配置命令:ip helper-address DHCPsrv-lPAddress。其中﹐DHCPsrv-IPAddress为DHCP服务器的IP地址。

        在三层交换机上配置DHCP中继转发:首先需要保证交换机上各VLAN 之间网络通信正常,然后依次在不包含DHCP服务器的VLAN上进行DHCP中继配置。例如执行以下命令可以在 VLAN2中进行DHCP中继转发配置。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ADS加不上路由的若干可能性与问题查找方法

文章目录 一.查询本机ip地址二. PIN ip地址 一.查询本机ip地址 用鼠标点击开始——运行(或者快捷键winR)、弹出【运行】对话框、在窗口中输入cmd,如下图所示: 输入ipconfig/all查找局域网当中的本机ip地址 在浏览器中打开百度…

Android Studio gradle下载失败

Android Studio下载Gradle插件总是出现网络超时问题。 解决办法: 替换为国内版本的镜像。 推荐使用国内腾讯的镜像: Index of /gradle/ 例如:gradle-8.0镜像: https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip…

文案策划日常大公开:掌握这些技巧,让你工作效率翻倍

本周的工作和生活安排得满满当当,但这些看似繁重的任务,其实都是我利用碎片化时间高效完成的。 这里和大家分享一下,我是如何在这忙碌的一周中,既完成本职工作又享受生活的。 本周工作日常汇总: 1. 品牌小红薯笔记&…

观察 jvm 运行时数据区内存大小(native memory tracking)

jvm 运行时数据区 jvm 运行时数据区包括且不限于以下几个部分: 堆(heap): 用于存储对象实例和数组。堆内存的分配和释放由垃圾回收器进行管理。方法区(method area): 用于存储类的信息、静态变量、常量等。jdk 8 后方法区位于 metaspace。虚拟机栈(vm stack): 用于存储方法的…

石化加工vr中毒窒息事故培训系统开发降低了培训成本和风险。

化工行业是工伤预防工作的重点领域之一,工伤预防及安全生产整治工作任务艰巨、责任重大。为进一步强化红线意识、底线思维,深圳VR公司研发的化工VR事故警示教育系统,以其独特的沉浸式体验,为员工的安全教育开辟了新的道路。目前化…

【SWH】陆地生态系统蒸散模拟理论、蒸散估算、站点及区域尺度模拟

蒸散(又称蒸散发)估算是开展水资源管理、洪水预报、海绵城市成效评估、农业节水灌溉、水源涵养评估、生态需水评估等应用实践过程的关键环节,因此准确计算和模拟地表蒸散显得尤为重要。与此同时,蒸散也是陆地表层最重要的水循环过…

如何使用ai人工智能作诗?7个软件帮你快速作诗

如何使用ai人工智能作诗?7个软件帮你快速作诗 使用AI人工智能作诗是一种创新的写作方式,以下是一些可以帮助您快速作诗的AI人工智能软件: 1.AI创作云: 这是一个AI诗歌助手应用程序,可以根据您提供的主题或关键词生成…

Qt:QDialogButtonBox的使用

QDialogButtonBox是Qt自带的按钮箱,通过枚举QDialogButtonBox::ButtonRole可以添加Qt定义按钮,或者通过方法QDialogButtonBox::addButton添加自定义的按钮。 // 自定义按钮。 button_box_ new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonB…

冰蝎4.1webshell实验

1、基础环境 生成payload 2、default_xor_base64 HTTP 命令执行 chunked数据回包,48 3、default_xor_base64 HTTPS 命令执行 终端 文件管理 4、 default_aes https 虚拟终端 5、 default_aes http 虚拟终端

C#中的Web抓取:避免被阻挡

C# 是一种广泛应用于企业级项目和应用程序的多功能编程语言。它源自 C 系列语言,具有高效和强大的特点,使其成为任何开发人员工具包中不可或缺的一部分。 由于其广泛的应用,C# 提供了大量的工具,使开发人员能够解决复杂的解决方案…

MyBatis之工作原理,简单CRUD,一篇让你明白原理

一、MyBatis之工作原理 MyBatis是一个半自动映射框架。所谓半自动,是相对Hibernate全表映射而言的,MyBatis需要手动匹配提供POJO、SQL和映射关系。 我们知道,jdbc有四个核心对象 (1)DriverManager,用于注…

OpenCV多版本安装Ubuntu18.04

文章目录 一、查看已安装的Opencv版本二、安装新版本三、多版本OpenCV切换 OpenCV 官网 在此 一、查看已安装的Opencv版本 查看已安装opencv的版本 pkg-config opencv --modversion官网下载对应的版本,并解压 opencv3.4.3 二、安装新版本 进入前置准备里下载…

架构设计-跨域问题的根源及解决方式

前面文章《架构设计-web项目中跨域问题涉及到的后端和前端配置》中说明了处理跨域问题的一种方式,本文详细说明下产生跨域问题的原因及处理方式。 一、产生跨域问题的原因: 浏览器的同源策略:这是跨域问题的根本原因。同源策略是浏览器对Jav…

计算机网络(1) OSI七层模型与TCP/IP四层模型

一.OSI七层模型 OSI 七层模型是国际标准化组织ISO提出的一个网络分层模型,它的目的是使各种不同的计算机和网络在世界范围内按照相同的标准框架实现互联。OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、…

力扣hot100:394. 字符串解码(递归/括号匹配,字符串之间相对顺序)

LeetCode:394. 字符串解码 本题容易想到用递归处理,在写递归时主要是需要明确自己的递归函数的定义。 不过我们也可以利用括号匹配的方式使用栈进行处理。 1、递归 定义递归函数string GetString(string & s,int & i); 表示处理处理整个numbe…

SQL进阶day12——空值处理

1 统计有未完成状态的试卷的未完成数和未完成率 (复习if的用法) 我的思路: select exam_idm count(if submit_time is NULL then 1 else 0 end) incomplete_cnt, count(if submit_time is NULL then 1 else 0 end)/count(submit_time) comp…

政务云参考技术架构

行业优势 总体架构 政务云平台技术框架图,由机房环境、基础设施层、支撑软件层及业务应用层组成,在运维、安全和运营体系的保障下,为政务云使用单位提供统一服务支撑。 功能架构 标准双区隔离 参照国家电子政务规范,打造符合标准的…

【C++课程学习】:Data类的实现

🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🍩1.头文件 🍩2.实现文件: 🍩3.分析: &…

力扣40. 组合总和 II

Problem: 40. 组合总和 II 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.创建一个 res 变量存储所有满足条件的组合结果,使用 track 变量记录当前的组合路径,使用 trackSum 变量记录当前路径中元素的和。 2.排序: 对 candidates 数组进…

第7章 用户输入和 while 循环

第7章 用户输入和 while 循环 7.1 函数 input()的工作原理7.1.1 编写清晰的程序7.1.2 使用 int()来获取数值输入7.1.3 求模运算符 7.2 while 循环简介7.2.1 使用 while 循环7.2.2 让用户选择何时退出7.2.3 使用标志7.2.4 使用 break 退出循环7.2.5 在循环中使用 continue7.2.6 …