欢迎光临
我们一直在努力

DHCP 服务器

文章目录

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

DHCP 服务器

DHCP 服务介绍

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

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

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

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

    冲突处理机制

  • 首次分配 IP:客户端收到多台服务器的DHCPOFFER后,仅接受一台的配置,广播DHCPREQUEST指定目标服务器,其他服务器释放预留 IP。
  • 租约续约
    • 非权威服务器:忽略未知 IP 的DHCPREQUEST。
    • 权威服务器:若请求 IP 在自身管理范围但未记录,发送DHCPNAK拒绝,客户端需重新申请新 IP。
  • 默认状态: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 Daemon
    Loaded: 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.100
    fixed-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

    赞(0)
    未经允许不得转载:171主机测评 » DHCP 服务器
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址