二、网络服务配置
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 服务器 ID | 192.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 地址 |
客户端请求的 IP | 192.168.110.128 |
服务器 ID | 192.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 服务器 ID | 192.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分配为例)
-
客户端广播请求
客户端发送DHCP Discover广播报文,中继代理通过监听接口接收请求 -
中继代理处理与转发
- 填充giaddr:将客户端子网信息写入报文的giaddr字段。
- 单播转发:将修改后的报文以单播形式发送至预配置的DHCP服务器
-
服务器响应与回传
- 服务器根据giaddr选择地址池,生成DHCP Offer单播回复至中继代理。
- 中继代理将Offer广播回客户端子网,完成后续DHCP Request和ACK交互
-
租约续期优化
客户端后续续租请求(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; # 固定IP
option 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;
}
}