DHCP篇
一、了解DHCP服务
1.1DHCP定义
DHCP(动态主机配置协议
)是一个局域网的网络协议,由Internet工作任务小组设计开发的。专门用于为tcp/ip网络中的计算机自动分配TCP/IP参数的协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装
并进行必要的配置。
DHCP采用C/S架构,C-client(客户机),S-server(服务器),客户机/服务器架构
DHCP服务对应传输层UDP协议,因为是C/S架构,所以客户机端口号是67,服务器端口号是68。DHCP的前身是BOOTP协议,DHCP比BOOTP复杂,功能更加强大。DHCP工作在应用层。
网络工程师任务小组 组织指定,用来简化主机地址分配管理
主要分配以下,入网参数
-IP地址/子网掩码/广播地址
-默认网关地址、DNS服务器地址
-PXE引导设置(TFTP服务器地址、引导文件名)
1.2 DHCP好处
由于上网时间的不确定性以及人员的技术水平不同,为每位用户分配一个固定的ip地址,不仅造成ip地址的浪费,也会为ISP服务商带来高额的维护成本。而使用DHCP服务则有以下好处:
-
减少管理员的工作量
-
避免输入错误的可能
-
避免IP地址冲突【就像手动分配你也不知道别人的ip,有可能会产生冲突】
-
当更改lP地址段时,不需要重新配置每个用户的IP地址
-
提高了IP地址的利用率【只给需要上网的用户分配ip】
-
方便客户端的配置和使用
1.3DHCP的分配方式
-
自动分配: 分配到一个IP地址后
永久使用
-
手动分配: 由DHCP服务器管理员
专门指定IP地址
如何给一个组分配五个地址,手动分配:就是把1-5预留下来,给他们分配。 -
动态分配:
使用完后释放该IP
,供其它客户机使用 【eg:插了网线就能上网】,DHCP向服务端请求。
动态分配ip 是每次插网线上网的时候 你的电脑的ip都是随机分配的 每次可能都不一样 静态分配 是每次都使用固定的ip
1.4 为什么使用DHCP?
DHCP 服务避免了因手动设置 IP 地址所产生的错误,同时也避免了把一个 IP 地址分配给多台工作站所造成的地址冲突。DHCP 提供了安全、可靠且简单的 TCP/IP 网络设置,降低了配置 IP 地址的负担。
二、DHCP的租约过程
客户机从DHCP服务器获得ip地址的过程 称为DHCP的租约过程。
分为四个步骤:
1.客户端请求ip地址:
当一个DHCP客户机启动时,客户机还没有ip地址,所以客户机要通过DHCP获取一个合法的地址。此时DHCP客户机以广播的形式发送DHCP
discover发现信息来寻找DHCP服务器。
2.服务器响应:
当DHCP服务器接收到来自客户机请求ip地址的信息时,它就在自己的ip地址池中 查找是否有合法的ip地址提供给客户机
。如果有,DHCP服务器就将次ip地址做上标记
,加入到DHCP offer提供的消息中,然后DHCP服务器就广播一则DHCP offer消息【有多条eg:222 333 444 555 666…】
3.客户机选择ip地址:
DHCP客户机从接收到的第一个DHCP offer提供的消息中提取ip地址,发出ip地址的DHCP服务器将该地址保留
,这样该地址就不能再分配给另一个DHCP客户机。【eg:你去租房看中了一套房源你准备预定它,你给了定金之后,中介就不能带其他人来看这间房子,预订保留了】
4.服务器确定租约DHCP服务器接收到的DHCP request请求消息后,以DHCP ACK回应消息的形式向客户机广播成功
,该消息包含有ip地址的有效租约和其他可配置的信息。该客户机收到ACK消息时,它就配置了ip地址,完成了TCP/IP的初始化。【最后一步在会分发ip地址】
通俗易懂的了解DHCP的租约过程:
##租约过程就是租房过程吧
1)你先求租房
2)中介公司会给你响应,我有房源,我给你
3)我确定你这个房子了
4)签订合同
注:
1.关于重新登录的情况
DHCP 客户机每次重新登录网络时,不需要再发送 DHCP Discover 信息
,而是直接发送
包含前一次所分配的 IP 地址的 DHCP Request 请求信息。
2.更新租约
租期达到50%(T1)时
,DHCP客户端
会自动以单播的方式
向DHCP服务器发送DHCP REQUEST请求报文,请求更新IP地址租期。【与房东签订合同】如果DHCP服务器回应
的DHCP ACK响应报文,则租期更新成功(即租期从0开始计算)【还是之前的ip】;
如果收到DHCP NAK【NAK:没有应答的】报文,则重新发送DHCP DISCOVER【相当于又要从第一部开始做】报文请求新的IP地址。
当租期达到87.5%(T2)时
,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
PS:
NAK:没有应答;NCK:有应答;REQUEST:请求
offer:提供 discover:发现
三、使用 DHCP动态配置主机地址
3.1DHCP服务优点
●为大量客户机自动分配地址,提供集中管理
●减轻管理和维护成本、提高网络配置效率
3.2可分配的地址信息主要包括
●网卡的IP地址、子网掩码
●对应的网络地址、广播地址
●默认网关地址
●DNS服务器地址
四、DHCP中继原理与配置
4.1DHCP配置文件中的参数
#1.设置全局配置参数
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf //编辑配置文件
7 option domain-name "example.org"; //指定默认搜索域,本地域名
8 option domain-name-servers ns1.example.org, ns2.example.org; //指定 DNS 服务器地址,多台用逗号隔开
10 default-lease-time 600; //默认租约为600秒
11max-lease-time 7200; //最大租约为2小时,在客户端没有特殊的租约时间请求的时候,都会统一的指 派默认租约时间(多数情况)。 如果客户端请求了自定义的租约时间,服务器将会启用最大租约时间作为限制,客户端自己请求的租约时间不能大于该值
ddns-update-style none; //禁用 DNS 动态更新,提高DHCP的效率,减少带宽的使用,默认注释了
ignore client-updates: //与ddns-update-style设定相关,客户端可以通过DHCP服务器来更新DNS相关信息,这里暂时不予考虑,所以设置成igore.
##2.DHCP局部配置并且测试
#subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
一台 DHCP 服务器可以为多个网段提供服务,因此 subnet 网段声明必须有而且可以有多个。注意别少了每行结尾的分号!
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 { //声明要分配的网段地址
#default-lease-time 6000; //默认租约为6000秒,当和全局设置重复时,subnet里的配置生效
range 192.168.10.100 192.168.10.110; //设置地址池
#option broadcast-address 192.168.10.255; //定义广播地址
option routers 192.168.10.105; //指定默认网关地址
option domain-name-servers 114.114.114.114; //定义DNS服务器
做完这一步之后,保存退出;
并且重新启动systemctl restart dhcpd
#3.host主机声明(给单机分配固定的IP地址)
host 声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的 IP 地址(保留地址),这些主机的共同特点是要求每次获取的 IP 地址相同,以确保服务的稳定性。
host win10{ #指定需要分配固定IP地址的客户机名称
hardware ethernet 00:c0:c3:22:46:81; #指定该主机的MAC地址
fixed-address 192.168.4.100; #指定保留给该主机的IP地址
#host 后面可自定义名称
###验证并且查看
客户端win10验证:
ipconfig /release
ipconfig /renew
4.2步骤讲解
1.关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
2.安装服务并查看相关配置文件
[root@localhost ~]# Rpm -qa dhcp //查看DHCP安装包有没有,没有就安装
[root@localhost ~]# yum -y install dhcp
dhcp-4.2.5-82.el7.centos.x86_64
[root@localhost ~]#rpm -qc dhcp #查看配置文件有哪些
[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~]# cp -fp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 【拷贝的位置】 //拷贝模板起名为dhcpd.conf
3.更改网卡连接模式为仅主机
更改完成后Xshell就断开了,需要进虚拟机的终端去更改配置
4.修改网卡
[root@localhost dhcp]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改网卡ip地址及网关,然后保存退出
[root@localhost dhcp]# systemctl restart network #重启网络服务
root@localhost dhcp]# ifconfig #查看一下ip地址是不是配好了
5.修改配置文件
[root@localhost ~]# cd /etc/dhcp/ #切换至dhcpd.conf所在目录
[root@localhost dhcp]# vim dhcpd.conf #修改配置文件
末行模式下:set nu显示行号
#第8行 修改默认的全局DNS地址
option domain-name-servers 8.8.8.8;
#直接修改27行
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.128 192.168.100.200;
option routers 192.168.100.1;
option domain-name-servers 114.114.114.114;
}
subnet 192.168.10.0 netmask 255.255.255.0{
range 192.168.10.128 192.168.10.200;
option routers 192.168.10.1;
}
subnet 192.168.20.0 netmask 255.255.255.0{
range 192.168.20.128 192.168.20.200;
option routers 192.168.20.1;
}
[root@localhost dhcp]# systemctl start dhcpd #启动dhcp服务
[root@localhost dhcp]# systemctl status dhcpd #查看是否成功启动
[root@localhost dhcp]# netstat -anup | grep "dhcp" #查看网络状态,过滤出dhcp端口
6.验证区域与全局优先级
#windows设置虚拟网卡为仅主机模式
#虚拟网络编辑器里也设置成仅主机模式,一定要把使用本地DHCP选项勾掉
#改一下windows虚拟机的网卡配置
#在windows系统的cmd里测试是否能ping通dhcp服务器,然后释放并重启一下网络
ping 192.168.100.100 ping 一下dhcp服务器,看是否可以ping通
ipconfig 查看网卡信息
ipconfig /release 释放地址
ipconfig /renew 重新获取地址
ipconfig /all 可以看到详情信息