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

DHCP 服务器

文章目录

  • DHCP 服务器
    • DHCP 服务介绍
    • DHCP 通信过程
    • 多 DHCP 服务器场景
    • DHCP 服务器部署
      • 安装 DHCP 软件包
      • 文件配置
      • 启用并启动服务
      • 客户端配置
    • 基于 MAC 地址的 IP 预留
      • 配置步骤

DHCP 服务器

DHCP 服务介绍

DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一种应用于局域网的网络协议,采用 UDP 协议和 C/S 模式,用于集中管理和分配 IP 地址等网络参数。

  1. 核心功能:为网络中的主机动态分配 IP 地址、默认网关、DNS 服务器地址、子网掩码等网络参数,实现网络配置的自动化,提升地址使用率 。比如在大型公司局域网中,员工的设备接入网络时可自动获取 IP 等参数,无需手动配置。
  2. 协议版本:主要有用于 IPv4 网络的 DHCPv4 和用于 IPv6 网络的 DHCPv6,本文重点介绍 DHCPv4。
  3. 通信端口:DHCP 服务器使用 67/udp 端口,DHCPv4 客户端使用 68/udp 端口,DHCPv6 客户端使用 546/udp 端口 。
  4. 分配方式
    • 自动分配:客户端首次获取到 IP 地址后永久使用。
    • 手动分配:由管理员指定 IP 地址。
    • 动态分配:客户端暂时使用 IP 地址,使用完毕或租约到期后释放,供其他客户端使用,能有效解决 IP 地址不足的问题。

DHCP 通信过程

  1. 发现阶段(DISCOVER)
    • 客户端未分配 IP 时,通过网卡向广播地址255.255.255.255发送DHCPDISCOVER数据包。
    • 限制:路由器默认不转发该广播,需 DHCP 服务器与客户端在同一物理网络,或配置DHCP 中继代理转发消息。
  2. 提供阶段(OFFER)
    • DHCP 服务器接收DHCPDISCOVER后,发送DHCPOFFER数据包响应。
    • 包含内容:服务器自身 IP、分配给客户端的 IP、IP 租用期限、默认网关、DNS 服务器等参数。
  3. 请求阶段(REQUEST)
    • 客户端收到DHCPOFFER后,广播DHCPREQUEST数据包,确认接受目标服务器的 IP 配置。
    • 必要性:网络中可能存在多台 DHCP 服务器,该数据包需指定目标服务器 IP,避免冲突。
  4. 确认阶段(ACK)
    • 目标 DHCP 服务器接收DHCPREQUEST后,发送DHCPACK数据包,确认客户端对该 IP 的独占使用权(至租约到期)。

租约续约流程

  1. 租约到期前,客户端主动向 DHCP 服务器发送DHCPREQUEST(renew)数据包申请续约。
  2. 服务器同意后,回复DHCPACK(renew)数据包,延长租约;若拒绝,客户端需重新请求新 IP。

多 DHCP 服务器场景

冲突处理机制

  1. 首次分配 IP:客户端收到多台服务器的DHCPOFFER后,仅接受一台的配置,广播DHCPREQUEST指定目标服务器,其他服务器释放预留 IP。
  2. 租约续约
    • 非权威服务器:忽略未知 IP 的DHCPREQUEST
    • 权威服务器:若请求 IP 在自身管理范围但未记录,发送DHCPNAK拒绝,客户端需重新申请新 IP。
  3. 默认状态:DHCP 服务器默认是非权威的,避免接管权威服务器的 IP 地址。

DHCP 服务器部署

安装 DHCP 软件包

[root@server ~ 10:11:58]# yum install -y dhcp

文件配置

配置参数说明

参数作用
subnet ... netmask ...定义管理的子网及子网掩码
range指定可分配的 IP 地址范围
option routers设置客户端的默认网关
option broadcast-address设置子网广播地址
option domain-name-servers指定 DNS 服务器 IP
option domain-search指定 DNS 域搜索列表(用于简化域名访问)
default-lease-time客户端未指定租约时的默认有效期(秒)
max-lease-time服务器允许的最长租约有效期(秒)
authoritative声明服务器对该子网的 IP 分配具有权威性
[root@server ~ 10:11:58]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
[root@server ~ 10:13:02]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@server ~ 10:13:52]# vim /etc/dhcp/dhcpd.conf 
[root@server ~ 16:51:37]# cat /etc/dhcp/dhcpd.conf 
# option definitions common to all supported networks...
# 设置域名
option domain-name "yang.cloud";
#设置DNS
option domain-name-servers 223.5.5.5, 223.6.6.6;#默认租约时间
default-lease-time 600;
#最大租约时间
max-lease-time 7200;#日志级别
log-facility local7;#配置DHCP池
subnet 10.1.8.0 netmask 255.255.255.0 {range 10.1.8.101 10.1.8.130;#option domain-name-servers ns1.internal.example.org;#option domain-name "internal.example.org";option routers 10.1.8.2;option broadcast-address 10.1.8.255;#default-lease-time 600;#max-lease-time 7200;
}
# 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.
#根据Mac地址配置固定IP
host fantasia {hardware ethernet 08:00:07:26:c0:a5;fixed-address fantasia.fugue.com;
}

启用并启动服务

[root@server ~ 10:39:41]# systemctl enable dhcpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@server ~ 10:39:55]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server DaemonLoaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)Active: active (running) since 四 2025-09-25 10:39:55 CST; 12s ago
...Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)

客户端配置

在客户端添加一张NAT网卡

[root@client ~ 10:41:26]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.11/24 fe80::20c:29ff:fef5:b10b/64 
ens37            UP             10.1.8.101/24 fe80::fef1:2cec:159a:4343/64 

基于 MAC 地址的 IP 预留

应用场景

为 Web 服务器、数据库服务器等需要固定 IP 的设备,绑定 MAC 地址与 IP,确保每次分配相同 IP。

配置步骤

查看客户端 MAC 地址

[root@client ~ 11:08:28]# ip -br link 
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            UP             00:0c:29:f5:b1:0b <BROADCAST,MULTICAST,UP,LOWER_UP> 
ens37            UP             00:0c:29:f5:b1:15 <BROADCAST,MULTICAST,UP,LOWER_UP> 

修改 DHCP 服务器配置

/etc/dhcp/dhcpd.conf末尾添加

# 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.
#根据Mac地址配置固定IP
host client.cloud {hardware ethernet 00:0c:29:f5:b1:15;
# 预留的固定IP为10.1.8.100fixed-address 10.1.8.100;
}

重启 DHCP 服务

[root@server ~ 11:08:51]# systemctl restart dhcpd

客户端验证

[root@client ~ 11:09:33]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.11/24 fe80::20c:29ff:fef5:b10b/64 
ens37            UP             10.1.8.100/24 fe80::fef1:2cec:159a:4343/64 
http://www.dtcms.com/a/405783.html

相关文章:

  • K8s学习笔记(七) yaml
  • K8S的StorageClass使用节点本地LVM逻辑卷怎么进行PVC扩容
  • 软件开发公司如何通过 UI 设计服务打造差异化竞争力
  • 【源码剖析】5-生产者-RecordAccumulator分析
  • PHP编程基础
  • 单片机 | 基于51单片机的摇摇棒设计全解析
  • 从零开始部署Android环境的Jenkins CI/CD流水线(docker环境,Win系统)
  • HttpSessionBindingListener
  • AndroidEventBus 发布者发布一次订阅者接收到多次问题
  • Unity开发CI/CD工具Jenkins的安装(Windows10)
  • 按键精灵安卓/ios辅助工具,脚本开发新手教程ui界面介绍
  • Machine Learning HW4 report: 语者识别 (Hongyi Lee)
  • Android 系统源码级进程保活全方案:从进程创建到后台防护
  • 在hadoop中Job提交的流程
  • 基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
  • 01MemoryOS环境搭建 python3.10
  • 建设部网站职责划定html精美登录界面源码
  • 网站建设基本步骤顺序网站的整体风格
  • Leetcode 146. LRU 缓存 哈希表 + 双向链表
  • VideollaMA 3论文阅读
  • Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
  • 《红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》 第11篇 | 核心网演进终局:从EPC到5GC——微服务与“云原生”
  • k8s中的NetworkPolicy
  • 【大语言模型】大模型后训练入门指南
  • 【初学】使用 node 编写 MCP Server
  • 阿里云云原生挑战官方用例SPL
  • 销售管理软件免费版什么叫seo优化
  • Apache POI 在 Linux 无图形界面环境下因字体配置问题导致Excel导出失败的解决方案
  • 咨询顾问进阶——146页PPT详解麦肯锡-企业管理整合咨询-组织设计方案【附全文阅读】
  • 力扣995. K 连续位的最小翻转次数