Linux 里配置DHCP 服务器
一:DHCP 原理
1.1 概述
DHCP(Dynamic Host Configuration Protocol ) 动态主机配置协议
有Internet 工作任务小组设计开发
专门用于TCP/IP 网络中的计算机自动分配TCP/IP 参数的协议
1.2 DHCP 的优点
减少管理员的工作量
避免输入错误的可能
避免IP地址冲突
当更改IP地址段,不需要重新配置每个用户的地址
提高的 IP 地址的利用率
方便客户端的配置
1.3 DHCP 的分配方式
自动分配:分配到一个IP地址后 永久使用
手动分配:有DHCP服务器管理员专门制定IP地址
动态分配:使用完释放该IP,供其他客户机使用
1.4 DHCP 的租约过程
客户机从DHCP 服务器获得IP地址的过程称为DHCP 的租约过程
分为四个步骤
(1) 客户机请求IP地址
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
此时DHCP客户机以广播方式发送DHCP Discover发现信息来寻找DHCP服务器

(2) 服务器响应
DHCP 服务器接收到来自客户机请求IP地址的信息时,在自己 的IP 地址池中查找是否有合法的IP地址提供给客户机
如果有,DHCP 服务器将此IP 地址做上标记,加入 DHCP Offer 的消息中,然后广播一则DHCP Offer 消息

(3)客户机选择IP 地址
DHCP 客户机从接收到的 第一个 DHCP Offer 消息中提取IP 地址,发出IP地址 的DHCP 服务器将改地址保留,这样该地址就不能再分配给另一个DHCP客户机

(4) 服务器确定租约
DHCP 服务器接收到DHCP Request 消息后,以DHCP ACK 消息的形式向客户机广播成功确认,该消息包含IP地址的有效租约和其他可配置的信息
当客户机收到DHCP ACK 消息 时,配置IP地址,完成TCP /IP 的初始化
1.5 重新登录
DHCP 客户机每次重新登录网络时,不需要发送DHCP Discover 信息 ,而是直接发送包含前一次分配的IP地址的 DHCP Request请求信息
跟新租约
当DHCP 服务器向客户机出租的IP地址租期达到50% 时,就需要更新租约
客户机直接向提供租约的服务器发送DHCP Request 包, 要求更新现有的地址租约

二: 配置DHCP 服务
DHCP 服务
- 为大量客户机自动分配地址,提供集中管理
- 减轻管理和维护成本,提高网络配置效率
可分配的地址信息主要包括
- 网卡的 IP 地址,子网掩码
- 对应的网络地址,广播地址
- 默认网关地址
- DNS 服务器地址
# DHCP 服务端使用 UDP 67 端口, DHCP 客户端使用 UDP 68
2.1 实验拓扑
DHCP 服务器 :192.168.23.10 /24
DHCP中继: LSW2
pc 1 分配固定 ip 192.168.23.108 /24 ,vlan 100
PC2 valn 10
PC3 vlan20

2.2 虚拟机配置
[root@localhost ~]# yum -y install dhcp #下载软件包
[root@localhost ~]# rpm -qc dhcp #查看dhcp 的配置文件
/etc/dhcp/dhcpd.conf
[root@localhost ~]# cd /etc/dhcp/ 4
[root@localhost dhcp]# ls dhcpd.conf
dhcpd.conf
[root@localhost dhcp]# cp \
> /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example \
> /etc/dhcp/dhcpd.conf #复制模板文件
vim /etc/dhcp/dhcpd.conf #注意 dhcp 配置文件 是 /etc/dhcp/dhcpd.conf option domain-name "example.org"; #指定域名 option domain-name-servers 8.8.8.8; #指定dns 服务器地址 default-lease-time 600; #默认租约600s max-lease-time 7200; #最大租约7200s ddns-update-style none; #禁用dns 动态更新,可以加快dns 的响应速度 subnet 192.168.23.0 netmask 255.255.255.0 { #声明要分配的网段地址 range 192.168.23.100 192.168.23.200; #设置地址池 option routers 192.168.23.254; #指定默认网关 } #要先设置dhcp 所在的网段 subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; option routers 192.168.10.254; } subnet 192.168.20.0 netmask 255.255.255.0 { range 192.168.20.100 192.168.20.200; option routers 192.168.20.254; } host hostname { #指定需要分配固定Ip地址的客户机地址 hardware ethernet 54:89:98:41:0A:22; #指定该主机的MAC地址。每8位)以冒号:分隔 (这里是16进制数 ,每个占0.5 字节,4位) fixed-address 192.168.23.108; #指定保留给该主机的IP地址 } #host 主机声明(给单机分配固定IP地址) :wq [root@localhost dhcp-4.2.5]# systemctl restart dhcpd #重启dhcp 服务 [root@localhost ~]# systemctl enable dhcpd [root@localhost dhcp-4.2.5]# systemctl stop firewalld.service #关闭防火墙 [root@localhost dhcp-4.2.5]# setenforce 0 #设置 selinux [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改网卡配置
...... IPADDR=192.168.23.10 #虚拟机ip地址 GATEWAY=192.168.23.254 #将网关修改为 192.168.23.254
.....
:wq
[root@localhost dhcp]# systemctl restart network #重启网卡
2.3 vmware 设置
2.3.1 修改虚拟网络编辑器,将虚拟网卡 vmnet1 设置为仅主机模式,不使用dhcp分配


2.3.2 设置虚拟机的网络适配器
将网络适配器选择为 自定义(u):特定虚拟网络 ,vmnet1 仅主机模式

2.4 宿主机设置
宿主机设置vmnet 1 网卡属性,设置 ip v4 地址(192.168.23.188)


2.5 ensp 配置
2.5.1 cloud 设置
先添加UDP,再添加 vmnet 1 ,出端口号设置为2 设置为 双向通道


2.5.2 设置LSW1
与交换机相连的接口设置为 trunk 口, 与主机相连的接口设置为access 口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [SW1]v b 10 20 100 [sw1]int e0/0/2 [sw1-Ethernet0/0/2]p l a [sw1-Ethernet0/0/2]p d v 10 [sw1-Ethernet0/0/2]int e0/0/3 [sw1-Ethernet0/0/3]p l a [sw1-Ethernet0/0/3]p d v 20 [sw1-Ethernet0/0/3]int e0/0/4 [sw1-Ethernet0/0/4]p l a [sw1-Ethernet0/0/4]p d v 100 [sw1-Ethernet0/0/4]int e0/0/1 [sw1-Ethernet0/0/5]p l a [sw1-Ethernet0/0/5]p d v 100 [sw1-Ethernet0/0/5]int e0/0/1 [sw1-Ethernet0/0/1]p l t [sw1-Ethernet0/0/1]p t a v a |
2.5.3 三层交换机LSW2 设置
设置dhcp 中继
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [sw2]dhcp enable #开启dhcp 服务 [sw1]v b 10 20 100 [sw2]int g0/0/1 [sw2-GigabitEthernet0/0/1]p l t [sw2-GigabitEthernet0/0/1]p t a v a #将与交换机相连的设置为 trunk 口 [sw2]int vlanif 100 [sw2-Vlanif10]ip add 192.168.23.254 24 [sw2-Vlanif10]dhcp relay serv [sw2-Vlanif10]dhcp relay server-ip 192.168.23.10 #设置dhcp 中继 [sw2]int vlanif 10 [sw2-Vlanif10]ip add 192.168.10.254 24 [sw2-Vlanif10]dhcp relay serv [sw2-Vlanif10]dhcp relay server-ip 192.168.23.10 [sw2]int vlanif 20 [sw2-Vlanif20]ip add 192.168.20.254 24 [sw2-Vlanif20]dhcp relay serv [sw2-Vlanif20]dhcp relay server-ip 192.168.23.10 |
2.6 获取 dhcp

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现