当前位置: 首页 > news >正文

DHCP Server

简介

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。

使用UDP协议,C/S模式。

dhcp服务器使用 67/UDP,dhcp客户端使用 68/UDP。

分配IP方式

  • 将一个IP地址固定分配给一个客户端
  • 随机地将地址永久性分配给客户端
  • 随机地将地址分配给客户端使用一段时间(常用

地址的有效使用时间段称为租用期,租用期满之前,客户端必须向服务器请求继续租用。服务器接受请求后才能继续使用,否则无条件放弃

二八原则

避免单台DHCP服务器宕机,客户端将无法获取IP地址,通常有多台DHCP服务器;然而DHCP服务器之间没有监督机制,无法保证分配地址没有冲突,可使用两台DHCP服务器。

若主机A侧有200台主机,主机B侧有200台主机,DHCP服务器各自按二八原则划分管控的动态IP范围,DHCP A:10.0.0.1~10.0.0.160和192.168.0.161~192.168.0.200,DHCP B:10.0.0.161~10.0.0.200和192.168.0.1~192.168.0.160;主机A获取10网段IP,若DHCP A宕机,可通过DHCP中继获取DHCP B中的10网段IP;主机B同理

DHCP中继

默认情况下,路由器隔离广播包,不会将收到的广播包从一个子网发送到另一个子网。当DHCP服务器和客户端不在同一个子网时,充当客户端默认网关的路由器将广播包发送到DHCP服务器所在的子网,这一功能就称为DHCP中继(DHCP Relay)

DHCP工作过程

DHCP在工作过程中涉及到的报文种类及其作用如下:

1、DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。

2、DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。

3、DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。

4、DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。

5、DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。

6、DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。

7、DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。

8、DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。

续租

  1. 在使用租期过去50%时刻处, 客户端向服务器发送单播DHCP REQUEST报文续延租期。
  2. 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期过去87.5%时刻处,向服务器发送广播DHCP REQUEST报文续延租期。
  3. 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期到期时,客户端自动放弃使用这个IP地址,并开始新的DHCP过程。

实现

软件包

服务端

dhcp-server(centos8中)、dhcp(centos7及之前)

/usr/sbin/dhcpddhcp服务主程序
/etc/dhcp/dhcpd.confdhcp服务配置文件
/usr/share/doc/dhcp-server/dhcpd.conf.exampledhcp配置文件模板
/usr/lib/systemd/system/dhcpd.servicedhcp服务service文件
/var/lib/dhcpd/dhcpd.leases地址分配记录

客户端

dhcp-client

/usr/sbin/dhclient客户端程序
/var/lib/dhclient自动获取的IP信息

配置文件

查看dhcp配置文件模版

[root@wenzi ~]# vim /usr/share/doc/dhcp-server/dhcpd.conf.example
#指定客户端默认的域,局部或全局
option domain-name "example.org";
#指定客户端默认的DNS,局部或全局
option domain-name-servers ns1.example.org, ns2.example.org;#最小租期时间,单位 秒
default-lease-time 600;
#最长租期时间  单位 秒
max-lease-time 7200;#通过配置syslog.conf定义日志文件存放何处
log-facility local7;#在这个子网上不提供服务,但是声明它可以帮助DHCP服务器理解网络拓扑
subnet 10.152.187.0 netmask 255.255.255.0 {
}#这是一个非常基本的子网声明
subnet 10.254.239.0 netmask 255.255.255.224 {#客户端获取动态IP的范围,可有多个range,但IP范围不能重叠range 10.254.239.10 10.254.239.20;#为客户端指定默认网关option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}#这个声明允许BOOTP(DHCP协议前身)客户端获取动态地址,我们不建议这样做。
subnet 10.254.239.32 netmask 255.255.255.224 {range dynamic-bootp 10.254.239.40 10.254.239.60;option broadcast-address 10.254.239.31;option routers rtr-239-32-1.example.org;
}#针对单独子网配置
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;
}#通过host 任意名 {} 配置
host passacaglia {#单个客户端主机MAC地址hardware ethernet 0:0:c0:5d:bd:95;#获取bootloader启动文件的名称filename "vmunix.passacaglia";#去 toccata.example.com 主机获取 vmunix.passacaglia 文件server-name "toccata.example.com";
}#通过host 任意名 {} 配置单个客户端主机使得IP和MAC地址绑定,固定IP
host fantasia {hardware ethernet 08:00:07:26:c0:a5;#固定客户端主机的IP地址fixed-address fantasia.example.com;
}#您可以声明一类客户端,然后基于此进行地址分配
#下面的示例显示了某个类中的所有客户端,获取10.17.224/24子网上的地址,所有其它客户端获取10.0.29/24 #子网上的地址的情况。
class "foo" {match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}
#告知是否为一些子网络分享相同网络
shared-network 224-29 {subnet 10.17.224.0 netmask 255.255.255.0 {option routers rtr-224.example.org;}subnet 10.0.29.0 netmask 255.255.255.0 {option routers rtr-29.example.org;}pool {allow members of "foo";range 10.17.224.10 10.17.224.250;}pool {deny members of "foo";range 10.0.29.10 10.0.29.230;}
}

具体使用见http://t.csdn.cn/b36rQ

相关文章:

DHCP Server

简介 动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。 使用UDP协…...

DMR+PoC宽窄融合互通解决方案

当前,Tetra、PDT、DMR、P25等专网通信的主流窄带技术,能够保障在紧急情况下可靠的关键语音通信对讲,但随着行业用户对图片、视频、数据等宽带业务的需求越来越强烈,原本单一的语音通信早已无法满足用户对新需求。 北峰BF-SCP810 D…...

Springboot定时执行任务

定时任务 TaskScheduler 任务调度者 TaskExecutor 任务执行者 EnableScheduling//开启定时功能的注释 Scheduled(cron"* * * * * * *")//什么时候执行~ cron表达式(秒 分 时 日 月 星期 ) Cron表达式 主启动类加上注解开启任务调度 package com.qf.sping09te…...

【Apollo】阿波罗自动驾驶:塑造自动驾驶技术的未来

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…...

JavaEE初阶:多线程 - Thread 类的基本用法

上次我们了解了多线程的五种创建方法,今天来学习Thread的基本用法。 目录 run和start Thread常见的构造方法 Thread的几个常见属性 后台线程 是否存活 线程终止 1.使用标志位 2.使用Thread自带的标志 等待线程 run和start 首先需要理解Thread的run和star…...

编写 loading、加密解密 发布NPM依赖包,并实施落地使用

你的 Loading 开箱即可用的 loading, 说明:vue3-loading 是一个方便在 Vue 3 项目中使用的加载指示器组件的 npm 插件。它允许您轻松地在项目中添加加载动画,提升用户体验。 目录 你的 Loading🌍 安装🛹 演示地址&…...

【剑指Offer 57】和为s的连续正数序列,Java解密。

LeetCode 剑指Offer 75道练习题 文章目录 剑指Offer:和为s的连续正数序列示例:限制:解题思路:剑指Offer:和为s的连续正数序列 【题目描述】 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首…...

深度学习实战基础案例——卷积神经网络(CNN)基于SqueezeNet的眼疾识别|第1例

文章目录 前言一、数据准备1.1 数据集介绍1.2 数据集文件结构 二、项目实战2.1 数据标签划分2.2 数据预处理2.3 构建模型2.4 开始训练2.5 结果可视化 三、数据集个体预测 前言 SqueezeNet是一种轻量且高效的CNN模型,它参数比AlexNet少50倍,但模型性能&a…...

麦肯锡发布《2023年度科技报告》!

在经历了 2022 年技术投资和人才的动荡之后,2023 年上半年,人们对技术促进商业和社会进步的潜力重新燃起了热情。生成式人工智能(Generative AI)在这一复兴过程中功不可没,但它只是众多进步中的一个,可以推…...

JAVASE---数组的定义与使用

数组的基本概念 什么是数组 数组是具有相同类型元素的集合,在内存中连续存储。 1. 数组中存放的元素其类型相同 2. 数组的空间是连在一起的 3. 每个空间有自己的编号,起始位置的编号为0,即数组的下标 数组的创建及初始化 数组的创建 T[…...

211、仿真-基于51单片机土壤湿度智能盆栽灌溉报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&am…...

记录TensorRT8.5.0安装

1.下载网址NVIDIA TensorRT 8.x Download | NVIDIA Developer TensorRT不同的版本依赖于不同的cuda版本和cudnn版本。根据自己电脑的cuda版本和cudnn版本来决定要下载哪个TensorRT版本 查看cudnn版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 cat /usr/l…...

flutter ListView 滚动到最后一个items位置

flutter 想要实现一个listview初始化时和数据变化后显示到列表的最末,简单地说就是像聊天窗或者是日志输出那样的情景。 要在Flutter中实现在初始化时和数据变化后将ListView自动定位到最后一个item的位置,你可以使用ScrollController来控制滚动位置&am…...

WMS:SurfaceView绘制显示

WMS:SurfaceView绘制显示 1、SurfaceView控件使用1.1 Choreographer接受VSync信号1.2 自定义SurfaceView1.3 结果 2、SurfaceView获取画布并显示2.1 SurfaceHolder.lockCanvas()2.2 SurfaceHolder.unlockCanvasAndPost(Canvas canvas) 1、SurfaceView控件使用 1.1 Choreograph…...

【Spring系列篇--关于IOC的详解】

目录 面试经典题目: 1. 什么是spring?你对Spring的理解?简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 2.什么是IoC?你对IoC的理解?IoC的重要性?将实例化对象的权利从程序员…...

__ob__: Observer 后缀的数组的取值方式

开发中,经常从接口、父组件中,拿到数组然后给新的数组使用, 但是,有时候会发现带有 __ob__: Observer 后缀的数组,对这种数组来说,你是无法取到这个数组的值的, 而且,离谱的是consol…...

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现…...

Java基础知识点

Java是一种高级计算机语言,是可以编写跨平台应用软件、完全面向对象的程序设计语言。 2、Java划分为三个技术平台:Java SE、Java EE、Java ME Java SE是桌面应用,Java EE是web应用,平台企业版,Java ME是手机应用&#…...

攻防世界-web-fileclude

1. 题目描述 打开链接,可以看到如下代码: 代码意思很简单,让我们传递两个参数,一个file1,一个file2,如果file2的内容为hello ctf,那么就可以在代码中include file1 2. 思路分析 这道题显然是…...

【100天精通python】Day36:GUI界面编程_高级功能操作和示例

专栏导读 专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html 一、GUI 高级功能 1 自定义主题和样式 自定义主题和样式可以让你的GUI应用程序在外观方面更加出色。在使用Tkinter时,你可以使用ttkthemes库来应用不同的主题和样式。…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

Selenium常用函数介绍

目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...