Linux系统下DHCP服务安装部署和使用实例详解(蜜罐)

目录

一、概述

二、具体配置如下:


一、概述

DHCP动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或网络服务供应商自动分配IP地址;给用户用于内部网管理员作为对所有计算机作中央管理的手段。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。

1、DHCP具有以下功能:
1. 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
2. DHCP应当可以给用户分配永久固定的IP地址。
3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
4. DHCP服务器应当向现有的BOOTP客户端提供服务。
2、DHCP有三种机制分配IP地址:
1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。

3、DHCP的运作方式:
客户端传输广播包给整个物理网络段内的所有主句,如局域网内有DHCP服务器时,才会响应客户端的IP参数要求,所以DHCP服务器与客户端应该在同一个物理网段内。
客户端与DHCP服务器之间连接的过程如下图:

1)客户端:利用广播包发送搜索DNCP服务器的包
2)服务器端:提供客户端网络相关的租约选择
3)客户端:决定选择的DHCP服务器提供的网络参数租约并汇报给服务器
4)服务器端:记录这次租约并回报给客户端相关的封包信息

4、简单来说下DHCP工作原理:
(1)客户机寻找服务器:广播发送discover包,寻找dhcp服务器
(2)服务器响应请求:单播发送offer包,对客户机做出响应。提供客户端网络相关的租约以供选择其中服务器在收到客户端的请求后,会针对客户端的mac地址与本身的设定数据进行一下工作:
a)到服务器的登录文件中寻找该用户之前曾经使用过的ip,若有且该ip目前没有人使用,这提供此ip为客户机
b)若配置文件中有针对该mac提供额外的固定ip,且该ip没有被使用,则提供此ip给客户机
c)如果没有符合以上两个条件,则随机取用目前没有被使用的ip参数给客户机并记录到leases文件中。
(3)客户机发送ip请求:广播request包,选择一个服务器提供的网络参数租约回报服务器。此外,客户机会发送一个广播封包给局域网内的所有主机,告知自己已经接受服务器的租约。
(4)服务器确认租约:单播Ack包,服务器与客户机确认租约关系并记录到服务器的leases文件中 。

5、DHCP涉及概念简介:
DHCP Client:DHCP客户端,通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP 客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端。
DHCP Server:DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。
DHCP Relay:DHCP中继器,DHCP客户端跨网段申请IP地址的时候,实现DHCP报文的转发功能。
DHCP Security:DHCP安全特性,实现合法用户IP地址表的管理功能
DHCP Snooping:DHCP监听,记录通过二层设备申请到IP地址的用户信息

DHCP工作大致可以分为以下几个阶段:

1、发现阶段:
即DHCP客户端寻找DHCP服务端的过程,对应于客户端发送DHCP Discovery,因为DHCP Server对应于DHCP客户端是未知的,所以DHCP 客户端发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。
如果网络中存在多个DHCP Server,则多个DHCP Server均会回复该DHCP Discovery报文。
如果同一个vlan内没有DHCP Server,而该VlanIf配置了DHCP Relay功能,则该Vlanif即为DHCP中继,DHCP中继会将该DHCP报文的源IP地址修改为该Vlanif的IP地址,而目的地址则为DHCP Relay配置的DHCP Server的IP地址。同时修改DHCP报文中,giaddress为VlanIf的IP地址。并以单播将DHCP Discovery发送到DHCP Server端。

2、DHCP Server 提供阶段:
DHCP Server提供阶段,即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段
DHCP Server收到DHCP Discovery报文后,解析该报文请求IP地址所属的Subnet。并从dhcpd.conf文件中与之匹配的subnet中取出一个可用的IP地址(从可用地址段选择一个IP地址后,首先发送ICMP报文来ping该IP地址,如果收到该IP地址的ICMP报文,则抛弃该IP地址,重新选择IP地址继续进行ICMP报文测试,直到找到一个网络中没有人使用的IP地址,用以达到防治动态分配的IP地址与网络中其他设备IP地址冲突,这个IP地址冲突检测机制,可配置),设置在DHCP Discovery报文中yiaddress字段中,表示为该客户端分配的IP地址,并且为该Lease设置该Subnet配置的Option,例如默认leases租期,最大租期,router等信息。
DHCP从地址池中选择IP地址,以如下优先级进行选择:
    1)当前已经存在的Ip Mac的对应关系
    2)Client以前的IP地址
    3)读取Discovery报文中的Requested Ip Address Option的值,如果存在并且IP地址可用
    4)从配置的Subnet中选择IP地址:
DHCP Server解析DHCP Discovery请求的IP所属的Subnet,首先看该DHCP Discovery报文中giaddress是否有DHCP Relay,如果有,则从giaddress所述的subnet中可用IP地址段中获取,并分配IP。如果giaddress没有IP地址,则从该DHCP Server绑定的接口的IP地址所属的网段分配IP地址。

3、DHCP Client 选择阶段:
DHCP Client收到若干个DHCP Server响应的DHCP Offer报文后,选择其中一个DHCP Server作为目标DHCP Server。选择策略通常为选择第一个响应的DHCP Offer报文所属的DHCP Server。
然后以广播方式回答一个DHCP Request报文,该报文中包含向目标DHCP请求的IP地址等信息。之所以是以广播方式发出的,是为了通知其他DHCP Server自己将选择该DHCP Server所提供的IP地址。

4、DHCP Server确认阶段:
当DHCP Server收到DHCP Client发送的DHCP Request后,确认要为该DHCP Client提供的IP地址后,便想该DHCP Client响应一个包含该IP地址以及其他Option的报文,来告诉DHCP Client可以使用该IP地址了。然后DHCP Client即可以将该IP地址与网卡绑定。另外其他DHCP Server都将收回自己之前为DHCP Client提供的IP地址。

5、DHCP Client重新登录网络:
当DHCP Client重新登录后,发送一个以包含之前DHCP Server分配的IP地址信息的DHCP Request报文,当DHCP Server收到该请求后,会尝试让DHCP客户端继续使用该IP地址。并回答一个ACK报文。
但是如果该IP地址无法再次分配给该DHCP Client后,DHCP回复一个NAK报文,当DHCP Client收到该NAK报文后,会重新发送DHCP Discovery报文来重新获取IP地址。

6、DHCP Client更新租约:
DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新器租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。

二、具体配置如下:

1、linux下DHCP配置: 
配置文件都放在/etc/dhcp目录下;主配置文件为dhcpd.conf
将/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample文件复制到配置文件目录下,并覆盖dhcpd.conf文件,即可获得主配置文件。

2、主配置文件的主要内容介绍:

option domain-name "example.org"; //指定网域的域名
option domain-name-servers ns1.example.org, ns2.example.org; //指定域名解析服务器(DNS)的ip地址。
default-lease-time 600; //默认租约时间,单位为s
max-lease-time 7200; //最大租约时间,单位为s。过期续约,续约直接发送request包即可。
log-facility local7; //日志设备类型为local7.一般日志设备类型包括mail、crontab。通过此选项可以找到该服务的日志记录路径
subnet 10.5.5.0 netmask 255.255.255.224 { //指定分配网段的ip地址以及子网掩码,括号内部为局部配置。
range 10.5.5.26 10.5.5.30; //可使用的地址池范围
option domain-name-servers ns1.internal.example.org; //该网段的域名,可以省略
option domain-name "internal.example.org"; //网段DNS
option routers 10.5.5.1; //指定网关
option broadcast-address 10.5.5.31; //指定广播地址
default-lease-time 600; //租约时间
max-lease-time 7200; //最大租约时间。
}
host passacaglia { //主机名称
hardware ethernet 0:0:c0:5d:bd:95; //主机的MAC地址
filename "vmunix.passacaglia";
server-name "toccata.fugue.com"; //文件名和服务器名,不太需要。
fixed-address fantasia.fugue.com; //固定的ip地址
}                                   //保留主机,此选项用于指定内部存在的MAC地址的主机在请求ip时固定分配指定的地址。如果该指定ip已经被分配使用的话,保留主机的指定ip将不能使用。
一个局域网内最好只有一个dhcp服务器,当一个局域网内存在多个服务器时,客户机只选择最先到达的offer。

注意:搞清楚下面几个问题:
1)如何知道客户机从哪个DNS Server获得ip地址?
windows中直接查看网络链接详细信息,有个dhcp服务器,可以看到服务器的ip地址。
linux下查看/var/lib/dhclient/dhclient.leases,这是个租约文件,服务器端的租约文件在/var/lib/dhcpd/dhcpd.leases。
2)服务器分配ip的顺序?
从小的ip开始分配
3)为何客户机在获得一个ip后,释放再获得ip时会获得以前使用的ip?
客户机内有一个租约文件存放自己曾经获得的ip地址,服务器端也有一个租约文件存放了自己已经分配的ip以及其对应的主机mac。
4)服务器会在哪些端口提供dhcp服务?
默认在任何端口提供dhcp服务。实际上只是在与dhcp同一网段的网卡上提供dhcp服务。 
5)如果租约到期,而服务器并没有续约,该如何处理? 
会向其他服务器寻找dhcp服务

3、Linux系统下配置案例

3.1、DHCP服务安装与配置

[root@localhost ~]# yum install dhcp -y
[root@localhost ~]# cd /etc/dhcp/
[root@localhost dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf
[root@localhost ~]# cat dhcpd.conf   
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
[root@localhost dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
[root@localhost dhcp]# vim dhcpd.conf
.........
# A slightly different configuration for an internal subnet.
subnet 172.16.50.0 netmask 255.255.255.0 {                           //同一网段DHCP服务器配置,设置IP网段和子网掩码range 172.16.50.250 172.16.50.254;                           //自动分配的IP地址段option domain-name-servers 202.106.0.20,235.5.5.5;            //DNS服务器地址,多个逗号隔开,也可以写domain 域名  如:ns1.eason.comoption domain-name "eason.com";                               //dns服务器名字option routers 172.16.50.1;                                   //该网段网关option broadcast-address 172.16.50.255;                      //广播地址default-lease-time 600;                                      //默认租期时间max-lease-time 7200;                                         //最大租约时间ddns-update-style none;log-facility local7;                  //输入日志。
}[root@localhost dhcp]# /etc/init.d/dhcpd start
Starting dhcpd:                                            [  OK  ]
[root@localhost dhcp]# lsof -i:67                       //服务端口为67和68,可以通过端口查看命令进行查看。
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dhcpd   3642 dhcpd    7u  IPv4  19714      0t0  UDP *:bootps

注意:dhcpd.conf文件内重复的配置项可以删除,注意不能直接复制模板到目标dhcp配置文件,否则会遇到格式问题(看着一模一样但就是启动不起来,所以还是套用 /usr/share/doc/dhcp-x.x.x/dhcpd.conf.sample 删除多余项目,保留模板中或者需要的项目,再更改。

3.2、查看日志选项

[root@localhost dhcp]# vim /etc/rsyslog.conf    //查看日志配置信息

[root@localhost dhcp]# cat /var/log/boot.log

3.3、客户端验证

 新建一台虚拟机,将其与DHCP服务器网段划分至同一vlan内,并将主机网卡配置项DHCP服务开启,结果如图所示:

4、DHCP服务器配置多个网段的方法

待补充。。。

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

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

相关文章

sql-50练习题0-5

sql练习题0-5题 前言数据库表结构介绍学生表课程表成绩表教师表 0-1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数0-2查询"01"课程比"02"课程成绩小的学生的信息及课程分数0-3查询平均成绩大于等于60分的同学的学生编号和学生…

父子项目打包发布至私仓库

父子项目打包发布至私仓库 1、方法一 在不需要发布至私仓的模块上添加如下代码&#xff1a; <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><configuration><skip>true</s…

基于OFDM的通信系统模拟实现

文章目录 前言一、OFDM 基本知识1、OFDM 理论知识及仿真2、OFDM 调制3、OFDM 解调 二、2ASK&#xff08;二进制振幅键控&#xff09;1、2ASK 基本原理①、OOK②、2ASK 2、2ASK/OOK 信号产生方法3、2ASK/OOK 信号解调方法 三、基于 OFDM 的通信系统模拟实现1、整体流程2、MATLAB…

基于nodejs+vue食力派网上订餐系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

行情分析——加密货币市场大盘走势(10.27)

目前大饼开始了震荡盘整&#xff0c;目前远离EMA21均线&#xff0c;预计会有大的回调动作。而MACD日线来看&#xff0c;昨日和今日开始呈现绿色空心柱&#xff0c;也在说明大饼在做震荡盘整。不排除大跌的可能性&#xff0c;大饼可以开始布局中长线空单&#xff0c;可以再35000…

【NLP】word复制指定内容到新的word文档

目录 1.python代码 2.结果 需求&#xff1a; 复制word文档里的两个关键字&#xff08;例如“起始位置”到“结束位置”&#xff09;之间的内容到新的word文档。 前提&#xff1a;安装win32包&#xff0c;通过pip install pywin32命令直接安装。话不多说&#xff0c;直接上代码…

苹果cms模板MXone V10.7魔改版源码 全开源

苹果cms模板MXone V10.7魔改版源码 全开源 苹果cms模板MXone魔改版短视大气海报样式 安装模板教程说明&#xff1a; 1、将模板压缩包上传到苹果CMS程序/template下解压 2、网站模板选择mxone 模板目录填写html 3、网站模板选择好之后一定要先访问前台&#xff0c;然后再进…

面试准备中........

一、Linux 计算机网络相关&#xff1a; 1.OSI七层模型 应用层 &#xff1a;给用户提供操作界面 表示层&#xff1a;数据的表示&#xff1a;将字符转化为2进制或将2进制转化为字符。加密&#xff1a;对称加密和非对称加密&#xff0c;ssh协议。压缩&#xff1a;将文件压缩。…

No authorization token was found

今天遇到了一个问题&#xff0c;我把前后端逻辑都理了一遍&#xff0c;开始怀疑后端&#xff0c;后端肯定没错了&#xff0c;把前端理了一遍&#xff0c;ok前后端没错&#xff0c;我错。登录哪里需要的token&#xff1f;&#xff1f;&#xff1f;&#xff1f;把我搞懵逼了。 测…

代码随想录Day30 贪心05 LeetCode T435无重叠区间 T763划分字母区间 T56 合并区间

LeetCode T435 无重叠区间 题目链接:435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 题目思路: 这题思路和昨天的打气球类似,我们需要按照左区间或者右区间进行排序,然后哦判断第i个区间的左端点和第i-1个区间的右端点的大小关系,,如果大于等于,那么就无需操作,一旦…

Fabric.js 复制粘贴元素

本文简介 点赞 关注 收藏 学会了 当你要复制一个 fabric 的元素时&#xff0c;你考虑到的是什么&#xff1f;是深拷贝当前选中对象再添加到画布中&#xff1f; 其实&#xff0c;fabric.js 提供了一个克隆方法&#xff0c;在 fabric.js 官网的案例里也有这个demo&#xff1a…

中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线,可以进入轻松学编程

中文编程开发语言工具系统化教程零基础入门篇和初级1专辑课程已经上线&#xff0c;可以进入轻松学编程 学习编程捷径&#xff1a;&#xff08;不论是正在学习编程的大学生&#xff0c;还是IT人士或者是编程爱好者&#xff0c;在学习编程的过程中用正确的学习方法 可以达到事半…

Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(上)

Flutter笔记 完全基于Flutter绘图技术绘制一个精美的Dart语言吉祥物Dash&#xff08;上&#xff09; 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://…

python opencv之图像分割、计算面积

以下代码是一个基于K-means聚类算法进行图像分割的实现。通过读取一个彩色图像&#xff0c;将其转化为二维数组形式。然后使用K-means算法对像素点进行聚类&#xff0c;聚类个数为7。根据聚类后的标签值对像素点进行着色&#xff0c;并创建掩膜图像。接着使用形态学开运算和闭运…

Web项目如何做单元测试

你可能会用单元测试框架&#xff0c;python的unittest、pytest&#xff0c;Java的Junit、testNG等。 那么你会做单元测试么&#xff01;当然了&#xff0c;这有什么难的&#xff1f; test_demo.py def inc(x):return x 1def test_answer():assert inc(3) 4 inc() 是定义的…

毅速丨哪些金属材料在3D打印中应用最多

金属3D打印作为一种新兴的制造技术已经在很多领域得到广泛应用&#xff0c;目前金属3D打印应用较多的材料有不锈钢、钛合金、铝合金、钴铬合金、镍基合金、模具钢等&#xff0c;其中不锈钢材料的应用最为常见。 这些金属3D打印材料各有其特点和适用场景&#xff0c;可以根据具体…

记一次线程爆满导致服务器崩溃的问题排查

记一次线程爆满导致服务器崩溃的问题排查 重启服务器 重启后&#xff0c;ssh连接发现下面问题 fork faild:Cannot allocate memory 以为是内存满了 于是&#xff0c;free -h,查看内存情况&#xff0c;还有&#xff0c;观察一段时间后&#xff0c;内存没多大变化 修改…

万字解析设计模式之单例模式

一、概述 1.1简介 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保…

分享个包含各省、市、区的编码数据的在线静态资源脚本

在翻《SpringBootVue3》——十三尼克陈作者的大型前后端分离项目实战里面&#xff0c;在看到地址管理的部分时&#xff0c;发现了该作者记录有一个静态的地址资源脚本 这里做个记录&#xff0c;打点 一、引入js <script src"https://s.yezgea02.com/1641120061385/td…

IT行业变成了夕阳行业

IT技术发展背景及历程 从2010年左右开始&#xff0c;大众创新&#xff0c;万众创业变成了一个经常看到的词语&#xff0c;在创业潮的带动下&#xff0c;同时刚好赶上了互联网的高速发展&#xff0c;一大批互联网创业公司应运而生&#xff0c;在这样的背景下&#xff0c;IT行业…