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

dhcpd服务器的配置与管理(超详细!!!)

前提条件:

(1)虚拟机能够联网(如果nat模式不能联网的看另一期)

CentOS7 NAT模式不能联网-CSDN博客

(2)系统是Centos8,因为下载的dhcp-server软件包版本和Centos7不匹配,如果你能成功下载 dhcp-server就行

阿里云镜像: https://mirrors.aliyun.com/centos/

这个版本是最完整版的,具体想要什么版本根据自己的需求

一、了解DHCP

        在企业网络中,一般会涉及主机等终端设备进行资源互访的情况,因此每个终端都需要配置IP地址等网络参数才能接入网络。在小型网络中,终端数量很少,可以手动配置IP地址,但是在中大型网络中,终端数量很多,手动配置 IP 地址工作量大,而且配置时容易导致IP地址冲突等错误,DHCP 可以为网络终端动态分配 IP 地址,解决了手工配置IP地址时的各种问题。

        DHCP (Dynamic Host Configuration Protocol,动态主机配置协议)是一种简化主机ip地址分配管理的TCP/IP标准协议,是通过服务器集中管理网络上使用的IP地址及其相关配置信息,以减少管理 IP 地址配置的复杂性。Linux 提供了DHCP服务,它允许服务器履行DHCP的职责,并且通过网络自动配置启用了 DHCP功能的客户端。

        在使用DHCP时,网络中至少有一台拥有DHCP服务的Server/PC,客户端需要设置成自动获得IP地址。客户端在向服务器请求一个IP地址时,如果DHCP 服务器的IP地址数据中能提供IP,则登记IP信息并分配这个地址给客户端使用,顺带相关的配置选项。

二、DHCP工作过程

        当DHCP客户端第一次启动时,它通过一系列的步骤获得 TCP/IP 配置信息和 IP 地址的租期。租期是指 DHCP 客户端从 DHCP 服务器获得完整的 TCP/IP配置后对该TCP/IP配置的保留使用时间。客户端从服务器上获得完整的TCP/IP配置要经过4个过程。

        (1)发现阶段:由于客户端并不知道DHCP服务器的地址,因此会用0.0.0.0作为源地址,255.255.255.255作为目标地址,向网络上广播一个 DHCP Discover 消息报文,报文中包含了客户端的 MAC地址和NetBIOS名字。与客户端在同一物理网段上的每一台安装了TCP/IP协议的计算机都会收到该广播报文,但只有DHCP服务器才会做出响应。

        (2)提供阶段:网络中的DHCP服务器收到来自客户端的DHCP Discover报文后,会从IP地址池中挑选一个尚未出租的 IP 地址预分配给 DHCP客户端,并且在网络上广播一个DHCP Offer 响应报文,该报文包含了客户端的MAC地址、服务器所提供的IP地址、子网掩码、租用期限,以及DHCP 服务器本身的 IP 地址。若网络中有多台DHCP服务器,则这些DHCP 服务器都会广播各自的DHCP Offer报文。

        (3)请求阶段:如果客户端收到网络上多台DHCP服务器的响应报文,则DHCP客户端只接收第一个收到的 DHCP Offer 提供的信息,并向网络发送一个DHCP Request广播报文,以此告诉所有 DHCP 服务器它将选择哪一台 DHCP服务器提供的IP地址。

        (4)确认阶段:当DHCP 服务器收到DHCP 客户端回答的 DHCP Request广播报文之后,查看报文中服务方的IP地址,确认自己是否被选为服务方。若未选中则撤销预分配的IP地址等信息,若被选择则发送一个 DHCP ACK报文,该报文包括一个租用期限和客户所请求的其他配置信息。客户端收到 DHCP ACK报文后,配置它的TCP/IP属性并加入网络中。

       注:客户端发送DHCP Discover后,如果没有 DHCP 服务器响应客户端的请求,客户端会随机使用169.254.0.0/16 网段中的一个 IP 地址临时配置本机地址。此后,每隔5分钟发送一个DHCP Discover消息报文,尝试与DHCP服务器进行通信,若联系成功则使用由 DHCP 服务器提供的 IP 地址来更新自己的配置。

三、安装与启动DHCP服务

        例题:公司有台 Linux服务器采用静态IP地址配置,现要对同网段的IT部进行IP地址分配,请按以下需求进行DHCP服务器搭配,保障IT部所有PC都可以正常获得正确的网络IP信息。
        网段为192.168.159.135/24,DHCP 服务器,网关为192.168.159.1,分配的地址段为192.168. 159.50~192.168.159.60,租约时间默认;Centos8(克隆) PC1模拟自动获取

配置步骤如下:
按需求进行环境准备和信息采集,如表所示。

主机操作系统IP地址MAC地址
ServerCentos8192.168.159.13500:0c:29:c0:7f:2f
PC1Centos8(克隆)自动获取00:0c:29:a3:8e:a5
(1)先克隆一个Centos系统 

注意 将克隆的Centos的虚拟网络编辑器中的“使用本地DHCP服务将IP地址分配给虚拟机”这个选项关闭!!!

(2)开启Server虚拟机 ,首先更新yum源
cd /etc/yum.repos.d

备份原来的源

mkdir bak

 开始更新yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

建立新的元数据缓存 

yum makecache

 

(3) 安装DHCP服务
yum install dhcp-server

  (4)配置dhcp主配置文件
vi /etc/dhcp/dhcpd.conf

subnet 192.168.159.0 netmask 255.255.255.0{

range dynamic-bootp 192.168.159.50 192.168.159.60;

option routers 192.168.159.1;

}

子网ip和掩码都可以查看 

 (5) 检查配置

dhcpd -t

(6)Server 设置静态ip地址 
cd /etc/sysconfig/network-scripts/

 vi ifcfg-ens33 

修改内容有:

BOOTPROTO=static  //改为静态的

ONBOOT=yes            //开机时自动启动
IPADDR=192.168.159.135  //IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.159.1 //网关

 

 重载配置信息 

systemctl restart NetworkManager.service 

重启网络服务 

nmcli connection up ens33
(7)使用ifconfig查看 DHCP Server的ip

 (8)重启dhcpd服务
systemctl restart dhcpd
(9) 开启客户端虚拟机,在PC1客户端(克隆的Centos系统)配置网络配置文件
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33

BOOTPROTO改为dhcpONBOOT改为yes 

 

BOOTPROTO:指定引导协议。no表示不使用引导协议(如DHCP或BOOTP)来获取IP地址。

ONBOOT:指定是否在系统启动时自动启动网络接口。no表示在系统启动时不会自动启动这个接口。

修改后要重启network

systemctl restart network
(10)在PC1客户端设置动态获取IP地址 
nmcli connection modify ens33 ipv4.method auto
nmcli connection up ens33

使用 ifconfig 查看PC1客户端(克隆的Centos系统)的ip

结果已经成功分配ip地址

如果你有多个克隆的虚拟机自动获取ip那么结果如下:

相关文章:

dhcpd服务器的配置与管理(超详细!!!)

前提条件: (1)虚拟机能够联网(如果nat模式不能联网的看另一期) CentOS7 NAT模式不能联网-CSDN博客 (2)系统是Centos8,因为下载的dhcp-server软件包版本和Centos7不匹配,如果你能成…...

Qml之基本控件

一.Qml常用控件 1.Text(显示普通文本和富文本) 1.1显示普通文本: Window { visible: true width: 320 height: 240 title: qsTr("Hello World") Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color:…...

【Java从入门到放弃 之 Stream API】

Java Stream API Stream API行为参数化传递代码Lambda表达式Lambda 表达式的语法方法引用 Lambda 表达式的实际应用集合操作并发编程 Lambda 表达式的注意事项总结 Stream API Java8提供了一个全新的API - Stream。引入这个Stream的主要目的,一个是可以支持更好的并…...

Ruby On Rails 笔记1——Rails 入门

突然想跟着官方文档把Ruby On Rails过一遍,把一些有用的记下来就可以一直看了,do它! https://guides.rubyonrails.org/v7.2/ 注:官网是英文文档,我自己翻译了一下,不确保完全准确,只供自己学习开发使用。 …...

高效开发 Python Web 应用:FastAPI 数据验证与响应体设计

高效开发 Python Web 应用:FastAPI 数据验证与响应体设计 目录 🧑‍💻 FastAPI 的数据验证系统与 Pydantic 模型📦 响应体与模型:定义响应数据的最佳实践🔄 响应模型与查询参数的结合:增强灵活…...

基于“开源 2+1 链动 O2O 商城小程序”的门店拉新策略与流程设计

摘要:在数字化商业浪潮席卷之下,实体门店面临着激烈的市场竞争,如何高效拉新成为关乎门店生存与发展的关键问题。本文聚焦于“开源 21 链动 O2O 商城小程序”,深入探讨结合多种手段的门店拉新策略及详细流程设计。通过剖析到店扫码…...

33.5 remote实战项目之设计prometheus数据源的结构

本节重点介绍 : 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写入数据 准备工作 新建项目 prome_remote_read_write设计prometheus 数据源的结构初始化 项目要求 通过remote read读取prometheus中的数据通过remote write向prometheus中写…...

微服务springboot详细解析(一)

目录 1.Spring概述 2.什么是SpringBoot? 3.第一个SpringBoot程序 4.配置参数优先级 5.springboot自动装配原理 6.SpringBootApplication&SpringApplication.run 7.ConfigurationProperties(prefix "") 8.Validated数据校验 29、聊聊该如何写一…...

深入探讨Go语言中的双向链表

简介 双向链表是链表家族中的一种高级结构,每个节点不仅指向下一个节点,还指向上一个节点。今天,我们将学习如何在Go语言中实现和操作这种灵活的数据结构。 双向链表的优缺点 优点: 可以从任一方向遍历链表,灵活性高…...

Fastapi + vue3 自动化测试平台---移动端App自动化篇

概述 好久写文章了,专注于新框架,新UI界面的实践,废话不多说,开搞 技术架构 后端: Fastapi Airtest multiprocessing 前端: 基于 Vue3、Vite、TypeScript、Pinia、Pinia持久化插件、Unocss 和 Elemen…...

ElasticSearch easy-es 聚合函数 group by 混合写法求Top N 词云 分词

1.将用户访问记录表数据同步到ES&#xff0c;并且分词&#xff0c;获取用户访问最多前十条词语。 Elasticsearch、Easy-es 快速入门 SearchAfterPage分页 若依前后端分离 Ruoyi-Vue SpringBoot 使用结巴分词器 <!-- 分词器--><dependency><groupId>com.hua…...

在 ASP.NET C# Web API 中实现 Serilog 以增强请求和响应的日志记录

介绍 日志记录是任何 Web 应用程序的关键方面。它有助于调试、性能监控和了解用户交互。在 ASP.NET C# 中&#xff0c;集成 Serilog 作为记录请求和响应&#xff08;包括传入和传出的数据&#xff09;的中间件可以显著提高 Web API 的可观察性和故障排除能力。 在过去的几周里&…...

2024年顶级小型语言模型前15名

本文&#xff0c;我们将深入了解2024年备受瞩目的十五款小型语言模型&#xff08;SLMs&#xff09;&#xff0c;它们分别是Llama 3.1 8B、Gemma2、Qwen 2、Mistral Nemo、Phi-3.5等。这些SLMs以其精巧的体积和高效率著称&#xff0c;它们不需要依赖庞大的服务器资源&#xff0c…...

精通 Python 网络安全(一)

前言 最近&#xff0c;Python 开始受到越来越多的关注&#xff0c;最新的 Python 更新添加了许多可用于执行关键任务的包。我们的主要目标是帮助您利用 Python 包来检测和利用漏洞&#xff0c;并解决网络挑战。 本书将首先带您了解与网络和安全相关的 Python 脚本和库。然后&…...

【python自动化二】pytest集成allure生成测试报告

pytest本身不会直接生成测试报告&#xff0c;而allure是一种生成测试报告的公共插件&#xff0c;可与多种测试框架配合生成测试报告&#xff0c;本文介绍下如何集成allure生成测试报告。 1.allure安装 1.安装allure-pytest 先安装allure的pytest插件&#xff0c;用于在pytes…...

网络版本的通讯录青春版(protobuf)

环境搭建 Protobuf 还常⽤于通讯协议、服务端数据交换场景。 因为我们主要目的只是为了学习protobuf&#xff0c;因此对于客户端&#xff0c;原本应该具备&#xff1a; 新增⼀个联系⼈ ◦ 删除⼀个联系⼈ ◦ 查询通讯录列表 ◦ 查询⼀个联系⼈的详细信息 这样四个功能。 …...

开源模型应用落地-安全合规篇-用户输入价值观判断(三)

一、前言 在深度合规功能中,对用户输入内容的价值观判断具有重要意义。这一功能不仅仅是对信息合法性和合规性的简单审核,更是对信息背后隐含的伦理道德和社会责任的深刻洞察。通过对价值观的判断,系统能够识别可能引发不当影响或冲突的内容,从而为用户提供更安全、更和谐的…...

神经网络入门实战:(十四)pytorch 官网内置的 CIFAR10 数据集,及其网络模型

(一) pytorch 官网内置的网络模型 图像处理&#xff1a; Models and pre-trained weights — Torchvision 0.20 documentation (二) CIFAR10数据集的分类网络模型&#xff08;仅前向传播&#xff09;&#xff1a; 下方的网络模型图片有误&#xff0c;已做修改&#xff0c;具…...

【Rust在WASM中实现pdf文件的生成】

Rust在WASM中实现pdf文件的生成 前言概念和依赖问题描述分步实现pdf转Blob生成URL两种方式利用localstorage传递参数处理图片Vec<u8>到pdf格式的Vec<u8>使用rust创建iframe显示pdf的Blob最后 前言 实现了一个通用的前端jpg转pdf的wasm,因为动态响应框架无法直接打…...

在MySQL中执行sum case when报错:SUM does not exist

1. 报错 在pgsql中能正常运行的一段SQL在MySQL中运行的时候报错了&#xff1a; SELECT DATE( hr.handle_time ) AS statsDate,SUM ( CASE WHEN hma.app_type IN ( 2, 5 ) THEN ch_money ELSE 0 END ) AS aliPayAmt,SUM ( CASE WHEN hma.app_type IN ( 1, 4 ) THEN ch_money EL…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...