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

Linux复习笔记(五) 网络服务配置(dhcp)

二、网络服务配置

2.5 dhcp服务配置(不涉及实际操作)

要求:知道原理和常见的参数配置就行

2.5.1 概述DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种用于自动分配和管理IP地址的网络协议,旨在简化网络设备配置并提高IP地址利用率。以下是其核心内容的综合概述:

​协议定位​

  • DHCP属于OSI模型的应用层协议,基于UDP传输,使用​67号端口(服务器)​​和​​68号端口(客户端)​进行通信

​核心功能​

  • ​动态IP分配​​:自动为客户端分配IP地址、子网掩码、默认网关、DNS服务器等网络参数
  • ​地址管理​​:通过租约机制(Lease Time)控制IP地址的有效期,支持地址回收与复用,避免资源浪费
  • ​兼容性​​:支持与静态IP设备共存,并兼容早期的BOOTP协议

​地址分配方式​

  • ​动态分配​​(Dynamic Allocation):临时分配带租期的IP地址,到期后可回收(最常见方式)
  • ​自动分配​​(Automatic Allocation):永久分配固定IP地址给特定设备
  • ​手动分配​​(Manual Allocation):管理员手动指定IP地址,DHCP仅负责告知客户端

2.5.2 DHCP工作原理(DORA流程)

DHCP通过四个步骤完成地址分配,称为​​DORA流程​​:

​Discover(发现)​

  • 客户端以广播形式发送DHCP Discover报文,寻找可用DHCP服务器

​Offer(提供)​

  • 服务器响应DHCP Offer,包含推荐的IP地址及配置信息(可能多台服务器响应)

​Request(请求)​

  • 客户端选择其中一个Offer,广播DHCP Request确认所选服务器

​Acknowledge(确认)​

  • 服务器发送DHCP ACK正式分配地址,或DHCP NAK拒绝请求(如地址冲突) 
消息名称消息的作用
发现阶段 (DHCP Discover)客户端寻找 DHCP 服务器,请求分配 IP 地址等网络配置信息
提供阶段 (DHCP Offer)服务器回应 DHCP 客户端请求,提供可被租用的网络配置信息
选择阶段 (DHCP Request)客户端租用选择网络中某一台 DHCP 服务器分配的网络配置信息
确认阶段 (DHCP Ack)DHCP 服务器对 DHCP 客户端的租用选择进行确认
 发现阶段

在本阶段中,客户机寻找 DHCP 服务器,请求获取 IP 资源。

客户机状态:客户机没有 IP 地址,客户机不知道 DHCP 服务器地址。
处理方式:客户机发送 Discover 数据包。

  • 以广播形式发出

  • 不同客户机发送的 Discover 包通过数据包的 MAC 地址来区分。

关键信息解析
源 MAC 地址客户端网卡的 MAC 地址
目的 MAC 地址FF:FF:FF:FF:FF:FF (广播地址)
源 IP 地址0.0.0.0
目的 IP 地址255.255.255.255(广播地址)
源端口号68(UDP)
目的端口号67(UDP)
客户端硬件地址标识客户端网卡的 MAC 地址
客户端 ID客户端网卡的 MAC 地址
DHCP 包类型DHCP Discover

 

提供阶段
  • 在本阶段中,LAN 中所有的 DHCP 服务器在收到客户机发送的 Discover 包后都会对其响应,发送响应数据包(Offer)。Offer 包中包含了响应信息(IP 地址、NETMASK 地址、BROADCAST 地址、DNS 地址等等,以及其他相关信息)。最关键的 IP 地址是由 DHCP 服务器在其地址池中挑选的未使用的 IP 地址。
关键信息解析
源 MAC 地址DHCP 服务器网卡的 MAC 地址
目的 MAC 地址FF:FF:FF:FF:FF:FF(广播地址)
源 IP 地址192.168.110.10
目的 IP 地址255.255.255.255(广播地址)
源端口号67(UDP)
目的端口号68(UDP)
可用的 IP 地址192.168.110.128
子网掩码255.255.255.0
网关地址等其他参数Gateway:192.168.110.2
DNS:192.168.110.30
参数的租约(按实际,如 6 小时)
客户端 MAC客户端网卡的 MAC 地址
DHCP 服务器 ID192.168.110.10(服务器 IP)
DHCP 包类型DHCP Offer

选择阶段
  •  DHCP客户机可能会获取多个DHCP服务器的Offer包,其只能使用第一个获得的Offer包中的 IP作为自己的IP地址其余Offer包将不再处理,并且 DHCP客户端收到服务器的DHCP Offer后,不会直接将该租约配置在TCP/IP参数上,它还须向服务器发送DHCP Request包以确认租用。DHCP Request包含如下关键信息(DHCP服务器IP:192.168.110.10/24,DHCP客户端IP:192.168.110.128/24),以广播的形式发送。DHCP Request包含关键信息及解析如表所示。
关键信息解析
源 MAC 地址DHCP 客户端网卡的 MAC 地址
目的 MAC 地址FF:FF:FF:FF:FF:FF(广播地址)
源 IP 地址0.0.0.0
目的 IP 地址255.255.255.255 (广播地址)
源端口号68(UDP)
目的端口号67(UDP)
客户端 MAC客户端网卡的 MAC 地址
客户端请求的 IP192.168.110.128
服务器 ID192.168.110.10
DHCP 包类型DHCP Request
确认阶段
  • DHCP服务器收到客户端的DHCP Request包后,将通过发送DHCP Ack消息给客户端,完成IP地址租约的签订。DHCP Ack包以广播形式发送。客户端收到该数据包即准备使用服务器提供的IP地址等网络配置参数信息完成TCP/IP参数的配置。没有被选中的服务器则会收回自己分配的IP地址到地址池中,等待下一次分配。DHCP Ack包含的关键信息及解析如表所示。  
关键信息解析
源 MAC 地址DHCP 服务器网卡的 MAC 地址
目的 MAC 地址FF:FF:FF:FF:FF:FF(广播地址)
源 IP 地址192.168.110.10
目的 IP 地址255.255.255.255(广播地址)
源端口号67(UDP)
目的端口号68(UDP)
客户端 IP 地址192.168.110.128
客户端子网掩码255.255.255.0
网关地址等网络参数Gateway:192.168.110.2
DNS:192.168.110.30
网络参数的租约(按实际)
客户端 MAC客户端网卡的 MAC 地址
DHCP 服务器 ID192.168.110.10
DHCP 包类型DHCP Ack
重新登录
  • 为了提高效率,当客户机关闭后重新进入网络时,将直接进入选择阶段,向上一次分配 地址的DHCP服务器发送request信息,询问上一次分配的IP地址能否重新使用。 如果上一次的IP地址没有分配给别的机器,则DHCP服务器会发出一个确认信息,将其分配给该客 户机。 如果上一次分配的地址已经分配给别的机器,则客户机需要重新从第一步开始进行地址申请。 
​租约续期​​:
  • 在租期50%(T1时间点)时,客户端单播请求续约
  • 若未成功,租期87.5%(T2时间点)改为广播请求
  • 租期结束后仍未续约,客户端释放IP并重启DORA流程 
DHCP客户端租用失败的自动配置 

DHCP客户端在发出DHCP Discover广播包后,将花费1秒钟的时间等待DHCP服务器的回应,如果等待1秒钟后没有收到服务器的回应,它会将这个广播包重新广播四次(以2、4、8和16秒为间隔,加上1~1000毫秒随机长度的时间)。四次广播之后,如果仍然不能够收到服务器的回应,则将从169.254.0.0/16网段内随机选择一个IP地址作为自己的TCP/IP参数。

DHCP中继代理服务​

DHCP中继代理(DHCP Relay Agent)是一种网络服务或设备,用于在不同子网之间转发DHCP请求和响应,解决客户端与服务器不在同一广播域时的IP地址分配问题。

核心作用​

​跨子网地址分配​
DHCP客户端通过​​广播​​发送请求(如DHCP Discover),但广播报文无法跨越路由器到达其他子网。中继代理将客户端的广播请求转换为​​单播​​,转发至远程DHCP服务器,实现跨子网通信

工作原理(以IP分配为例)​
  1. ​客户端广播请求​
    客户端发送​​DHCP Discover​​广播报文,中继代理通过监听接口接收请求

  2. ​中继代理处理与转发​

    • ​填充giaddr​​:将客户端子网信息写入报文的giaddr字段。
    • ​单播转发​​:将修改后的报文以单播形式发送至预配置的DHCP服务器
  3. ​服务器响应与回传​

    • 服务器根据giaddr选择地址池,生成​​DHCP Offer​​单播回复至中继代理。
    • 中继代理将Offer广播回客户端子网,完成后续DHCP Request和ACK交互
  4. ​租约续期优化​
    客户端后续续租请求(DHCP Request)可直接单播至服务器,无需中继代理参与,减少网络开销

2.5.3 DHCP服务常用文件及参数解析 

主配置文件/etc/dhcp/dhcpd.conf 
配置文件结构​

DHCP主配置文件(/etc/dhcp/dhcpd.conf)由三部分组成:​参数​​(全局/局部)、​​选项​​(option)和​​声明​​(如subnet、host),三者共同定义IP分配规则。

核心组件解析与示例​
​1. 参数(Parameters)​
  • ​作用​​:定义DHCP服务的行为特性(如租约时间、动态更新策略等)。
  • ​分类​​:
    • ​全局参数​​:在声明外部定义,对所有作用域生效。
    • ​局部参数​​:在声明内部定义,仅作用于当前声明范围。

​常用参数示例​

# 全局参数
ddns-update-style interim;          # 启用DNS动态更新
default-lease-time 3600;             # 默认租约1小时(单位:秒)
max-lease-time 7200;                # 最大租约2小时# 局部参数(在subnet声明内)
subnet 192.168.1.0 netmask 255.255.255.0 {range 192.168.1.100 192.168.1.200;ignore client-updates;           # 忽略客户端发起的DNS更新
}
常用参数功能
ddns-update-style {none|interim|ad-hoc}支持的 DNS 动态更新类型,必选且仅在全局配置中使用。none:不支持动态更新;interim:DNS 互动更新;ad-hoc:特殊更新模式。
{allow|ignore} client-updates允许或忽略客户机更新 DNS 记录,仅在全局配置中使用。
default-lease-time {秒数}指定客户端默认租约时间,全局、局部配置均可使用。
max-lease-time {秒数}指定客户端最大租约时间,在全局、局部配置均可使用。
range {起始 IP 地址} {终止 IP 地址}定义 IP 子网范围,在 subnet 声明中。一个 subnet 中可以有多个 range 参数,且多个 range 所定义的 IP 地址范围不能重复。
hardware Ethernet {MAC 地址}指定网卡的 MAC 地址,用在 subnet 声明中。
fixed-address {IP 地址}分配给客户端固定的 IP(也就是保留地址),在 host 声明中使用。与 hardware 参数成对使用。
server-name 主机名DHCP 服务器的主机名,在全局、局部配置均可使用。
 ​​2. 选项(Options)​
  • ​作用​​:为客户端分配具体的网络参数(如网关、DNS服务器)。
  • ​格式​​:option <参数名> <值>;支持全局或局部作用域

​常用选项示例​​:

option routers 192.168.1.1;                     # 默认网关
option domain-name-servers 8.8.8.8, 8.8.4.4;     # DNS服务器(多个IP逗号分隔)
option subnet-mask 255.255.255.0;                # 子网掩码(可省略,DHCP自动推导)
常见选项功能
option subnet - mask {子网掩码}为客户端指定子网掩码,可以省略
option routers {网关 IP 地址}为客户端指定默认网关,常用
option domain - name - servers {DNS 服务器 IP 地址}为客户端指定 DNS 服务器的 IP 地址,常用
option domain - name {“域名”}为客户端指定 DNS 域名,可以省略
option host - name {“主机名”}为客户端指定主机名,可以省略
option ntp - server {IP 地址}为客户端指定时间服务器的 IP,可以省略
option broadcast - address {广播地址}为客户端指定广播地址,可以省略
3. 声明(Declarations)​
​(1) subnet声明​
  • ​作用​​:定义子网作用域,分配IP地址池及相关参数。
  • ​示例​​:
subnet 10.254.239.32 netmask 255.255.255.224 {range dynamic-bootp 10.254.239.40 10.254.239.60;  # 动态IP范围option routers 10.254.239.1;                       # 子网网关option broadcast-address 10.254.239.31;            # 广播地址
}

​说明​​:

  • range指定可分配的IP地址范围,支持多个不重叠的range。
  • dynamic-bootp表示同时支持DHCP和BOOTP客户端。

​(2) host声明​
  • ​作用​​:为特定主机(基于MAC地址)分配固定IP(保留地址)。
  • ​示例​​:
host printer {hardware ethernet 08:00:07:26:c0:a5;    # 绑定MAC地址fixed-address 192.168.1.50;             # 固定IPoption host-name "office-printer";      # 指定主机名
}

​说明​​:

  • hardware ethernet必须与客户端网卡MAC地址一致。
  • fixed-address可以是IP或域名(需DNS解析)。

​(3) group声明​
  • ​作用​​:将多个主机或子网分组,共享同一组参数或选项。
  • ​示例​
group {option domain-name "corp.example.com";   # 组内共享DNS域名host server1 {hardware ethernet 00:11:22:33:44:55;fixed-address 10.0.1.10;}host server2 {hardware ethernet aa:bb:cc:dd:ee:ff;fixed-address 10.0.1.11;}
}

 ​​(4) range声明​

  • ​作用​​:在subnet中声明可分配的IP地址范围。
  • ​示例​​:
subnet 192.168.2.0 netmask 255.255.255.0 {range 192.168.2.10 192.168.2.100;    # 主IP池range 192.168.2.150 192.168.2.200;   # 扩展IP池(不可与主池重叠)
}

4、综合配置示例​

​场景​​:为办公网(192.168.1.0/24)分配动态IP,并为打印机和服务器保留固定地址。

# 全局配置
ddns-update-style none;                   # 禁用DNS动态更新
default-lease-time 7200;                  # 默认租约2小时
max-lease-time 14400;                     # 最大租约4小时
option domain-name-servers 192.168.1.2;   # 全局DNS服务器# 子网声明
subnet 192.168.1.0 netmask 255.255.255.0 {range 192.168.1.100 192.168.1.200;    # 动态IP范围option routers 192.168.1.1;           # 网关option broadcast-address 192.168.1.255;# 保留地址(host声明)host printer {hardware ethernet 08:00:07:26:c0:a5;fixed-address 192.168.1.50;}host fileserver {hardware ethernet 00:0c:29:ab:cd:ef;fixed-address 192.168.1.10;}
}

http://www.xdnf.cn/news/6035.html

相关文章:

  • CPS联盟+小程序聚合平台分销返利系统开发|小红书番茄网盘CPA拉新推广全解析
  • Golang实践录:在go中使用curl实现https请求
  • 机器学习基础课程-5-课程实验
  • 【Lua】Redis 自增并设置有效期
  • Halcon案例(二):C#联合Halcon回形针以及方向
  • Lighthouse 自定义审计
  • 适用于 iOS 的 开源Ultralytics YOLO:应用程序和 Swift 软件包,用于在您自己的 iOS 应用程序中运行 YOLO
  • AI智能体 | 使用Coze一键制作“假如书籍会说话”视频,18个作品狂吸17.6万粉,读书博主新标杆!(附保姆级教程)
  • LeetCode 820 单词的压缩编码题解
  • Java多线程实现:Thread、Runnable与Callable详解
  • 双向长短期记忆网络-BiLSTM
  • 鸿蒙OSUniApp打造多功能图表展示组件 #三方框架 #Uniapp
  • 行项目违反范围截止值
  • electron结合vue,直接访问静态文件如何跳转访问路径
  • 【IPMV】图像处理与机器视觉:Lec11 Keypoint Features and Corners
  • 以太网供电(PoE)交换机与自愈网络功能:打卡系统的得力助手
  • 基于 Spring Boot 瑞吉外卖系统开发(十四)
  • Vue 和 React 状态管理的性能优化策略对比
  • 数据结构中的高级排序算法
  • Linux内核可配置的参数
  • 单片机-STM32部分:14、SPI
  • 查询公网IP地址的方法:查看自己是不是公网ip,附内网穿透外网域名访问方案
  • 构建优雅对象的艺术:Java 建造者模式的架构解析与工程实践
  • HarmonyOs开发之———使用HTTP访问网络资源
  • Eslint和perrier的作用
  • CSS盒子模型:Padding与Margin的适用场景与注意事项
  • npm 报错 gyp verb `which` failed Error: not found: python2 解决方案
  • 【漫话机器学习系列】259.神经网络参数的初始化(Initialization Of Neural Network Parameters)
  • 【Java面试题】——this 和 super 的区别
  • PHP黑白胶卷底片图转彩图功能 V2025.05.15