Linux DHCP地址管理服务器应用与管理

引导

  • 了解DHCP与BOOTP的区别与联系
  • 了解DHCP服务器的功能和工作原理
  • 熟悉DHCP服务器的基本术语
  • 掌握DHCP服务器的安装和启停控制
  • 掌握DHCP服务器的配置和测试

1. DHCP服务基础

1.1 DHCP协议与架构

  • 功能:动态分配IP地址、子网掩码、网关、DNS等网络参数
  • 与BOOTP的关系
    • DHCP是BOOTP的增强版,引入"租约"概念(IP地址非永久分配)
    • 兼容BOOTP客户端
  • C/S架构
    • 服务端:监听UDP 67端口
    • 客户端:监听UDP 68端口
    • 双机热备:使用UDP 546端口(需手动开启)

1.2 客户端请求流程(4个阶段)

  1. Discover(搜索):客户端广播查找可用DHCP服务器
  2. Offer(提供):服务器响应可用IP地址(广播回复)
  3. Request(选择):客户端确认选择的服务器/IP(广播通知)
  4. ACK(确认):服务器分配租约(IP+租期)

跨网段场景:需通过DHCP中继代理(或支持中继的路由器)转发请求

1.3 核心术语

  • 作用域(Scope):可分配的IP地址范围(如192.168.0.0/24
  • 排除范围(Exclusion):保留不分配的IP(如服务器固定IP)
  • 地址池(Pool):作用域排除后剩余的可用IP范围
  • 租约(Lease):客户端使用动态IP的期限(默认1天)
  • 预约(Reservation):基于MAC地址分配固定IP

2. 安装与配置DHCP服务器

2.1 安装dhcpd服务

# 安装DHCP服务
yum install -y dhcp

# 查看关键文件
rpm -ql dhcp | grep -E 'bin|conf'
# 输出示例:
# /etc/dhcp/dhcpd.conf      # 主配置文件
# /usr/sbin/dhcpd           # 服务程序
# /usr/sbin/dhcrelay        # 中继代理程序

2.2 启动服务与防火墙

# 启动服务并设置开机自启
systemctl start dhcpd
systemctl enable dhcpd

# 开放防火墙端口
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --add-port=67/udp --permanent
firewall-cmd --add-port=68/udp --permanent
firewall-cmd --reload

2.3 配置文件结构

配置文件 /etc/dhcp/dhcpd.conf 分为两部分:

  • 全局配置:对整个DHCP服务器生效
  • 子网声明(subnet):定义特定网段的地址池和参数

初始配置:需从模板复制配置文件:

cp /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

3. 配置详解

3.1 全局参数配置

# 基本设置
ddns-update-style interim;  # DNS动态更新模式(interim|none|ad-hoc)
ignore client-updates;       # 忽略客户端更新DNS记录
default-lease-time 86400;    # 默认租约时间(秒)
max-lease-time 604800;       # 最大租约时间(秒)
authoritative;               # 声明本服务器为权威DHCP(可选)

# 网络参数
option domain-name "cqcet.edu.cn";            # 默认搜索域
option domain-name-servers 114.114.114.114;   # 默认DNS服务器

3.2 子网声明(subnet)

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.50 192.168.0.150;         # 地址池范围
    option routers 192.168.0.1;               # 网关地址
    option subnet-mask 255.255.255.0;         # 子网掩码
    option broadcast-address 192.168.0.255;   # 广播地址(可选)
}

3.3 主机预约(host)

host dxzweb {                       # 主机标识(自定义)
    hardware ethernet 00:50:56:C0:00:01;  # 客户端MAC地址
    fixed-address 192.168.0.50;           # 分配的固定IP
}

注意host 声明是全局配置,不要嵌套在 subnet

3.4 组配置(group)

group {
    option routers 192.168.0.1;     # 组内公共参数

    host pc1 {                      # 组内主机1
        hardware ethernet MAC1;
        fixed-address 192.168.0.100;
    }

    host pc2 {                      # 组内主机2
        hardware ethernet MAC2;
        fixed-address 192.168.0.101;
    }
}

4. 客户端配置

4.1 Linux客户端

# 修改网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0

# 关键配置项:
BOOTPROTO="dhcp"   # 启用DHCP
ONBOOT="yes"       # 开机启动

# 重启网络服务
systemctl restart network

4.2 Windows客户端

  1. 打开 控制面板 > 网络和共享中心
  2. 选择网卡 → 属性Internet协议版本4 (TCP/IPv4)
  3. 勾选 自动获得IP地址自动获得DNS服务器地址
  4. 命令行操作:
    ipconfig /release  # 释放IP
    ipconfig /renew    # 重新获取IP
    ipconfig /all      # 查看详细配置
    

4.3 验证与排查

  • 服务端租约文件
    cat /var/lib/dhcpd/dhcpd.leases
    # 输出示例:
    # lease 192.168.0.100 {
    #   starts 5 2024/06/01 10:00:00;
    #   ends 6 2024/06/02 10:00:00;
    #   hardware ethernet 00:50:56:C0:00:01;
    #   client-hostname "pc1";
    # }
    
  • 客户端验证
    • Linux:ip addr show eth0
    • Windows:ipconfig /all

5. DHCP中继代理

5.1 启用中继

# 在连接多个子网的路由器/主机上执行
dhcrelay -i eth1 -i eth2 192.168.0.254  # 指向DHCP服务器IP

参数说明
-i eth1:监听接口1的子网请求
192.168.0.254:DHCP服务器地址

5.2 路由器配置

  • 若使用硬件路由器,需开启 DHCP中继功能 并指定DHCP服务器IP

注意:DHCP服务器需配置多个 subnet 声明覆盖所有子网


故障排查要点

  1. 检查防火墙是否开放UDP 67/68端口
  2. 确认 dhcpd 服务状态:systemctl status dhcpd
  3. 查看日志:journalctl -u dhcpd
  4. 验证配置文件语法:dhcpd -t