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 ~]# 
相关推荐
ernesto_ji5 分钟前
Jenkins下载安装、构建部署到linux远程启动运行
linux·servlet·jenkins
李迟19 分钟前
某Linux发行版本无法使用nodejs程序重命名文件问题的研究
java·linux·服务器
施努卡机器视觉22 分钟前
电解车间铜业机器人剥片技术是现代铜冶炼过程中自动化和智能化的重要体现
运维·机器人·自动化
徐浪老师24 分钟前
深入实践 Shell 脚本编程:高效自动化操作指南
运维·chrome·自动化
King's King28 分钟前
自动化立体仓库:详解
运维·自动化
东隆科技29 分钟前
晶圆测试中自动化上下料的重要性与应用
运维·自动化
酷酷学!!!41 分钟前
Linux基础指令(汇总)
linux·运维·服务器
枫叶丹41 小时前
【在Linux世界中追寻伟大的One Piece】手写序列化与反序列化
linux·运维·网络
SchneeDuan1 小时前
建造者模式
运维·服务器·建造者模式