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 ~]# 
相关推荐
wowocpp1 分钟前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu
乡村农夫18 分钟前
cuda 环境搭建
linux
tingting011939 分钟前
Linux 普通用户禁用sudo su - 命令
linux·运维·服务器
WZF-Sang43 分钟前
Linux—进程学习-01
linux·服务器·数据库·学习·操作系统·vim·进程
IT-民工211101 小时前
CI/CD 实践总结
运维·ci/cd·自动化
写代码的学渣1 小时前
Linux云计算个人学习总结(一)
linux·运维·云计算
别NULL1 小时前
《现代网络技术》读书笔记:SDN数据平面和OpenFlow
linux·网络·平面·sdn
没有名字的小羊2 小时前
二.Linux文件与目录管理
linux·运维·服务器
头真的要秃啦2 小时前
Linux 无名管道
linux·运维·算法
Diamond技术流2 小时前
从0开始学习Linux——远程连接工具
linux·学习·centos·ssh·xshell·ftp