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 ~]# 
相关推荐
大树887 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质7 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush47 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5208 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz8 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工8 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智9 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩9 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_9 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化