DHCP服务

一、什么是DHCP

自动分配关键网络参数,包括 IP 地址、子网掩码、网关、DNS 服务器地址。

避免手动设置导致的 IP 地址冲突,实现网络配置的统一管理。

简化网络维护,更换网络参数时无需逐台设备手动修改。

应用场景

  • 家庭路由器默认开启 DHCP 服务,让手机、电脑等设备连网后自动获取配置。
  • 企业局域网中,通过 DHCP 服务器统一管理大量办公设备的网络配置。

DHCP协议

Dynamic Host Configuration Protocol ,动态主机配置协议

作用:动态的进行IP地址分配

服务端的监听端口 67/udp

客户端监听端口 68/udp

网络架构 C/S:client/server

DHCP的分配方式

  • 手动分配:固定不变,工程师进行地址绑定

  • 自动分配:但是不进行地址回收

  • 动态分配:进行地址回收

DHCP的优势

  • 提高配置效率

  • 减少配置错误

DHCP工作流程

DHCP 服务给客户端提供服务的核心是四步握手流程,全程通过广播或单播通信完成,无需手动干预。

第一步:发现阶段(DHCP Discover)

  • 客户端刚接入网络时没有 IP 地址,会发送广播数据包,寻找网络中的 DHCP 服务器。
  • 数据包中包含客户端的 MAC 地址,用于服务器识别设备。

第二步:提供阶段(DHCP Offer)

  • 网络中的 DHCP 服务器收到广播后,会从地址池中挑选一个可用 IP 地址。
  • 服务器向客户端发送包含 IP 地址、子网掩码、网关、DNS 等配置信息的响应数据包。

第三步:请求阶段(DHCP Request)

  • 客户端可能收到多个 DHCP 服务器的 Offer,通常选择第一个收到的配置。
  • 客户端再次发送广播,告知所有 DHCP 服务器自己选择的配置,同时确认使用该 IP。

第四步:确认阶段(DHCP Acknowledge)

  • 被选中的 DHCP 服务器发送确认数据包,正式将 IP 地址等配置分配给客户端。
  • 客户端接收后,即可使用这些参数接入网络,完成服务流程。

注意

​ 同一个网络下不允许存在多个DHCP服务器。(可以部署多台DHCP服务,但IP地址池必须完全不相同,所以就不是在一个网络中了)

DHCP 租约期限

租约期限是 DHCP 服务器规定的 "IP 地址使用权有效期",本质是服务器和客户端的 "约定":在有效期内,客户端可独占该 IP;过期后需重新确认使用权。

租约期限的设置原则

  • 设备在线越稳定,租约可越长(减少网络通信量);
  • 设备流动性越强(如公共 WiFi),租约应越短(快速释放 IP 给新设备);
  • 网络 IP 资源越紧张,租约越短(提高 IP 利用率)

DHCP 租约的核心是 "自动管理",客户端会主动发起更新,无需手动干预

1. 自动续租
  • 触发时间
  1. 租约过半:客户端向原 DHCP 服务器发送 DHCP Request(续租请求)(单播通信,无需广播);
  2. 若第一次请求未收到响应(如服务器故障),则在租约到期前 75%再次尝试;
  • 服务器响应
  1. 服务器同意续租:返回 DHCP ACK,确认延长租约(通常延续原租约时长);
  2. 服务器拒绝续租(如 IP 已分配给其他设备):返回 DHCP NAK,客户端需提前释放 IP,重新发起 IP 获取。
2. 租约过期后:重新获取 IP

若客户端因故障、离线等原因未完成续租,租约到期后:

  • 客户端会立即释放当前 IP,恢复 "无 IP 状态";
  • 重新执行 DHCP 四步握手流程(Discover→Offer→Request→Acknowledge),获取新的 IP 地址(可能是原 IP,也可能是新 IP,取决于服务器地址池状态)。
3. 手动更新(主动释放 / 重新获取)

若需手动刷新 IP(如网络配置变更后),可通过设备命令操作:

Linux:在终端中执行:

复制代码
# Linux(以eth0网卡为例,需替换为实际网卡名如ens33)
dhclient -r eth0  # 释放IP
dhclient eth0     # 重新获取IP

二、DHCP安装与配置

首先要给DHCP服务器配置一个静态IP,

bash 复制代码
nmcli c m ens160(你的网卡名) ipv4.add 192.168.1.253/24 ipv4.method manual

安装DHCP服务软件包

bash 复制代码
yum install -y dhcp-server

配置文件

配置文件存储路径 /etc/dhcp

默认配置文件副本路径 /usr/share/doc/dhcp-4.2.5/

数据文件存储路径 /var/lib/dhcpd

核心配置文件 /etc/dhcp/dhcpd.conf

将副本文件拷贝到 /etc/dhcp中,并修改以下字段

subnet 10.5.5.0 netmask 255.255.255.224 { ##定义分配的网段和子网掩码

range 10.5.5.26 10.5.5.30; ##定义分配地址段的地址范围

option domain-name-servers ns1.internal.example.org;

option domain-name "internal.example.org";

option routers 10.5.5.1; ###定义分配的网关地址

option broadcast-address 10.5.5.31; ###定义地址段的广播地址

default-lease-time 600;

max-lease-time 7200;

}

可以按照主机的MAC地址设置分配固定IP,而不是随机分配

host fantasia {

hardware ethernet 08:00:07:26:c0:a5; ###固定分配地址的主机的MAC地址

fixed-address fantasia.fugue.com; ###需要进行分配的IP地址

}

启动服务

bash 复制代码
systemctl start dhcpd

如果需要配置多个地址池,只需要添加第二个IP分配字段即可,但是要有同网段的网卡作为DHCP服务器IP

例如

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.200; # 地址池

option routers 192.168.1.1; # 网关

option subnet-mask 255.255.255.0; # 子网掩码

}

第二个子网

subnet 192.168.2.0 netmask 255.255.255.0 {

range 192.168.2.100 192.168.2.200;

option routers 192.168.2.1;

}

相关推荐
C_心欲无痕1 小时前
ts - tsconfig.json配置讲解
linux·前端·ubuntu·typescript·json
冰西瓜6002 小时前
国科大2025操作系统高级教程期末回忆版
linux
HIT_Weston2 小时前
93、【Ubuntu】【Hugo】搭建私人博客:面包屑(一)
linux·运维·ubuntu
cuijiecheng20183 小时前
Linux下Beyond Compare过期
linux·运维·服务器
喵叔哟3 小时前
20.部署与运维
运维·docker·容器·.net
HIT_Weston3 小时前
92、【Ubuntu】【Hugo】搭建私人博客:侧边导航栏(六)
linux·运维·ubuntu
CodeAllen嵌入式3 小时前
Windows 11 本地安装 WSL 支持 Ubuntu 24.04 完整指南
linux·运维·ubuntu
期待のcode3 小时前
前后端分离项目 Springboot+vue 在云服务器上的部署
服务器·vue.js·spring boot
AI 智能服务3 小时前
第6课__本地工具调用(文件操作)
服务器·人工智能·windows·php
码农小韩5 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法