一文胜千言的DHCP的讲解以及DHCP服务器的配置

时间:2022-07-22
本文章向大家介绍一文胜千言的DHCP的讲解以及DHCP服务器的配置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、了解DHCP以及相关概念

(一)DHCP如何工作的?

让我们首先了解一下 DHCP 的工作流程:

  • 当已连接到网络的客户端计算机(配置为使用 DHCP)启动时,它会发送一个 DHCPDISCOVER 消息到 DHCP 服务器。
  • 当 DHCP 服务器接收到 DHCPDISCOVER 请求消息时,它会回复一个 DHCPOFFER 消息。
  • 客户端收到 DHCPOFFER 消息后,它再发送给服务器一个 DHCPREQUEST 消息,表示客户端已准备好获取 DHCPOFFER 消息中提供的网络配置。
  • 最后,DHCP 服务器收到客户端的 DHCPREQUEST 消息,并回复 DHCPACK 消息,表示允许客户端使用分配给它的 IP 地址。

(二)DHCP的优点

  • (1) 减少人为配置管理。使用DHCP服务器可以大大降低用于配置和重新配置计算机的时间。
  • (2) 可靠配置。DHCP避免了因手动在每台计算机上输入IP地址而引起的IP冲突。

(三)DHCP工作过程

  • (1) IP地址请求阶段。
  • (2) IP地址提供阶段。
  • (3) IP地址选择阶段。
  • (4) IP地址确认阶段。

(四)DHCP提供信息方法

DHCP服务器可以通过两种方法向客户机提供配置信息:绑定MAC地址法地址池法

二、DHCP在生活中常用的情景

一个比较简陋的图片:

这个图片可以看出DHCP服务器与DHCP客户端的关系

如果再来一张图说明DHCP的作用,我认为下图再合适不过了:

如果你使用的是WIFI,那就对无线再熟悉不过了。

当你去一个公共场所,张嘴就来:“请问,你们这wifi密码是多少”

给你密码之后,你输入wifi的密码,然后建立连接

后来发生了什么?没错,去请求了AP,也就是去请求了无线路由器,AP去找相关的策略。如果是DHCP的话,就请求DHCP服务器。然后你才会得到一个临时的地址。最终才可以上网了。

三、安装

使用yum进行安装

[root@localhost ~]# yum -y install dhcp

(一)配置文件以及目录介绍

配置文件在/etc/dhcp/目录下

主要配置就是/etc/dhcp/dhcpd.conf文件

[root@localhost ~]# cd /etc/dhcp/
[root@localhost dhcp]# ll
总用量 8
drwxr-xr-x. 2 root root   23 5月   9 10:21 dhclient.d
-rw-r--r--  1 root root  120 4月   2 09:29 dhcpd6.conf
-rw-r--r--  1 root root  117 4月   2 09:29 dhcpd.conf
drwxr-x---  2 root dhcpd  28 5月  12 01:56 scripts
[root@localhost dhcp]# 

查看一下/etc/dhcp/dhcpd.conf这个文件的内容:

发现里面除了注释,就是注释 其实提示的这个就是咱们需要的一个模板

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
[root@localhost ~]# 

为了防止出错,备份一下原文件

[root@localhost ~]# cp -p /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
[root@localhost ~]# 

拷贝模板替换原来的:

[root@localhost ~]# 
[root@localhost ~]# cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost ~]# 

由于里面包含了大量的注释,为了方便大家好看,就过滤掉注释:

[root@localhost ~]# 
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf |grep -Ev "^#"

option domain-name "example.org"; #为客户机指定解析主机名时的默认搜索域
option domain-name-servers ns1.example.org, ns2.example.org; #域名服务器

default-lease-time 600; #默认租约时间
max-lease-time 7200; #最大的租约时间



log-facility local7;

#子网
         #子网网络               #子网掩码         
subnet 10.152.187.0 netmask 255.255.255.0 {
}

#子网
subnet 10.254.239.0 netmask 255.255.255.224 {
  range 10.254.239.10 10.254.239.20; #地址池
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

#子网
subnet 10.254.239.32 netmask 255.255.255.224 {
  range dynamic-bootp 10.254.239.40 10.254.239.60;
  option broadcast-address 10.254.239.31;
  option routers rtr-239-32-1.example.org;
}


# 单独拿出来这个比较全的来说明
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;
  option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
}

#分配静态IP
host passacaglia {
  hardware ethernet 0:0:c0:5d:bd:95;  #需要分配给的主机的网卡的MAC地址
  filename "vmunix.passacaglia"; 
  server-name "toccata.fugue.com"; #分配的IP地址
}

host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;
  fixed-address fantasia.fugue.com;
}


class "foo" {
  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}

shared-network 224-29 {
  subnet 10.17.224.0 netmask 255.255.255.0 {
    option routers rtr-224.example.org;
  }
  subnet 10.0.29.0 netmask 255.255.255.0 {
    option routers rtr-29.example.org;
  }
  pool {
    allow members of "foo";
    range 10.17.224.10 10.17.224.250;
  }
  pool {
    deny members of "foo";
    range 10.0.29.10 10.0.29.230;
  }
}
[root@localhost ~]# 

子网代码块说明:

静态地址分配:

#分配静态IP
host passacaglia {
  hardware ethernet 0:0:c0:5d:bd:95;  #需要分配给的主机的网卡的MAC地址
  filename "vmunix.passacaglia"; 
  server-name "toccata.fugue.com"; #分配的IP地址,默认是用域名表示的,可以使用:server-name 192.168.8.112;表示
}

四、实战一(DHCP地址池分配IP法)

(一)环境

虚拟机下:

  • 一台Centos7的操作系统
  • 一台Win10的测试机

使用Centos7安装并配置一个DHCP服务器,然后使用Win10测试机进行获取DHCP地址。

DHCP地址池为:192.168.9.200-192.168.9.230 24位地址

(二)配置

编辑dhcpd.conf配置文件

[root@localhost ~]# 
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

配置如下:

# A slightly different configuration for an internal subnet.
subnet 192.168.9.0 netmask 255.255.255.0 {
  range 192.168.9.200 192.168.9.230;
  option domain-name-servers 192.168.9.222;
  option domain-name "dns.zhenghui.com";
  option routers 192.168.9.1;
  option broadcast-address 255.255.255.255;
  default-lease-time 600;
  max-lease-time 7200;
}

启动dhcp服务器

如果没有问题就成功了

[root@localhost ~]# 
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# 

(三)dhcp客户端测试

首选确定一下DHCP服务器的网卡和win10测试机的网卡是否在同一个网络下

然后把网卡设置成dhcp自动获取

五、实战二(绑定MAC地址分配法:静态分配)

(一) 环境

和实战一的环境一样

(二)配置

查看一下dhcp客户端的网卡地址:

可以看到物理地址,这个物理地址就是MAC地址。

此图为证,现在获取的地址是192.168.9.200

咱们给分配一个``192.168.9.212`。

注意此地方,这个host zhenghui_win10 {}代码块中的zhenghui_win10,其实就是我自己随便起的。 可以自定义,为了更好的方便后期查看,可以设置成比较好记的名字

如果重启没有问题就成功了

(三)测试

右击禁用网卡,然后重新打开

使用ipconfig /renew命令重新获取

C:Users80429>ipconfig /renew

Windows IP 配置


以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . : dns.zhenghui.com
   本地链接 IPv6 地址. . . . . . . . : fe80::c530:d0d4:17f2:1757%6
   IPv4 地址 . . . . . . . . . . . . : 192.168.9.212
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.9.1

C:Users80429>

如果获取的地址还是之前的话,可以使用ipconfig /release释放掉当前的IP,然后重新获取:

C:Users80429>ipconfig /release

Windows IP 配置


以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::c530:d0d4:17f2:1757%6
   默认网关. . . . . . . . . . . . . :

C:Users80429>ipconfig

Windows IP 配置


以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::c530:d0d4:17f2:1757%6
   默认网关. . . . . . . . . . . . . :

C:Users80429>
C:Users80429>ipconfig /renew  #重新获取

Windows IP 配置


以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . : dns.zhenghui.com
   本地链接 IPv6 地址. . . . . . . . : fe80::c530:d0d4:17f2:1757%6
   IPv4 地址 . . . . . . . . . . . . : 192.168.9.212
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.9.1

C:Users80429>