服务器DHCP怎么下发?

下面我将从原理、配置、故障排查三个方面详细解释。

一、核心原理:DHCP的“四步握手”

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服务器(下发什么?)

要完成下发,服务器端必须正确配置,主要配置项就是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-serverdhcpd

安装软件包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.1192.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)在客户端或交换机上抓包,过滤bootpdhcp,看DORA四个包走到了哪一步,非常直观有效。

总结一下:DHCP下发是一个“客户端广播请求 -> 服务器响应并携带配置 -> 客户端确认” 的自动化过程,作为管理员,你的核心工作就是正确配置和维护好DHCP服务器,并确保网络路径畅通

文章摘自:https://idc.huochengrm.cn/fwq/24945.html

评论