Linux服务管理-DHCP

DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,它允许服务器自动地将IP地址和其他网络配置参数分配给网络中的计算机。DHCP极大地简化了网络管理,尤其是当大量设备需要接入网络时,因为它减少了手动配置每个设备的需求。

DHCP的工作原理

  1. DHCP发现(DHCP Discover):当一个新的设备(如计算机、智能手机等)连接到网络时,它会广播一个DHCP发现消息,询问网络中的DHCP服务器它的IP地址和其他网络配置信息。

  2. DHCP提供(DHCP Offer):网络中的DHCP服务器接收到发现消息后,会选择一个可用的IP地址,并通过一个DHCP提供消息将这个地址和其他网络配置信息(如子网掩码、默认网关、DNS服务器地址等)发送给客户端设备。

  3. DHCP请求(DHCP Request):客户端设备接收到提供消息后,会选择一个(通常是第一个收到的)提供的配置,并通过一个DHCP请求消息向服务器确认这个选择。

  4. DHCP确认(DHCP Ack):DHCP服务器接收到客户端的请求后,会发送一个DHCP确认消息,正式将IP地址和其他配置分配给客户端设备。此时,客户端设备就可以使用这个IP地址和其他配置信息接入网络了。

DHCP的优点

  • 简化网络管理:DHCP减少了手动配置每个设备的需求,使得网络管理更加简单和高效。

  • 提高IP地址利用率:DHCP服务器可以动态地分配和回收IP地址,从而提高了IP地址的利用率。

  • 增强网络安全性:通过DHCP,管理员可以集中管理网络配置,包括设置IP地址租期、限制特定设备的网络访问等,从而增强了网络的安全性。

部署DHCP服务

使用yum安装。

bash 复制代码
[root@vm1 ~]# yum -y install dhcp-server
# 查看配置文件
[root@vm1 ~]#  cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example #示例文档
#   see dhcpd.conf(5) man page
#
[root@vm1 ~]#
bash 复制代码
# 修改vm1的地址为192.168.6.254:
[root@vm1 ~]# ip a s ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:36:45:08 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.6.254/24 brd 192.168.6.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::75c4:d3cf:7e18:ad85/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@vm1 ~]#

修改配置文件

bash 复制代码
[root@vm1 ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
subnet 192.168.6.0 netmask 255.255.255.0 {
  range 192.168.6.100 192.168.6.200;  ip地址的范围
  option domain-name-servers 8.8.8.8; 指定dns服务器
  option routers 192.168.6.254; 指定网关
  option broadcast-address 192.168.6.255; 广播地址
  default-lease-time 600; 默认租约时间
  max-lease-time 7200; 最长租约时间
}
[root@vm1 ~]#
# 重启服务,防火墙放行服务
[root@vm1 ~]# systemctl restart dhcpd
[root@vm1 ~]# firewall-cmd --add-service=dhcp 
[root@vm1 ~]# firewall-cmd --add-service=dhcp --permanent

vm2测试动态获取地址

bash 复制代码
[root@vm2 ~]# firewall-cmd --add-service=dhcp --permanent
success
[root@vm2 ~]# firewall-cmd --add-service=dhcp 
success
[root@vm2 ~]# ip a s ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:34:73:08 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.6.100/24 brd 192.168.6.255 scope global dynamic noprefixroute ens160
       valid_lft 598sec preferred_lft 598sec
    inet6 fe80::250:56ff:fe34:7308/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@vm2 ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search tj.a.com
nameserver 8.8.8.8
[root@vm2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.6.254   0.0.0.0         UG    100    0        0 ens160
192.168.6.0     0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@vm2 ~]# 

练习

要求

  • Vm1启用dhcp服务,地址范围为192.168.6.1 -192.168.6.100,且排除ip 192.168.6.1

  • 能够给vm2分配192.168.6.0/25网段的地址,且地址固定为192.168.6.66/25, 网关为192.168.6.1,dns为192.168.6.1

  • vm1使用unbound服务配置缓存dns,vm2获取dns后,验证缓存dns的加速效果

过程

准备两台虚拟机:vm1(ens160 192.168.6.1/25);vm2(ens160 dhcp动态获取地址)

bash 复制代码
[root@vm1 ~]# cat /etc/dhcp/dhcpd.conf  | grep -v ^# | grep -v ^$
subnet 192.168.6.0 netmask 255.255.255.128 {
  range 192.168.6.1 192.168.6.100;
  option domain-name-servers 192.168.6.1;
  option routers 192.168.6.1;
  option broadcast-address 192.168.6.127;
  default-lease-time 600;
  max-lease-time 7200;
}
host vm2 {
  hardware ethernet 00:50:56:34:73:08;
  fixed-address 192.168.6.66;
}
host reserved-address {
    hardware ethernet 00:00:00:00:00:00;
    fixed-address 192.168.6.1;
}
[root@vm1 ~]# systemctl restart dhcpd
[root@vm1 ~]# cat /etc/unbound/unbound.conf  | grep 192.168.6
    interface: 192.168.6.1
    access-control: 192.168.6.0/25 allow
[root@vm1 ~]# systemctl restart unbound
​
# 在vm2中获取地址查看
[root@vm2 ~]# ip a s ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:34:73:08 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.6.66/24 brd 192.168.6.255 scope global dynamic noprefixroute ens160
       valid_lft 598sec preferred_lft 598sec
    inet6 fe80::250:56ff:fe34:7308/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@vm2 ~]# 
相关推荐
人工智能训练7 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
微露清风9 小时前
系统性学习Linux-第二讲-基础开发工具
linux·运维·学习
不会代码的小猴9 小时前
Linux环境编程第六天笔记--system-V IPC
linux·笔记
阳光九叶草LXGZXJ9 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
诸神缄默不语9 小时前
Linux命令行教程
linux
小二李11 小时前
第11章 nestjs服务端开发:登录鉴权
运维·服务器
i建模11 小时前
如何在Arch Linux中重设忘记的root密码
linux·运维·服务器
chatexcel12 小时前
元空AI+Clawdbot:7×24 AI办公智能体新形态详解(长期上下文/自动化任务/工具粘合)
运维·人工智能·自动化
kida_yuan12 小时前
【Linux】运维实战笔记 — 我常用的方法与命令
linux·运维·笔记
@syh.13 小时前
【linux】进程控制
linux