一、 概述

DHCP协议

Dynamic Host Configuration Protocol ,动态主机配置协议

作用:动态的进行IP地址分配

服务端的监听端口 67/udp

客户端监听端口 68/udp

网络架构 C/S:client/server

DHCP的优势

  • 提高配置效率

  • 减少配置错误

DHCP的分配方式

  • 手动分配:固定不变,工程师进行地址绑定

  • 自动分配:但是不进行地址回收

  • 动态分配:进行地址回收

应用场景

  • 更加准确的配置网络参数的情况下

  • 网络环境较大时

注意

同一个网络环境下不允许存在多个DHCP服务器

工作流程(背会)

1、当客户端配置为自动获得IP地址时,客户端发送discover广播包(发现),用来寻找网络中的DHCP服务器

2、假如网络存在DHCP服务器,此时服务器给出回应,向客户端发送Offer广播包(邀约),携带了IP地址的信息,询问客户端是否使用该IP地址

3、假如客户端使用上述IP地址,向服务端发送Request广播包(请求),并将请求信息写入到该包内。

4、服务端向客户端发送Ack广播包(确认),并确定IP地址的租约期。

何时更新租约

当租约期达到50%时

当客户端重启后

客户端直接发送Request包:

A、IP地址空闲 服务端直接回应Ack

B、IP地址被占用 服务端回应noAck 客户端需要将上述“工作流程”完整执行一遍

客户端类型

Linux DHCP服务器不存在,没有IP

Windows DHCP不存在,会启用备用IP地址 169.254.0.0/16 ~ 168.254.255.255/16

二、DCHP安装与配置

部署

基础环境

配置yum源

关闭防火墙及SElinux

[root@dhcpserver ~]# systemctl  stop  firewalld  && systemctl disable firewalld

查看SElinux状态

[root@dhcpserver ~]# getenforce
###设置宽容模式
[root@dhcpserver ~]# setenforce  0
###关闭SElinux,重启才能生效
[root@dhcpserver ~]# vim  /etc/selinux/config
SELINUX=enforcing  改为 SELINUX=disabled

配置静态IP

###关闭网络图形化工具
[root@dhcpserver ~]# systemctl  stop NetworkManager ; systemctl disable NetworkManager
[root@dhcpserver ~]# cd /etc/sysconfig/network-scripts/
[root@dhcpserver ~]# cp ifcfg-ens33 ifcfg-ens34
[root@dhcpserver ~]# cat ifcfg-ens34
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.100.254
PREFIX=24
[root@dhcpserver ~]# systemctl restart network 
安装DHCP软件包

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

配置

配置文件存储路径 /etc/dhcp

默认配置文件副本路径 /usr/share/doc/dhcp-4.2.5/

数据文件存储路径 /var/lib/dhcpd

核心配置文件 /etc/dhcp/dhcpd.conf


[root@dhcpserver ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/
[root@dhcpserver ~]# cd /etc/dhcp/
[root@dhcpserver ~]# cp dhcpd.conf.example dhcpd.conf
[root@dhcpserver ~]# cat dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
## option definitions common to all supported networks...
option domain-name "example.org";    ##指定DNS服务器域名
option domain-name-servers ns1.example.org, ns2.example.org;  ##指定DNS服务器域名default-lease-time 600;  ##默认租约。单位s
max-lease-time 7200; ##最大租约时间,单位s# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;  ##日志输出通道,交给syslog服务管理# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.
#######每一个subnet都是一个分配地址段的定义######################
subnet 10.152.187.0 netmask 255.255.255.0 {
}# This is a very basic subnet declaration.subnet 10.254.239.0 netmask 255.255.255.224 {range 10.254.239.10 10.254.239.20;option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.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;
}# A slightly different configuration for an internal subnet.
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;
}# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
######每一个host都是进行地址绑定的配置项###############
host passacaglia {hardware ethernet 0:0:c0:5d:bd:95;filename "vmunix.passacaglia";server-name "toccata.fugue.com";
}# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
host fantasia {hardware ethernet 08:00:07:26:c0:a5;  ###固定分配地址的主机的MAC地址fixed-address fantasia.fugue.com;  ###需要进行分配的IP地址
}# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.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;}
}
单一地址池的配置文件
[root@dhcpserver dhcp]# cat dhcpd.conf | grep -v "^#" | grep -v "^$"
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.100.0 netmask 255.255.255.0 {range 192.168.100.100 192.168.100.200;option domain-name-servers ns1.internal.example.org;option domain-name "internal.example.org";option routers 192.168.100.254;option broadcast-address 192.168.100.255;default-lease-time 600;max-lease-time 7200;
}
host passacaglia {hardware ethernet 0:0:c0:5d:bd:95;filename "vmunix.passacaglia";server-name "toccata.fugue.com";
}
host fantasia {hardware ethernet 08:00:07:26:c0:a5;fixed-address fantasia.fugue.com;
}
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;}
}
###重启DHCP服务器
[root@dhcpserver dhcp]# systemctl restart dhcpd
###查看监听
[root@dhcpserver dhcp]# netstat -anptu | grep :67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           28005/dhcpd 
地址绑定配置文件

[root@dhcpserver dhcp]# cat dhcpd.conf | grep -v "^#" | grep -v "^$"
....省略.....
host s1 {hardware ethernet 00:0c:29:dd:24:41;fixed-address 192.168.100.110;
}
....省略.....
###重启DHCP服务器
[root@dhcpserver dhcp]# systemctl restart dhcpd
###查看监听
[root@dhcpserver dhcp]# netstat -anptu | grep :67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           28005/dhcpd 
####客户端验证
[root@client ~]# ifdown ens34 ; ifup ens34
[root@client ~]# ip a
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:dd:24:41 brd ff:ff:ff:ff:ff:ffinet 192.168.100.110/24 brd 192.168.100.255 scope global noprefixroute dynamic ens34valid_lft 599sec preferred_lft 599secinet6 fe80::20c:29ff:fedd:2441/64 scope link valid_lft forever preferred_lft forever
多地址池配置
路由器配置
###安装dhcp软件,提供dhcrelay命令
[root@nginx1 ~]# yum install -y dhcp
##开启路由功能
[root@nginx1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@nginx1 ~]# sysctl -p
net.ipv4.ip_forward = 1
##分别对连接两个网络的网卡配置IP地址
[root@nginx1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.100.253
PREFIX=24
[root@nginx1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
BOOTPROTO=static
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.200.253
PREFIX=24
##使用dhcrelay进行DHCP广播的中继转发
[root@nginx1 ~]# dhcrelay 192.168.100.254  
DHCP服务器配置

##DHCP分配地址配置文件,添加如下配置:
[root@dhcpserver dhcp]# vim dhcpd.conf
....省略.....
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.100 192.168.200.200;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 192.168.200.253;
option broadcast-address 192.168.200.255;
default-lease-time 600;
max-lease-time 7200;} 
....省略.....
##重启DHCP服务器
[root@dhcpserver ~]# systemctl restart dhcpd
##设置DHCP服务器的网关
[root@dhcpserver ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.100.254
PREFIX=24
GATEWAY=192.168.100.253
##验证网关
[root@dhcpserver ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.253 0.0.0.0         UG    103    0        0 ens34
客户端验证
[root@nginx2 ~]# ifdown ens34 ;ifup ens34
[root@nginx2 ~]# ifconfig ens34
ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.200.100  netmask 255.255.255.0  broadcast 192.168.200.255inet6 fe80::20c:29ff:fe8a:4a83  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:8a:4a:83  txqueuelen 1000  (Ethernet)RX packets 40  bytes 9956 (9.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 172  bytes 27844 (27.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

三、常见故障

1. 服务启动异常,排查配置文件,特别注意修改的位置!!!
2. 地址参数分配异常,排查网络连接情况,再排查subnet字段!!!

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单变量单步时序预测 | TCN-LSTM时间卷积结合长短期记忆神经网络(MATLAB)

✅ 一、主要功能 该代码实现了一个结合时序卷积网络(TCN)和长短期记忆网络(LSTM)的混合深度学习模型,用于时间序列预测。具体任务是:利用前24个时间步的数据(输入特征维度为24),来预测下一个时间步的值(输出维度为1),属于单变量时间序列滚动预测。 ✅ 二、算法步骤…

【智能体】rStar2-Agent

rStar2-Agent 是一篇在大模型推理领域极具洞察力和工程实力的工作&#xff0c;它没有追求参数规模的堆砌&#xff0c;而是通过精巧的算法设计和系统优化&#xff0c;在一个14B的小模型上实现了媲美671B大模型的数学推理能力。 核心思想非常明确&#xff1a;让模型“想得更聪明”…

Coze源码分析-资源库-创建知识库-后端源码-核心技术与总结

11. 核心技术特点 11.1 知识库创建的分层架构设计 清晰的职责分离&#xff1a; API层&#xff08;knowledge_service.go&#xff09;&#xff1a;负责知识库创建请求处理、参数验证、响应格式化应用层&#xff08;knowledge.go&#xff09;&#xff1a;负责知识库创建业务逻辑编…

Nano Banana制作3D立体打印效果图

Nano Banana介绍Nano Banana 是 Google 于 2024 年推出的革命性 AI 驱动图像生成与编辑模型&#xff0c;正式名称为 Gemini 2.5 Flash Image。以下是对它的详细介绍&#xff1a;技术背景&#xff1a;Nano Banana 基于 Google DeepMind 最新的 Gemini 2.5 Flash Image 架构&…

继续吐槽Rstudio

前言 继上次《怪谈级别疑难问题收录》后&#xff0c;怪谈级别的疑难问题又更新了&#xff0c;这次更新了三个让人吐血的奇葩问题&#xff0c;其中就包括大家又爱又恨的Rstudio&#xff0c;一起围观下。 本教程基于Linux环境演示&#xff0c;计算资源不足的同学可参考&#xf…

C++:string模拟实现中的赋值拷贝函数现代写法诡异地崩掉了......

事情是这样的&#xff1a;博主今天回看以前实现过的string&#xff0c;当时就遇到了一个bug:可见博主当时的破防。因为最近在集中复盘C初阶部分&#xff0c;就有点好奇年轻的时候自己写的模拟string是什么样。没想到给我自己留了个bug。现在来细看这个场景&#xff1a;为了测试…

机器学习-Bagging

Bagging-Bootstrap AGGrgratING Bagging并行训练n个基本学习器&#xff08;base learner&#xff09;通过平均所有学习器的输出&#xff08;回归&#xff09;或主投票&#xff08;分类&#xff09;做决策每个模型是用在训练集上通过bootstrap采样得到的新的数据集进行训练得到的…

Unity3D Shader 入门知识

Unity3D Shader 入门知识详解。 Unity3D Shader 入门知识 Shader&#xff08;着色器&#xff09;对很多 Unity 初学者来说像是“黑魔法”。 实际上&#xff0c;Shader 并没有那么神秘&#xff0c;它本质上就是一段运行在 GPU 上的小程序&#xff0c;用来控制 屏幕上每个像素的颜…

【面试之Redis篇】主从复制原理

从面试的角度来解释 Redis 主从复制原理&#xff0c;按照“总-分-总”的结构&#xff0c;清晰地阐述其核心概念、工作流程和关键要点&#xff0c;这能体现出你不仅知道是什么&#xff0c;还理解为什么以及如何应对相关问题。总览&#xff1a;一句话定义 面试官您好&#xff0c;…

数据库开启ssl

数据库&#xff1a;阿里云rds 系统&#xff1a;centos 需要修改的&#xff1a;nacos连接项目连接本地navicat连接 重点&#xff1a;为了兼容本地和服务器&#xff0c;ssl证书路径由原来的绝对路径换成环境变量参数&#xff0c;所以有步骤4 文章目录步骤1 阿里云步骤2 navicat…

Redis 事件驱动与多路复用源码剖析

Redis 事件驱动与多路复用源码剖析1. 前言 Redis 是 单线程 I/O 多路复用 的典型代表。 它并不是多线程处理请求&#xff0c;而是依赖 事件驱动&#xff08;event-driven&#xff09;模型&#xff0c;在一个线程内高效管理海量连接。 核心组件&#xff1a; ae.c&#xff1a;事…

VR煤矿实训系统相较于传统煤矿培训方式的独特优势​-广州华锐互动

高度逼真&#xff0c;沉浸体验​VR煤矿实训系统运用先进的3D建模、动态仿真技术&#xff0c;对煤矿井下的复杂环境进行1:1还原。从幽深的巷道、运转的采煤设备&#xff0c;到潮湿的空气、昏暗的灯光&#xff0c;甚至细微的煤尘颗粒&#xff0c;都能逼真呈现。使用者戴上VR设备后…

javaweb XML DOM4J

XMLXML作用就是配置文件&#xff0c;properties使用不了较复杂的需求&#xff0c;xml应运而生配置文件对比 xml更方便tips1:新建resources目录&#xff0c;并将src中的jdbc.properties移到resourcs中&#xff0c;并且右键标记为源代码根目录&#xff0c;这样运行src时就会和pro…

多模态视频理解领域 Benchmark 与 Leaderboard 整理

多模态视频理解是当前人工智能领域的研究热点&#xff0c;其核心目标是让模型像人类一样&#xff0c;综合视频中的视觉、听觉&#xff08;部分场景&#xff09;及文本信息&#xff0c;实现对视频内容的深度感知、理解与推理。为客观评估模型性能&#xff0c;行业内涌现了众多权…

18j621-3通风天窗图集pdf(免费高清版)

18j621-3通风天窗已经替代05j621-3通风天窗图集成为目前比较通用的建筑屋顶通风选型重要参考标准&#xff0c;18j621-3图集是对前图集的优化和革新&#xff0c;在18j621-3图集中新增了TC8圆拱型电动采光天窗&#xff0c;丰富了屋面通风排烟设备的选型。在18j621-3天窗图集中&am…

LawGPT:基于中文法律知识的大模型

本文转载自&#xff1a;https://www.hello123.com/lawgpt ** 一、⚖️ LawGPT&#xff1a;中文法律界的 “AI 法助”&#xff0c;啃透了 15 万份判决书&#xff01; LawGPT 是一系列专攻中文法律知识的开源大模型&#xff0c;在通用中文基座&#xff08;如 ChatGLM&#xff0…

用 go-commons 快速写一个监控 CPU/内存的 Exporter

欢迎加入开源项目&#xff0c;提你的 mr Go Commons&#xff1a;Golang 开发者的常用工具集&#xff0c;一站式解决常见需求 在 Go 语言的开发过程中&#xff0c;你是不是经常遇到这样的情况&#xff1a; 想要做点小功能&#xff0c;却得从零写起&#xff0c;或者到处找三方…

KingbaseES客户端工具Ksql使用全指南:从安装到高级操作

引言 在国产数据库蓬勃发展的今天&#xff0c;KingbaseES凭借其自主可控、高性能、高可用的特性&#xff0c;已成为政务、金融、能源等关键领域的首选数据库。而作为其配套的命令行工具&#xff0c;Ksql更是DBA和开发人员的“瑞士军刀”——它不仅能高效执行SQL查询&#xff0c…

【LeetCode - 每日1题】可以输入的最大单词数

🌈 个人主页:(时光煮雨) 🔥 高质量专栏:vulnhub靶机渗透测试 👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~) 🌵目录🌵 难度 ⭐⭐ 题目回顾 ✅解题思路 💖概述 💓核心…

3227. 字符串元音游戏

3227. 字符串元音游戏 题目链接&#xff1a;3227. 字符串元音游戏 代码如下&#xff1a; class Solution { public:bool doesAliceWin(string s) {return ranges::any_of(s, [](char c) {return c a || c e || c i || c o || c u;});} };