dhcp 产生背景以及作用
在网络中,每台计算机为了实现互相通信,都需要配置ip 地址,当网络中只有少数几台计算机时,只需要通过手动的方式为每台计算机配置IP地址。但如果网络中有成百上千台计算机,显然用手工方式为每一台计算机配置IP地址,会有很高的管理成本,通过dhcp, 动态为主机分配ip 地址,解决了时间和成本;
dhcp 简介
- dhcp(Dynamic Host Configuration Protocol,动态主机配置
协议)是一个局域网的网络协议,使用udp协议工作; - 通过dhcp服务,dhcp服务器可以为网络中安装了dhcp客户端
程序的计算机自动分配IP地址和其他相关配置(dns,网关等),
而不需要管理员对每个主机进行逐一配置;
dhcp 特点
优点
- 减少配置和管理的工作量,便于管理,提高效率;
- 客户端采用租借的方式获取ip,节约ip 地址;
缺点
- dhcp 服务配置错误或出现故障,特别是当网络中只有一台
dhcp服务器时,就会导致网络中所有dhcp客户端无法正常获取
ip地址,影响网络通信;
dhcp功能
- 通过ip地址与mac地址绑定,实现ip地址的固定分配;
- 可以自动配置客户端的dns服务器和默认网关;
- 利用ip地址排除功能,使静态分配给其他主机的IP地址不再分配给另外的dhcp客户端;
- 划分作用域,网络管理员事先配置好分配的ip 地址段,将这些ip 地址段的ip 地址分配给主机;
dhcp 报文格式
dhcp报文中各个字段的含义
- hlen (hardware length):表示硬件地址长度,以太网的值为6;
- hops:表示当前的dhcp报文经过的dhcp中继的数目。该字段由客户端或服务器设置为0,每经过一个dhcp中继时,该字段加1。此字段的作用是限制dhcp报文所经过的dhcp中继数目。服务器和客户端之间的dhcp中继数目不能超过16个,也就是Hops值不能大于16,否则dhcp报文将被丢弃;
- xid:表示dhcp客户端选取的随机数,使dhcp服务器的回复与dhcp客户端的报文相关联;
- secs (seconds):表示客户端从开始获取地址或地址续租更新后所用的时间,单位是秒;
- flags:表示标志字段。只有标志字段的最高位才有意义,其余的15位均被置为0。最高位被解释为单播或者广播响应标志位,0:客户端请求服务器以单播形式发送响应报文1:客户端请求服务器以广播形式发送响应报文;
- ciaddr (client ip address):表示客户端的IP地址。可以是服务器分配给客户端的IP地址或者客户端已有的IP地址。客户端在初始化状态时没有IP地址,此字段为0.0.0.0。IP地址0.0.0.0仅在采用dhcp方式的系统启动时允许本主机利用它进行临时的通信,不是有效目的地址;
- yiaddr (your client ip address):表示服务器分配给客户端的IP地址。当服务器进行dhcp响应时,将分配给客户端的IP地址填入此字段;
-siaddr (server ip address):dhcp客户端获得启动配置信息的服务器的IP地址;
-giaddr(gateway ip address):表示第一个dhcp中继的IP地址。当客户端发出dhcp请求时,如果服务器和客户端不在同一个网段,那么第一个dhcp中继在将dhcp请求报文转发给dhcp服务器时,会把自己的IP地址填入此字段,dhcp服务器会根据此字段来判断出客户端所在的网段地址,从而选择合适的地址池,为客户端分配该网段的IP地址。服务器还会根据此地址将响应报文发送给此dhcp中继,再由dhcp中继将此报文转发给客户端。
若在到达dhcp服务器前经过了多个dhcp中继,该字段作为客户端所在的网段的标记,填充了第一个dhcp中继的IP地址后不会再变更,只是每经过一个dhcp中继,hops字段的数值会加1;
-chaddr (client hardware address):表示客户端的MAC地址;
-sname (server host name):表示客户端获取配置信息的服务器名字; - file (file name):表示客户端需要获取的启动配置文件名;
- options:表示dhcp的选项字段,用来存放分配给dhcp客户端的控制信息和参数;
options 选项报文格式
options 字段说明
- 1 设置子网掩码选项;
- 3 设置网关地址选项;
- 6 设置dns服务器地址选项;
- 12 设置dhcp客户端的主机名选项;
- 15 设置域名后缀选项;
- 33 设置静态路由选项;
- 44 设置NetBios服务器选项;
- 46 设置NetBios节点类型选项;
- 50 设置请求IP地址选项;
- 51设置IP地址租约时间选项;
- 52 设置Option附加选项;
- 53设置dhcp消息类型;
- 54设置服务器标识;
- 55设置请求选项列表;客户端利用该选项指明需要从服务器获取哪些网络配置参数;该选项内容为客户端请求的参数对应的选项值;
- 58设置续约T1时间,一般是租期时间的50%;
- 59设置续约T2时间;一般是租期时间的87.5%;
- 60设置厂商分类信息选项,用于标识dhcp客户端的类型和配置;
- 61设置客户端标识选项;
- 66设置TFTP服务器名选项,用来指定为客户端分配的TFTP服务器的域名;
- 67设置启动文件名选项,用来指定为客户端分配的启动文件名;
- 77设置用户类型标识;
- 120 设置SIP服务器IP地址选项;说明:当前仅支持解析IP地址,不支持解析域名;
- 121设置无分类路由选项;该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由;
工作原理
网络拓扑
配置
AR2:
[Huawei]dhcp enable (开启dhcp功能)
[Huawei]interface GigabitEthernet 0/0/0 (进入 接口0/0/0 视图下)
[Huawei-GigabitEthernet0/0/0]ip address 192.168.10.10 24(配置接口地址)
[Huawei-GigabitEthernet0/0/0]dhcp select interface(开启接口采用接口地址池的dhcp服务器功能,分配的ip 地址属于192.168.10.0/24 子网下)
[Huawei-GigabitEthernet0/0/0]dhcp server excluded-ip-address 192.168.10.1 (排除不被分配的地址)
[Huawei-GigabitEthernet0/0/0]dhcp server excluded-ip-address 192.168.10.254(排除不被分配的地址)
[Huawei-GigabitEthernet0/0/0]dhcp server dns-list 8.8.8.8(dns配置)
[Huawei-GigabitEthernet0/0/0]dhcp server lease day 0 hour 0 minute 5(配置租期)
[Huawei-GigabitEthernet0/0/0]quit
网络抓包
- 在pc4 上设置启用dhcp ,分别在pc4 接口0/0/1 和AR2 接口0/0/1上进行抓包;
-
pc4 dhcp client 发送Discovery类型报文,发送广播消息,大喊一声,请分配给我一个ip 地址;
- 源ip:0.0.0.0; 目的ip:255.255.255.255(广播形式)
- 源mac:pc4 mac(让dhcp server 知道谁发过来),目的mac:ff:ff:ff:ff:ff:ff(广播形式)
-
dhcp 报文内容:
-
网络内所有主机都会收到消息,只有dhcp server 会响应,根据接口所用的地址池选择一个未被使用的ip 进行响应;
- 源ip:dhcp server ip (192.168.10.10) ,目的ip:分配的ip(192.168.10.253);
- 源mac:dhcp server mac; 目的mac:pc4 mac;
-
dhcp 报文:
-
客户端此时请求dhcp server,说: 我想用你给我分配的这个ip 地址,因为网络中会存在多个dhcp server,在第一步时都会给客户端分配ip 地址,而dhcp客户端一般只接收第一个收到的dhcp Offer报文,并且还要让其他dhcp server 也知道(我当前分配的ip dhcp client没采用,下次可以另外分给其他的dhcp client了),所以,此时的request的广播消息是必须发出的,源ip 是0.0.0.0;
-
dhcp 报文:
-
当192.168.10.10 dhcp-server 收到后,它就知道了,有人要使用我分配的ip,我需要进行确认一下,让人家放心去用;
-
dhcp 报文:
dhcp 中继
中继解决的问题
- 由于在ip地址动态获取过程中采用广播方式发送请求报文,因此dhcp只适用于dhcp客户端和服务器处于同一个子网内的情况。为进行动态主机配置,需要在所有网段上都设置一个dhcp服务器,会浪费资源;
- dhcp中继功能可以解决这个问题,每个子网的客户端可以通过dhcp中继与其他网段的服务器通信,最终获取到ip地址。这样,多个网络上的dhcp客户端可以使用同一个dhcp服务器,既节省了成本,又便于进行集中管理;
中继实验
在上述实验中增加一台路由器实现客户端跟dhcp 服务器不在同一网络下的通过中继转发功能;
配置
AR3 配置
[Huawei]dhcp enable
[Huawei-GigabitEthernet0/0/0]ip address 192.168.10.10 24
[Huawei]IP pool 192-168-20 (创建全局地址池,当前dhcp-client 和dhcp-server在不同网段,所以要使用全局地址池功能,基于接口的地址池不能生效)
[Huawei-ip-pool-192-168-20]network 192.168.20.0 mask 24(全局地址池中配置给dhcp-client 分配的地址网段)
[Huawei-GigabitEthernet0/0/0]dhcp select global (选用全局地址池进行分配)
[Huawei]ip route-static 192.168.20.0 24 192.168.10.11(路由配置)
AR2 配置:
[Huawei]dhcp enable
[Huawei-GigabitEthernet0/0/0]ip address 192.168.20.10 24
[Huawei-GigabitEthernet0/0/0]dhcp select relay (开启中继功能)
[Huawei-GigabitEthernet0/0/0]dhcp relay server-ip 192.168.10.10(配置中继转发的dhcp-server)
[Huawei-GigabitEthernet0/0/1]ip address 192.168.10.11 24
流程
1.dhcp-client 首先发送广播消息,交换机进行转发到AR2 中继;
2.AR2中继根据配置的dhcp-server 地址, 对报文重新封装成单播的,发给dhcp-server,源ip: 192.168.20.10, 目的ip:192.168.10.10;
- 剩余的流程跟未配置中继类似,只是多了中继的一个转发步骤;
-
中继与dhcp-server 之间:
-
dhcp-client 与中继之间:
ip 续期
使用dhcp 协议分配的ip 只是临时的,过一段时间会失效,如果还想继续使用的话,就得续期;dhcp-client会在租期过去 50% 的时候,直接向为其提供ip地址的 dhcp-server 发送 dhcp request 消息包。客户机接收到该服务器回应的 dhcp ack 消息包,会根据包中所提供的新的租期以及其他已经更新的 tcp/ip参数,更新自己的配置;