DHCP
文章目录
4.4)将池塘与接口进行联动,目的是告诉路由器,该池塘的信息应该属于哪个接口所连接的广播域
一、DHCP介绍
作用:用来为终端分配IP地址,并且对IP地址进行集中化管理的协议。
应用层协议:
传输层使用UDP协议进行数据封装,端口号67/68,其中68代表客户端;67代表服务端。即是C/S架构
在LAN(局域网)中我们常会遇到以下的情况:
1)不知道如何配置IP地址及相关信息的员工,无法上网;
2)IP地址配置冲突,无法上网;
3)来访用户因不熟悉公司网络情况无法上网;
以上这些情况都是日常最常见也是最无脑的工作,公司网络管理员需要不停的去帮忙去解决这些问题,以此来保障公司网络的正常使用及员工的正常用网需求。而这些工作对于网络管理员来说实在是太低级、太无脑、太繁琐了,会消耗网络管理员的大量工作时间,也会影响公司员工的工作效能。那么如何通过其他的方法让计算机就能直接解决了上述问题,从而解放网络管理员呢?DHCP就是一个不二的选择。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通常被应用在局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。由于DHCP是一个UDP协议,所以运行起来更加高效。
DHCP协议采用客户端/服务器模型(C/S模型),服务端可以为客户端提供IP、掩码、网关、主机名、DNS等信息。客户端只需将IP获得方式设置为自动获取即可。
二、DHCP应用场景
更多运用于开放式--任何人都能接连的
与半开放式网络--需要验证码中。
封闭式网络运用较少--只有规定的一部分人才可以使用
1)公司局域网环境
2)家庭局域网环境
3)公共场合的wifi环境
4)宽带环境网络
三、DHCP工作原理
3.1)报文类型-----共八种--常用6种
- discover报文-----发现报文,用来发现网络中的DHCP服务器
- offer报文--------由服务器进行回复,当收到discover报文后,并且服务器本地存在可用IP地址,则回复信息
- request报文------正式向服务器请求IP地址
- ack报文----------服务器同意使用该IP地址
- decline报文------当客户端检测到IP地址冲突时,发送给服务器,用以告知服务器,IP不可用
- nak报文----服务器拒绝客户端使用该IP地址----一般看不到
- release报文-----客户端主动释放IP地址。
- IP地址租期----当PC申请下来IP地址后,会存在租期时间。能够合理使用该IP地址的时间
租期时间---24小时
当租期时间到达12小时,客户端就需要向服务器发起续租申请。
当第一次续租得到回复后,则客户端将租期时间刷新为24小时;若没有回复,则等待租期时间仅剩下3小时。
此时发送第二次续租申请,此时使用discover报文广播发送申请。
3.2)工作方式
IP获得需要通过发广播来实现客户端和服务器的通信,所以DHCP只能工作在局域网。
3.3)工作原理解析
1、Client:向网络中发送广播,通过自己的UDP协议的68号端口向网络中发送DHCP Discover包,用来寻找网络中的DHCP Server.类似于你在你的公司大喊一声:"谁是公司老板"一样的道理。
2、Server:局域网中的所有DHCP服务器都能收到该Client发送的广播包,然后DHCP Server会检查自己的IP池中(也叫做作用域)是否还有可用IP可以分发。如果有的话,会直接将这个IP地址从池中拿出来,避免在发给别的客户端,并且通过自己的UDP协议的67号端口给Client发一个响应包DHCP Offer,同样通信是采用广播的方式,明确告诉其可以提供哪个IP给Client使用。类似于公司的几个老板都在公司喊了一声:“我是X老板,我有时间在哪个办公室接待你”。
3、Client:Client会收到局域网中的所有DHCP服务器发给自己的DHCP Offer包,默认选一个最优的DHCP Server进行IP获取(在这里就是第一个发送给他DHCP Offer的服务器算作最优)。然后继续向网络中通过UDP的68号端口发广播DHCP Resquest,明确指定DHCP Server IP地址和需要租用的IP地址,告诉它要从他这里获得IP信息。自然其他DHCP Server也能收到广播,确认不从自己这里拿IP信息后,会将上步从IP池中拿出来的IP在释放到池中,以便别人使用。类似于你在公司大喊一声:“李老板,我找你接待”,那么其他老板刚才计划接待你的时间就会被释放出来,用于接待别的客户。
4、Server:被确认的DHCP Server就会通过其UDP协议的67号端口发送DHCP ACK确认包,采用广播将IP、掩码、网关、DNS等信息还有IP租约一起发送给DHCP Client,Client确认IP可用后,根据IP租约开始计算使用时间。类似于李老板把你请进他的办公室,开始和你聊天,并计算聊天时间为30分钟,开始倒计时。
3.4)计算机获得IP的时间点
a、计算机开机
b、网卡接通网络
c、重启网卡服务
3.5)租约更新阶段
a、租约完成1/2
b、租约完成7/8
c、租约到期
四、DHCP服务器部署
4.1)配置IP
[DHCP Server]interface GigabitEthernet 0/0/0
[DHCP Server-GigabitEthernet0/0/0]ip address 192.168.1.100 24
[DHCP Server]interface GigabitEthernet 0/0/1
[DHCP Server-GigabitEthernet0/0/1]ip address 192.168.2.100 24
4.2)启动DHCP服务
[DHCP Server]dhcp enable ----启动DHCP服务
4.3)配置DHCP待分配的IP地址池塘
[DHCP Server]ip pool wangyu ----创建一个叫做wangyu的IP地址池塘
[DHCP Server-ip-pool-wangyu]network 192.168.1.0 mask 24 ---给池塘中添加IP地址信息,
将192.168.1.0/24整个网段的IP地址都添加到池塘中。
[DHCP Server-ip-pool-wangyu]gateway-list 192.168.1.100 ---设置该池塘中所有IP的网关地
址
[DHCP Server-ip-pool-wangyu]dns-list 8.8.8.8 ----设置该池塘中所有IP的拥有者DNS服务器
的IP地址
4.4)将池塘与接口进行联动,目的是告诉路由器,该池塘的信息应该属于哪个接口所连接的广播域
[DHCP Server]interface GigabitEthernet 0/0/0
[DHCP Server-GigabitEthernet0/0/0]dhcp select global ----将DHCP服务在该接口激活
4.5)扩展配置---可选
[DHCP Server-ip-pool-wangyu]excluded-ip-address 192.168.1.254 192.168.1.254 ---
在192.168.1.0/24这个地址池中,将192.168.1.254地址排除,后续服务器在分配IP地址时,将不会分配
192.168.1.254这个地址信息。------------起始IP、截止IP
4.6)其他
[DHCP Server-ip-pool-wangyu]lease day 0 hour 0 minute 1 ---修改租期时间
[DHCP Server]display ip pool name ? ---查看具体某个地址池塘内容
STRING<1-64> Pool name
五、补充
5.1) 如果客户端获得不到 IP会怎么办
当客户端获得不到IP地址,会得到一个169.254开头的临时IP,此IP不能和其他网段通信,但是Client会继续向网络中发DHCP广播,继续坚持不懈申请IP。
5.2)DHCP会面临单机故障,如何解决
两台设备互相分发对方网段一段IP,将作用域采用8/2原则,彼此互相冗余,当一台服务器出现问题,不至于整个网段故障。
5.3)抓包验证方法
[root@zutuanxue dhcp]# tcpdump -nn -vvv -s 1500 -i ens33 host 192.168.11.16 and udp port 67 or udp port 68
5.4)如何发放计算机名称
发放计算机名称只能在保留中完成,要求Client的计算机名配置文件中将对应字段删除。
option domain-name-servers 4.2.2.2, 4.2.2.1;
default-lease-time 28800;
max-lease-time 43200;
authoritative;
log-facility local7;
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.153 192.168.11.252;
option domain-name-servers 202.106.0.20, 114.114.114.114;
option routers 192.168.11.254;
option broadcast-address 192.168.11.255;
default-lease-time 7200;
max-lease-time 10800;
}
host print {
#指定计算机名称
option host-name "test.hello.com";
hardware ethernet 00:0c:29:af:f1:84;
fixed-address 192.168.11.252;
}
注意:请把/etc/hostname 中的计算机名称清除
/etc/sysconfig/network中的hostname字段清除