当前位置: 首页 > news >正文

Linux 服务:动态主机配置协议(DHCP)实战指南 —— 服务器部署与跨网段配置

Linux 服务:动态主机配置协议(DHCP)实战指南 —— 服务器部署与跨网段配置

一、DHCP服务简介

1. 定义

DHCP(动态主机配置协议)是一种网络协议,用于自动为网络中的主机分配 IP 地址及相关网络参数(如网关、DNS 服务器地址等),简化网络配置管理。

2. 用途
  • 解决 IP 地址资源不足的场景:当子网内主机数量超过可用 IP 地址数量时,通过动态分配实现 IP 地址复用(如 ISP 运营商对家庭用户的网络分配)。
  • 适配 IP 地址频繁变动的网络:对于移动办公、出差设备等需要频繁接入不同网络的场景,自动获取 IP 地址可避免手动配置的繁琐。
3. 可提供的配置信息
  • 网络接口的IP地址和子网掩码;
  • 对应IP的网络地址和广播地址;
  • 默认网关地址;
  • DNS服务器地址。
4. DHCP 分配 IP 地址的过程(DORA 流程)

DHCP 的地址分配通过 4 个关键步骤完成,简称 DORA:

  1. Discover(发现):客户端启动后,通过广播发送DHCP Discover报文,寻找网络中的 DHCP 服务器(目标 IP 为 255.255.255.255,源 IP 为 0.0.0.0)。
  2. Offer(提供):DHCP 服务器收到请求后,从地址池中选择一个未分配的 IP 地址,通过广播发送DHCP Offer报文,包含拟分配的 IP、子网掩码、租约时间等信息。
  3. Request(请求):客户端若接受该 IP,再次广播DHCP Request报文,确认使用该 IP(同时告知其他 DHCP 服务器无需再提供地址)。
  4. Acknowledge(确认):DHCP 服务器收到确认后,广播DHCP ACK报文,正式确认 IP 分配,包含完整的网络参数;若 IP 不可用,则发送DHCP NAK报文拒绝。

在这里插入图片描述

5. 端口
  • 端口:服务器监听 UDP 67 端口,客户端通过 UDP 68 端口回应;
  • DHCPv6:适用于 IPv6 网络,客户端使用 UDP 546 端口。
6. 核心概念
  • DHCP 客户端:需要获取 IP 地址的设备(如电脑、手机);
  • DHCP 服务器:负责分配 IP 地址及参数的服务器;
  • DHCP 中继代理:通常为路由器,用于跨网段转发 DHCP 报文(因 DHCP 报文默认是广播,无法直接跨子网传播);
  • 作用域(Subnet):服务器管理的一个子网范围,包含可分配的 IP 地址段及网络参数;
  • 超级作用域:多个作用域的集合,用于管理多个连续或不连续的子网;
  • 地址池:作用域内可动态分配的 IP 地址范围;
  • 租约:IP 地址的分配有效期,到期前客户端需申请续租;
  • 选项类型:除 IP 地址外的附加配置参数(如 DNS、网关);
  • 保留地址:为特定设备(通过 MAC 地址识别)预留的固定 IP 地址,确保该设备始终获取同一 IP。

二、DHCP服务器搭建(Linux环境)

1. 安装软件包
yum -y install dhcp  # 注意服务名无"d"后缀,与httpd等区分
2. 配置主配置文件
  • 主配置文件路径:/etc/dhcp/dhcpd.conf(默认为空);

  • 参考模板路径:/usr/share/doc/dhcp-server/dhcpd.conf.example

  • 复制模板并修改:

    cp -p /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    vim /etc/dhcp/dhcpd.conf
    
  • 基础配置示例(定义子网、地址池等):

    subnet 192.168.100.0 netmask 255.255.255.0 {  # 定义子网及掩码range 192.168.100.50 192.168.100.150;      # 地址池范围#option domain-name-servers ns1.internal.example.org;  ---定义DNS服务器#option domain-name "internal.example.org";   ---定义域option routers 192.168.100.254;            # 网关(可选)# option domain-name-servers 8.8.8.8;      # DNS服务器(可选,需取消注释)default-lease-time 600;                    # 默认租约时间(秒)max-lease-time 7200;                       # 最大租约时间(秒)
    

}


- 为特定MAC绑定固定IP(保留地址):  
```conf
host desktop30 {  # 自定义主机名hardware ethernet 00:0c:29:0d:1c:a5;  # 目标设备MAC地址fixed-address 172.16.30.60;          # 绑定的固定IP
}
3. 启动服务并设置自启
systemctl restart dhcpd  # 重启服务
systemctl enable dhcpd   # 开机自启
4. 配置防火墙 (可直接关)
firewall-cmd --add-service=dhcp --permanent  # 永久开放DHCP服务
firewall-cmd --reload  # 重载规则
5. 租约记录查看

服务器分配的 IP 租约信息保存在/var/lib/dhcpd/dhcpd.leases文件中,可通过该文件查看已分配的 IP、租约时间等。

三、DHCP客户端配置(Linux环境)

1. 修改网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33  # 网卡文件名因系统而异

修改内容:

BOOTPROTO=dhcp  # 启用DHCP
ONBOOT=yes      # 开机启动网卡
# 删除原有IP、子网掩码、网关、DNS相关行(如IPADDR、NETMASK等)
2. 重启网卡服务
systemctl restart network  # 重启网络服务,使配置生效

四、DHCP中继配置(跨网段分配IP)

场景:通过中继服务器,让不同网段的客户端从同一DHCP服务器获取IP。

1. DHCP服务器配置
  • 网卡模式:NAT模式,IP设为192.168.100.20
  • 修改配置文件,支持目标网段(如192.168.200.0/24):
    # 无需为本地网段(192.168.100.0/24)分配地址,留空
    subnet 192.168.100.0 netmask 255.255.255.0 {
    }# 为中继目标网段配置地址池
    subnet 192.168.200.0 netmask 255.255.255.0 {range 192.168.200.50 192.168.200.100;  # 目标网段地址池option routers 192.168.200.254;        # 目标网段网关(中继服务器IP)default-lease-time 600;max-lease-time 7200;
    }
    
  • 重启服务:
    systemctl restart dhcpd
    
2. DHCP中继服务器配置

服务器搭建需使用“仅主机模式”,避免桥接模式导致IP混乱。

  • 开启IP转发(允许跨网卡转发数据包):

    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf  # 永久生效
    sysctl -p  # 立即生效
    
  • 配置网卡

    • 网卡1(ens33):NAT模式,IP设为192.168.100.254(与DHCP服务器同网段);
    • 网卡2(ens36):仅主机模式,IP设为192.168.200.254(目标网段网关)。
  • 安装DHCP软件包(含中继功能):

    yum -y install dhcp
    
  • 启动中继服务(指向DHCP服务器IP):

    dhcrelay 192.168.100.20  # 192.168.100.20为DHCP服务器IP
    
3. 客户端配置
  • 网卡模式:仅主机模式(与中继服务器ens36同网段);
  • 启用DHCP(同“客户端配置”步骤),自动获取IP(来自192.168.200.0/24网段地址池)。
http://www.lryc.cn/news/619926.html

相关文章:

  • 4.0 vue3简介
  • DAY 44 预训练模型
  • SQL 核心操作全解析:从基础查询到关联关系实战
  • 18. parseInt 的参数有几个
  • 多语言文本 AI 情感分析 API 数据接口
  • Python解包技巧全解析
  • Docker部署RAGFlow:生产环境开启Kibana与ES安全集成指南
  • Celery在Django中的应用
  • 【web站点安全开发】任务3:网页开发的骨架HTML与美容术CSS
  • Pytest+selenium UI自动化测试实战实例(超详细)
  • 第十三节:后期处理:效果增强
  • OpenBMC适配器模式小白学习指南
  • 服务器安全检测和防御技术
  • LeetCode算法日记 - Day 10: x 的平方根、搜索插入位置
  • 大模型微调【1】之入门
  • 农业物联网:现代农业的智慧革命
  • 后端(服务端)的跳转方式-请求转发和重定向
  • 集成电路学习:什么是CV计算机视觉
  • Nginx学习笔记(七)——Nginx负载均衡
  • 深度学习之CNN网络简介
  • 深度学习(4):数据加载器
  • go语言学习笔记
  • 初识神经网络05——构建神经网络3
  • C# 反射入门:如何获取 Type 对象?
  • 深度学习流体力学:基于PyTorch的物理信息神经网络(PINN)完整实现
  • Spring Boot项目通过Feign调用三方接口的详细教程
  • 力扣top100(day02-04)--二叉树 01
  • 阿里云Anolis OS 8.6的公有云仓库源配置步骤
  • 旧版MinIO的安装(windows)、Spring Boot 后端集成 MinIO 实现文件存储(超详细,带图文)
  • oss(阿里云)前端直传