一、了解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进行安装

代码语言:javascript复制[root@localhost ~]# yum -y install dhcp(一)配置文件以及目录介绍配置文件在/etc/dhcp/目录下

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

代码语言:javascript复制[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这个文件的内容:

发现里面除了注释,就是注释

其实提示的这个就是咱们需要的一个模板

代码语言:javascript复制[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 ~]# 为了防止出错,备份一下原文件

代码语言:javascript复制[root@localhost ~]# cp -p /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

[root@localhost ~]# 拷贝模板替换原来的:

代码语言:javascript复制[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 ~]# 由于里面包含了大量的注释,为了方便大家好看,就过滤掉注释:

代码语言:javascript复制[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 ~]# 子网代码块说明:

静态地址分配:

代码语言:javascript复制#分配静态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配置文件

代码语言:javascript复制[root@localhost ~]#

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf配置如下:

代码语言:javascript复制# 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服务器

如果没有问题就成功了

代码语言:javascript复制[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命令重新获取

代码语言:javascript复制C:\Users\80429>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:\Users\80429>如果获取的地址还是之前的话,可以使用ipconfig /release释放掉当前的IP,然后重新获取:

代码语言:javascript复制C:\Users\80429>ipconfig /release

Windows IP 配置

以太网适配器 以太网:

连接特定的 DNS 后缀 . . . . . . . :

本地链接 IPv6 地址. . . . . . . . : fe80::c530:d0d4:17f2:1757%6

默认网关. . . . . . . . . . . . . :

C:\Users\80429>ipconfig

Windows IP 配置

以太网适配器 以太网:

连接特定的 DNS 后缀 . . . . . . . :

本地链接 IPv6 地址. . . . . . . . : fe80::c530:d0d4:17f2:1757%6

默认网关. . . . . . . . . . . . . :

C:\Users\80429>

C:\Users\80429>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:\Users\80429>