DHCP的原理与配置

一.了解DHCP服务

1. DHCP (Dynamic Host Configuration Protocol)动态主机配置协议

是由Internet工作小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议

DHCP协议采用的是UDP作为传输协议,是给网络内的客户机自动分配IP地址;DHCP客户端发送请求消息给服务端的67号端口,DHCP服务端回应响应消息给客户端的68号端口。

2.使用 DHCP 的好处

(1)减少了管理人员的工作量和发生错误的可能性

(2)避免了IP地址冲突,减去为每个用户重新配置IP地址的时间

(3)提高了IP地址的使用率

(4)方便客户端的配置,可以自动获取,无需设置掩码、网关和其他设置

3.DHCP的分配方式

(1)自动分配:分配到一个IP地址后永久使用

(2)手动分配:由DHCP服务器管理员专门指定IP地址

(3)动态分配:使用完后释放该IP,供其他客户机使用

二 .DHCP的租约过程

1.客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程,分为四个步骤:

前面四步是完成交互的主要过程

(1)客户机请求IP地址

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

 (2)服务器响应

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

(3)客户机选择IP地址
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机。

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

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

(6)更新租约

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

2.DHCP的交互过程,即工作原理

(1)客户端通过广播发送DHCP Discover报文寻找DHCP服务端。

(2)服务端通过广播发送DHCP Offer报文向客户端提供从地址池中挑选的可用IP等网络信息。

(3)客户端只接收第一个收到的DHCP Offer报文并提取IP地址,然后向通过广播发送DHCP

Request报文告知服务端要使用该IP地址。

(4)服务端通过广播发送DHCP ACK报文告知客户端该IP地址是合法可用的,并提供租约信息。

三.DHCP的安装、配置、和使用

1.DHCP的安装

(1)先进行系统的初始化操作:关闭防火墙、关闭selinux 功能

[root@192 ~]# systemctl disable --now firewalld.service 
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@192 ~]# setenforce 0
[root@192 ~]# vim /etc/selinux/config

(2)准备好DHCP的软件包用 rpm 安装或者使用配置好yum源仓库,使用 yum install 安装

                    #使用 yum install 安装
[root@192 ~]# cd /etc/yum.repos.d/
[root@192 yum.repos.d]# cat local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
#gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7
[root@192 yum.repos.d]# yum install -y dhcp


                  #使用 rpm 安装 
[root@192 yum.repos.d]# cd
[root@192 ~]# cd /mnt/
[root@192 mnt]# ls 
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@192 mnt]# cd Packages/
[root@192 Packages]# ls | grep dhcp
dhcp-4.2.5-83.el7.centos.1.x86_64.rpm
dhcp-common-4.2.5-83.el7.centos.1.x86_64.rpm
dhcp-libs-4.2.5-83.el7.centos.1.x86_64.rpm
[root@192 Packages]# rpm -ivh dhcp-4.2.5-83.el7.centos.1.x86_64.rpm
警告:dhcp-4.2.5-83.el7.centos.1.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
	软件包 dhcp-12:4.2.5-83.el7.centos.1.x86_64 已经安装
[root@192 Packages]# rpm -q dhcp
dhcp-4.2.5-83.el7.centos.1.x86_64

2.DHCP的配置

配置DHCP主机服务端步骤

[root@192 ~]# cd /etc/dhcp/        #切换到dhcp目录下查看文件
[root@192 dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf  scripts
[root@192 dhcp]# vim dhcpd.conf    #进入文件

[root@192 share]# cd /usr/share/doc/          #进入到体制的目录中
[root@192 doc]# ls | grep dhcp                #过滤查看 dhcp 的目录 
dhcp-4.2.5
dhcp-common-4.2.5
[root@192 doc]# cd dhcp-4.2.5/                #进入到目录中
[root@192 dhcp-4.2.5]# ls                     #会存在相关配置模板的文件
dhcpd6.conf.example  dhcpd.conf.example  ldap
[root@192 dhcp-4.2.5]# vim dhcpd.conf.example 
[root@192 dhcp-4.2.5]# cp dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes      #将模板移动到 /etc/dhcp/目录下
                                               并覆盖掉原本的空文件
[root@192 dhcp-4.2.5]# cd /etc/dhcp/
[root@192 dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf  scripts
[root@192 dhcp]# vim dhcpd.conf               #此后进入文件修改配置即可

之后保存退出即可

3.DHCP的使用

(1)新打开一台服务器,把主机和新的服务器都从NAT模式,转换成仅主机模式。还要把仅主机模式下的DHCP服务关闭。

(2)配置新开的服务器的网卡

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
                       #进入修改网卡设置

[root@localhost ~]# systemctl restart network        #重启网卡
[root@localhost ~]# ifconfig                         #查看IP地址
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.80.100  netmask 255.255.255.0  broadcast 192.168.80.255
              #IP地址被自动分配
        inet6 fe80::d9fe:29ff:2d32:2b0b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d4:c1:b5  txqueuelen 1000  (Ethernet)
        RX packets 362769  bytes 526223215 (501.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35434  bytes 2269365 (2.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 95  bytes 8540 (8.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 95  bytes 8540 (8.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:65:68:b8  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

即可通过DHCP服务给服务器分配IP地址

[root@localhost ~]# vi /etc/resolv.conf    #查看DNS服务,其他配置也设置成功

# Generated by NetworkManager
search test1
nameserver 8.8.8.8
nameserver 114.114.114.114

 4.查看租约

[root@localhost ~]# cd /vsr/lib/dhcpd/          #租约文件的路径
[root@localhost dhcpd]# ls
dhcpd6.leases  dhcpd.leases  dhcpd.leases~    #存放租约的文件

拓展1:如果主机切换仅主机模式后,xshell无法连接 

直接在主机配置相同网段的一个IP地址即可

拓展2: 要给某个服务器配置指定的IP地址192.168.80.188

(1)首先,先进入到   /etc/dhcp/ 目录下的    dhcpd.conf    文件,对文件内进行下面的修改

(2)配置成功后,在主机重启DHCP服务

[root@localhost dhcp]# systemctl restart dhcpd    #重启服务

(3)之后去指定的服务器进行IP地址的刷新

四.总结:

熟悉DHCP的工作原理,和交互的前四步过程

掌握安装dhcpd服务和全局配置的参数

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

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

相关文章

Redis入门到通关之Redis实现Session共享

文章目录 ☃️前期概要☃️基于Session实现登录方案☃️现有方案存在的问题☃️Redis代替Session的业务流程❄️❄️设计key的结构❄️❄️设计key的具体细节❄️❄️整体访问流程 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博…

羊大师分析,羊奶和牛奶哪个更适合夏天喝?

羊大师分析&#xff0c;羊奶和牛奶哪个更适合夏天喝&#xff1f; 羊奶和牛奶都是营养丰富的饮品&#xff0c;适合不同人群在不同季节饮用。在夏天&#xff0c;选择羊奶还是牛奶主要取决于个人的体质、口味偏好以及需求。 羊奶的营养价值较高&#xff0c;含有丰富的蛋白质、矿物…

ESP8266+STM32+阿里云保姆级教程(AT指令+MQTT)

前言&#xff1a;在开发过程中&#xff0c;几乎踩便了所有大坑小坑总结出的文章&#xff0c;我是把坑踩满了&#xff0c;帮助更过小白快速上手&#xff0c;如有错误之处&#xff0c;还麻烦各位大佬帮忙指正、 目录 一、ESP-01s介绍 1、ESP-01s管脚功能&#xff1a; 模组启动模…

元数据管理和数据目录对于现代数据平台的重要性——Lakehouse架构(四)

文章目录 前言解读元数据技术元数据业务元数据 元存储和数据目录如何协同工作&#xff1f;数据目录的特点查询、检索和发现数据数据分类数据治理数据血缘 前言 Lakehouse 架构中的存储层负责存储整个平台的数据&#xff0c;要查询存储的这些数据&#xff0c;我们需要一个数据目…

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程 XGP这个游戏平台小伙伴们并不陌生吧&#xff0c;它是微软Xbox游戏部门推出的游戏租赁制会员服务&#xff0c;主要用于主机和PC两个平台。这个平台的会员就可以免费享受多款大制作游戏&#xff0c;而且每个月还会自动更新…

ruoyi-nbcio-plus基于vue3的flowable收回任务后重新进行提交表单的处理

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

JAVA毕业设计137—基于Java+Springboot+Vue的物流快递仓库管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的物流快递仓库管理系统(源代码数据库)137 一、系统介绍 本项目前后端分离&#xff0c;分为员工、销售员、仓库员、商品管理员、超级管理员五种角色 1、员工…

Linux 的情况下实现贪吃蛇 -- 第二十八天

1. 打印地图 keypad(stdsrc,1) 参数表示是否接收&#xff0c;1表示接收指令 2.思路&#xff1a;初始化initNcurses()&#xff0c; 封装地图函数实现地图gamePic&#xff08;&#xff09; 分三部分实现&#xff1a;2.1: 在第0行&#xff1a;打印 "--",&quo…

矩阵连乘算法

矩阵连乘&#xff1a; #include<iostream> #define inf 0x7fffffff using namespace std; int a[256] { 0 };//存储矩阵的行和列 int m[256][256] { 0 };//存储i到j的最少计算次数 int s[256][256] { 0 };//存储i到j的中转站k void m_print(int i, int j) {if (i …

javaWeb项目-房屋房租租赁系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JSP技术 JSP(Jav…

数据结构-二叉树-链式

一、链式二叉树的结构 typedef int BTNodeDataType; typedef struct BTNode {BTNodeDataType data;struct BTNode* left;struct BTNode* right; }BTNode; 二叉树的前中后序遍历 前序&#xff1a;根左右 中序&#xff1a;左根右 后序&#xff1a;左右根 void PreOrder(BTNo…

栈 、队列

1.stack的介绍和使用 1.1stack的介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 1.2 stack的使用 函数说明 接口说明 stack() 构造空的栈 empty() 检测stack是否为空 size…

Opencv | 边缘检测 轮廓信息

目录 一. 边缘检测1. 边缘的定义2. Sobel算子 边缘提取3. Scharr算子 边缘提取4. Laplacian算子 边缘提取5. Canny 边缘检测算法5.1 计算梯度的强度及方向5.2 非极大值抑制5.3 双阈值检测5.4 抑制孤立弱边缘 二. 轮廓信息1. 获取轮廓信息2. 画轮廓 一. 边缘检测 1. 边缘的定义…

【QT】Ubuntu22.04 配置 QT6.5 LTS

【QT】Ubuntu22.04 配置 QT6.5 LTS 文章目录 【QT】Ubuntu22.04 配置 QT6.5 LTS1.注册QT Group的账号2.安装QT Creator3.启动QT Creator报错from 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.4.运行QT的demoReference 1.注册QT Group的…

mysql buffer pool详解

介绍 缓冲池是InnoDB在访问表和索引数据时缓存的主内存区域。缓冲池允许直接从内存访问频繁使用的数据&#xff0c;这加快了处理速度。在专用服务器上&#xff0c;通常会将多达80%的物理内存分配给缓冲池。 为了提高大容量读操作的效率&#xff0c;缓冲池被划分为可能包含多行…

类与对象(三) 拷贝构造与赋值运算符重载

目录 1.拷贝构造 2.运算符重载&#xff08;日期类举例&#xff09; 1. 2.和 3. > > < < 4.赋值运算符重载 5.- 与- 6. -- 7.日期 - 日期 3.const成员函数 4.<<和>>重载 5.取地址重载 1.拷贝构造 拷贝构造也是一个构造函数。我们前…

Linux:动静态库介绍

动静态库 库的介绍开发环境 & 编译器库存在的意义库的实现库的命名静态库制作和使用总结 动态库的制作和使用动态库的使用方法方法一方法二方法三 库加载问题静态库加载问题动态库的加载问题与位置无关码 C/C静态库下载方式 库的介绍 静态库&#xff1a;程序在编译链接的时…

C++初识--------带你从不同的角度理解引用的巧妙之处

1.对于展开的理解 我们这里的展开包括命名空间的展开和头文件的展开&#xff0c;两者的含义是不一样的&#xff1a; 头文件的展开就是把头文件拷贝到当前的文件里面&#xff1b; 命名空间的展开不是拷贝&#xff0c;而是因为编译器本身默认是到全局里面去找&#xff0c;当我…

一些常见的Windows命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言看版本号查找端口启动程序杀死某个端口查看全部端口看ip进入目录就是总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#x…

Linux——匿名管道

为什么要有进程间通信&#xff1f; 在操作系统中&#xff0c;进程是独立运行的程序&#xff0c;多个进程之间要想互相协作完成任务&#xff0c;就需要进程间通信。 什么是进程间通信&#xff1f; 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#…