个人用云计算学习笔记 --16(DHCP 服务器)

文章目录

  • [DHCP 服务器知识点整理](#DHCP 服务器知识点整理)
    • [一、DHCP 服务基础](#一、DHCP 服务基础)
      • [1. 服务背景与作用](#1. 服务背景与作用)
      • [2. DHCP 通信过程](#2. DHCP 通信过程)
      • [3. 多 DHCP 服务器机制](#3. 多 DHCP 服务器机制)
    • [二、DHCP 服务器部署与配置](#二、DHCP 服务器部署与配置)
      • [1. 部署前提](#1. 部署前提)
      • [2. 安装与防火墙配置](#2. 安装与防火墙配置)
      • [3. 核心配置(/etc/dhcp/dhcpd.conf)](#3. 核心配置(/etc/dhcp/dhcpd.conf))
      • [4. 配置验证与服务启停](#4. 配置验证与服务启停)
    • [三、DHCP 客户端配置与验证](#三、DHCP 客户端配置与验证)
      • [1. 客户端配置(Linux 系统)](#1. 客户端配置(Linux 系统))
      • [2. 客户端验证](#2. 客户端验证)
    • [四、基于 MAC 地址的 IP 预留](#四、基于 MAC 地址的 IP 预留)
      • [1. 应用场景](#1. 应用场景)
      • [2. 配置步骤](#2. 配置步骤)
        • [(1)获取客户端 MAC 地址](#(1)获取客户端 MAC 地址)
        • [(2)配置 IP 预留(修改服务器 dhcpd.conf)](#(2)配置 IP 预留(修改服务器 dhcpd.conf))
        • (3)重启服务与验证
    • [五、DHCP 中继服务器](#五、DHCP 中继服务器)
    • [六、轻量级 DHCP 工具(Dnsmasq)](#六、轻量级 DHCP 工具(Dnsmasq))
      • [1. 工具特点](#1. 工具特点)
      • [2. 安装与核心配置](#2. 安装与核心配置)
      • [3. Dnsmasq 作为 DHCP 中继](#3. Dnsmasq 作为 DHCP 中继)
      • [4. 客户端验证](#4. 客户端验证)

DHCP 服务器知识点整理

一、DHCP 服务基础

1. 服务背景与作用

  • 静态 IP 分配问题:在大型网络中,静态分配 IP 需避免地址重复,且新系统需手动配置,云环境中难以满足自动化需求。
  • DHCP 核心功能:动态主机配置协议(DHCP)自动分配网络参数,包括 IP 地址、默认网关、DNS 服务器、域及 NTP 服务器,实现集中化管理。
  • 协议版本:分为用于 IPv4 的 DHCPv4 和用于 IPv6 的 DHCPv6,本文重点讲解 DHCPv4。

2. DHCP 通信过程

DHCP 客户端与服务器的交互分为初始分配和租约续约两个阶段,共 6 个关键步骤:

阶段 步骤 详细描述
初始 IP 分配 1. 客户端发送 DISCOVER 客户端通过网卡发送DHCPDISCOVER数据包到广播地址255.255.255.255,因路由器默认不转发该广播,服务器需与客户端同物理网络(或配置 DHCP 中继)
2. 服务器响应 OFFER 服务器接收DHCPDISCOVER后,发送DHCPOFFER数据包,包含自身 IP、分配给客户端的 IP、租约期限及其他网络参数(网关、DNS 等)
3. 客户端发送 REQUEST 客户端收到DHCPOFFER后,广播DHCPREQUEST数据包,指定接受某台服务器的 IP(解决多服务器环境下的选择问题)
4. 服务器发送 ACK 服务器接收DHCPREQUEST后,发送DHCPACK数据包,确认客户端对 IP 的独占使用权至租约到期
租约续约 5. 客户端发起续约请求 租约到期前,客户端发送DHCPREQUEST(renew)数据包请求续约
6. 服务器确认续约 服务器响应DHCPACK(renew)数据包,同意客户端继续使用 IP(共 3 次续约机会)

3. 多 DHCP 服务器机制

  • 部署建议:同一物理网络不建议部署多台 DHCP 服务器,单台即可满足需求。

  • 多服务器交互:

    • 客户端可能收到多台服务器的DHCPOFFER,仅接受一台并通过DHCPREQUEST指定,其他服务器释放预留 IP。
    • 服务器权威性影响续约:非权威服务器忽略未知 IP 的DHCPREQUEST;权威服务器若发现 IP 不在自身管理范围,会发送DHCPNAK,客户端需重新申请 IP。
    • 默认配置:DHCP 服务器默认非权威,避免接管其他权威服务器的 IP。

二、DHCP 服务器部署与配置

1. 部署前提

  • 网络接口要求 :使用ip addr命令确认服务器网络接口配置BROADCAST地址(例:ens160接口的brd 10.1.8.255)。
  • 静态 IP 要求:DHCP 服务器必须配置静态 IP,避免自身 IP 动态变化导致服务异常。

2. 安装与防火墙配置

bash 复制代码
# 1. 安装DHCP服务包
[root@server~]# dnf install -y dhcp-server

# 2. 防火墙放行DHCP服务(临时+永久)
[root@server~]# firewall-cmd --add-service=dhcp
[root@server~]# firewall-cmd --add-service=dhcp --permanent

3. 核心配置(/etc/dhcp/dhcpd.conf)

(1)配置文件来源
  • 系统提供示例文件:

    复制代码
    /usr/share/doc/dhcp-*/dhcpd.conf.example

    可复制为正式配置文件:

    bash 复制代码
    [root@server~]# cp /usr/share/doc/dhcp-*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
(2)典型配置示例与说明
bash 复制代码
[root@server ~ 10:25:51]# vim /etc/dhcp/dhcpd.conf
# 域名
option domain-name "qy.cloud";

# DNS 服务器
option domain-name-servers 223.6.6.6, 223.5.5.5;

# 默认租约时间
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;
}

# 根据Mac地址配置固定IP
host client.laoma.cloud {
  hardware ethernet 00:0c:29:2f:9a:06;
  fixed-address 10.1.8.100;
}

4. 配置验证与服务启停

bash 复制代码
# 1. 验证配置文件语法(返回0表示无错误)
[root@server~]# dhcpd -t
[root@server~]# echo $?  # 检查返回值

# 2. 启用并启动服务
[root@server~]# systemctl enable dhcpd --now

# 3. 查看服务状态
[root@server~]# systemctl status dhcpd

三、DHCP 客户端配置与验证

1. 客户端配置(Linux 系统)

bash 复制代码
# 1. 添加自动获取IP的网络连接(指定接口ens192)
[root@client~]# nmcli connection add con-name dynamic type ethernet ifname ens192

# 2. 激活该连接
[root@client~]# nmcli connection up dynamic

2. 客户端验证

bash 复制代码
# 查看接口IP配置(确认获取到DHCP分配的IP)
[root@client~]# ip addr show ens192

# 示例输出(关键信息):
# inet 10.1.8.150/24 brd 10.1.8.255 scope global dynamic noprefixroute ens192
# valid_lft 597sec preferred_lft 597sec(租约剩余时间)

四、基于 MAC 地址的 IP 预留

1. 应用场景

为特定设备(如 Web 服务器、数据库服务器)分配固定 IP,确保其网络地址稳定。

2. 配置步骤

(1)获取客户端 MAC 地址
bash 复制代码
[root@client~]# ip link show ens192  # 查看ens192接口MAC
# 示例输出:link/ether 00:0c:29:ba:fd:88 brd ff:ff:ff:ff:ff:ff
(2)配置 IP 预留(修改服务器 dhcpd.conf)

/etc/dhcp/dhcpd.conf末尾添加:

bash 复制代码
host client.linux.fun {  # 自定义主机名
    hardware ethernet 00:0c:29:ba:fd:88;  # 客户端MAC地址
    fixed-address 10.1.8.30;              # 预留的固定IP
}
(3)重启服务与验证
bash 复制代码
# 服务器重启DHCP服务
[root@server~]# systemctl restart dhcpd

# 客户端重新激活连接并验证
[root@client~]# nmcli connection up dynamic
[root@client~]# ip addr show ens192  # 确认IP为10.1.8.30

五、DHCP 中继服务器

1. 中继作用

解决 DHCP 客户端与服务器跨广播域(如不同子网、VLAN)的通信问题:客户端广播的DHCPDISCOVER会被三层设备丢弃,中继代理可转发 DHCP 报文。

2. 工作原理

中继在客户端与服务器间转发报文,将客户端的广播报文转为单播发送给服务器,服务器响应的单播报文经中继转发给客户端,交互仍遵循 "发现 - 提供 - 请求 - 确认" 四阶段。

3. 中继部署(以 Linux 为例)

(1)实验环境
主机名 IP 地址 虚拟网络 角色
dhcp-server.linux.fun 10.1.8.10/24 vmnet8 DHCP 服务器
dhcp-relay.linux.fun 10.1.8.20/24、10.1.1.20/24 vmnet8、vmnet1 DHCP 中继
dhcp-client.linux.fun 自动获取 vmnet1 DHCP 客户端
(2)服务器端配置(dhcp-server)
  1. 配置双子网地址池 :在/etc/dhcp/dhcpd.conf中添加10.1.1.0/24子网配置(参考前文 "典型配置")。

  2. 配置路由

    :确保服务器能访问中继的

    复制代码
    10.1.1.20
    bash 复制代码
    [root@dhcp-server~]# nmcli connection modify ens160 ipv4.routes '10.1.1.20/32 10.1.8.20'
    [root@dhcp-server~]# nmcli connection up ens160
(3)中继端配置(dhcp-relay)
  1. 安装中继服务

    bash 复制代码
    [root@dhcp-relay~]# dnf install -y dhcp-relay
  2. 修改中继服务配置

    bash 复制代码
    # 复制服务文件并编辑
    [root@dhcp-relay~]# cp /usr/lib/systemd/system/dhcrelay.service /etc/systemd/system/dhcrelay.service
    [root@dhcp-relay~]# vim /etc/systemd/system/dhcrelay.service
    # 修改ExecStart,指定DHCP服务器IP:
    ExecStart=/usr/sbin/dhcrelay -d --no-pid 10.1.8.10
  3. 启用中继服务

    bash 复制代码
    [root@dhcp-relay~]# systemctl enable dhcrelay.service --now
  4. 开启路由转发

    bash 复制代码
    [root@dhcp-relay~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    [root@dhcp-relay~]# sysctl -p /etc/sysctl.conf  # 生效配置
(4)客户端测试

同 "DHCP 客户端配置与验证" 步骤,确认客户端能跨网段获取 IP。

六、轻量级 DHCP 工具(Dnsmasq)

1. 工具特点

集 DNS 缓存、DHCP 服务器、DHCP 中继、TFTP 服务器于一体,轻量易配置,适用于个人或小型网络。

2. 安装与核心配置

(1)安装 Dnsmasq
bash 复制代码
[root@server~]# dnf install -y dnsmasq
(2)关键配置(/etc/dnsmasq.conf)
bash 复制代码
# 1. IP地址池:10.1.8.50-150,掩码24,租约12小时
dhcp-range=10.1.8.50,10.1.8.150,255.255.255.0,12h

# 2. MAC绑定固定IP(租约45分钟)
dhcp-host=00:0c:29:ba:fd:88,10.1.8.30,45m

# 3. 配置网关
dhcp-option=option:router,10.1.8.2

# 4. 配置DNS服务器
dhcp-option=option:dns-server,218.2.135.1

# 5. 配置域搜索列表
dhcp-option=option:domain-search,linux.fun,example.com

# 6. 配置NTP服务器(可选)
dhcp-option=option:ntp-server,1.2.3.4,1.2.3.5

3. Dnsmasq 作为 DHCP 中继

在中继主机(dhcp-relay)的/etc/dnsmasq.conf中添加:

bash 复制代码
# 转发10.1.1.20接口的DHCP请求到10.1.8.10(DHCP服务器)
dhcp-relay=10.1.1.20,10.1.8.10

启用服务并开启路由转发(同前文 "中继端配置" 步骤)。

4. 客户端验证

同 "DHCP 客户端配置与验证",可通过route -n(查看网关)、cat /etc/resolv.conf(查看 DNS)进一步确认配置生效。

相关推荐
cpsvps2 小时前
容器主机名解析在香港服务器内部网络的调试方案
运维·服务器·网络
Lin_Aries_04212 小时前
部署 Jenkins 服务器
运维·服务器·docker·容器·云计算·jenkins
vortex52 小时前
在 Kali Linux 上配置 MySQL 服务器并实现 Windows 远程连接
linux·数据库·mysql
专注VB编程开发20年2 小时前
C#,VB.net有什么类库可以内存解压rar中某个子文件
运维·服务器·zip·rar·解压·sharpcompress·sevenzipsharp‌
我命由我123453 小时前
Photoshop - Photoshop 根据需要以最佳格式保存照片
学习·ui·课程设计·设计·photoshop·ps·美工
迷迷的k3 小时前
云服务器 + Jenkins 实现项目自动化部署与上线
java·运维·自动化·jenkins
杨云龙UP3 小时前
CentOS 7上离线部署MySQL 8.0.X操作指南(二进制压缩包部署+独立目录部署,不在自动默认路径配置下安装)
linux·运维·服务器·mysql·centos
Duo1J3 小时前
【OpenGL】LearnOpenGL学习笔记28 - 延迟渲染 Deferred Rendering
笔记·学习·图形渲染·着色器
阿里巴巴中间件3 小时前
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
人工智能·阿里云·中间件·云计算