下面我将从原理、配置、故障排查三个方面详细解释。
DHCP下发IP地址的过程,通常被称为DORA过程,包含四个关键的数据包交互:
1、DHCP Discover(客户端发现)
客户端(新接入网络的电脑、手机等)启动后,向整个网络广播一条消息“这里有没有DHCP服务器?我需要一个IP地址!”
源IP0.0.0.0
目标IP255.255.255.255
2、DHCP Offer(服务器提供)
网络中的DHCP服务器收到Discover广播后,会从自己的地址池中挑选一个可用的IP地址,暂时保留,然后向客户端广播一条回复“我是服务器,我可以给你提供IP地址192.168.1.100,租期是X小时,网关和DNS是...”
* 此时客户端还没有真正获得这个IP。
3、DHCP Request(客户端请求)
客户端可能会收到多个服务器发来的Offer(如果网络中有多个DHCP服务器),它会选择其中一个(通常是第一个收到的),然后再次向全网广播“我接受服务器A提供的这个IP地址(192.168.1.100),我要使用它!”
这个广播有两个作用一是确认使用哪个Offer,二是通知其他DHCP服务器收回它们预留的IP。
4、DHCP Acknowledgement(服务器确认)
被选中的DHCP服务器收到Request后,发送最后的确认广播“好的,IP地址192.168.1.100 正式分配给你,租约开始计时,这是完整的配置信息。”
* 至此,客户端才正式将192.168.1.100 配置为自己的IP,并开始使用服务器下发的其他参数。
整个过程是广播进行的,因为客户端在最开始时根本没有IP地址。
为了帮助你更直观地理解这个交互过程,我为你绘制了以下流程图:
flowchart TD
A[客户端启动/网络连接] --> B[广播发送 DHCP Discover<br>“我需要IP!”];
B --> C[DHCP服务器收到 Discover];
C --> D[广播回复 DHCP Offer<br>“我给你这个IP,参数是...”];
D --> E[客户端收到 Offer];
E --> F{是否有多个Offer?};
F -- 是 --> G[选择最先收到的Offer];
F -- 否 --> H;
G --> H[广播发送 DHCP Request<br>“我接受这个IP!”];
H --> I[其他DHCP服务器<br>收回预留IP];
H --> J[目标DHCP服务器收到 Request];
J --> K[广播发送 DHCP ACK<br>“确认分配,租约开始”];
K --> L[客户端配置IP及网络参数<br>上网];
I --> M[流程结束];要完成下发,服务器端必须正确配置,主要配置项就是DHCP作用域(Scope) 中的参数:
IP地址池可以分配给客户端的IP地址范围(如192.168.1.100 ~192.168.1.200)。
子网掩码定义网络的大小(如255.255.255.0)。
默认网关客户端访问外网的出口路由器IP(如192.168.1.1)。
DNS服务器负责域名解析的服务器地址(如8.8.8.8,114.114.114.114)。
租约期限IP地址的合法使用时间(如8小时、1天),到期前客户机会尝试续约。
其他选项如域名、WINS服务器等。
配置示例:
1、在Windows Server上(图形界面):
* 安装“DHCP服务器”角色。
* 打开“DHCP管理器”。
* 右键点击IPv4,选择“新建作用域”。
* 按照向导,依次设置名称、IP范围、排除地址(不分配的IP)、租期、网关、DNS等。
2、在Linux(如Ubuntu/CentOS,使用isc-dhcp-server 或dhcpd):
安装软件包sudo apt-get install isc-dhcp-server (Ubuntu)
编辑主配置文件/etc/dhcp/dhcpd.conf
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 domain-name-servers 8.8.8.8, 8.8.4.4; # DNS
option subnet-mask 255.255.255.0; # 子网掩码
default-lease-time 86400; # 默认租期(秒)
max-lease-time 172800; # 最大租期
} 重启服务sudo systemctl restart isc-dhcp-server
3、在家用路由器上(最常见):
* 登录路由器管理界面(通常通过192.168.1.1 或192.168.0.1)。
* 找到“DHCP服务器”或“LAN设置”选项。
* 启用DHCP服务器,设置起始地址、结束地址、租期、网关(通常是路由器自身IP)、DNS。
客户端通常设置为“自动获取IP地址” 即可。
验证方法(以Windows为例):
1、 打开命令提示符(CMD)。
2、 输入ipconfig /all。
3、 查看连接的网络适配器,你会看到:
IPv4 地址. . . . . . . . . . . . : 192.168.1.100(这是DHCP下发的)
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
* 以及DHCP服务器地址、租约获得/过期时间、网关、DNS等所有下发信息。
手动释放和重新获取:
ipconfig /release释放当前IP(IP会变成169.254.x.x 这种无效应地址)。
ipconfig /renew重新发起一次完整的DORA过程,获取新IP。
如果客户端无法获取IP(ipconfig看到169.254.x.x),可能的原因有:
1、物理/链路问题:网线没插好、Wi-Fi没连接。
2、DHCP服务未运行:服务器上的DHCP服务没有启动。
3、地址池耗尽:所有可用IP都已分配出去。
4、网络中存在多个DHCP服务器:特别是违规接入了家用路由器,导致地址冲突,企业网络会使用DHCP Snooping 技术来防止此问题。
5、防火墙阻止:服务器或客户端的防火墙阻断了DHCP广播包(UDP 67/68端口)。
6、作用域配置错误:网络号、掩码配置错误,导致服务器认为客户端不在自己服务的子网内。
排查思路:
服务器端检查服务状态、查看日志(Windows事件查看器中的“DhcpServer”日志;Linux的/var/log/syslog),确认是否有来自客户端的请求记录。
网络端使用抓包工具(如Wireshark)在客户端或交换机上抓包,过滤bootp 或dhcp,看DORA四个包走到了哪一步,非常直观有效。
总结一下:DHCP下发是一个“客户端广播请求 -> 服务器响应并携带配置 -> 客户端确认” 的自动化过程,作为管理员,你的核心工作就是正确配置和维护好DHCP服务器,并确保网络路径畅通。
文章摘自:https://idc.huochengrm.cn/fwq/24945.html
评论