目录
主机获取IP地址的方式通常有两种:手动配置和DHCP协议配置
主机获取IP地址的方式通常有两种:手动配置和DHCP协议配置
手动配置:
自己规划好地址手动配置到主机网卡上;适用规模小,安全要求高的网络。
DHCP协议配置:
部署DHCP服务器,由服务器分发,主机自动获取IP地址;
DHCP报文结构:
DHCP报文的封装格式通常使用UDP(User Datagram Protocol)来传输,在IPv4中,目标端口号为67(服务器端口),源端口号为68(客户端端口)。在IPv6中,DHCPv6使用目标端口号为547,源端口号为546。在UDP报头前面封装的是二层以太网帧,最后还有一个FCS帧校验序列。
(了解~~~(●'◡'●)~~~)
操作码(OpCode)[1]:表示消息类型。
硬件地址类型(Hardware Type)[1]:表示客户端硬件地址的类型,通常为1(以太网)。
硬件地址长度(Hardware Address Length)[1]:表示客户端硬件地址的长度,通常为6(以太网地址的字节数)。
跳数(Hops)[1]:用于在大型网络中限制广播的范围。
事务ID(Transaction ID)[4]:由客户端生成,用于与DHCP回复消息相匹配。
租期(Seconds Elapsed)[2]:表示客户端从请求开始到现在已经过去的秒数。
标志(Flags)[2]:包含广播标志等信息。
客户端IP地址(Client IP Address)[4]:表示客户端当前的IP地址,当客户端尚未被分配地址时为0.0.0.0。
分配的IP地址(Your IP Address)[4]:表示服务器分配给客户端的IP地址。
服务器IP地址(Next Server IP Address)[4]:表示下一个服务器的IP地址,用于引导过程中使用。
客户端硬件地址(Client Hardware Address)[16]:表示客户端的硬件地址。
服务器主机名(Server Host Name)[64]:表示服务器的主机名。
引导文件名(Boot File Name)[128]:表示引导文件的路径名。
八种DHCP报文:
DHCP Discover(发现报文):
由客户端以广播形式发送,以寻找可用的DHCP服务器。即客户端在询问网络内“谁是服务器,谁能提供我IP地址?”这个报文三层报头中的目的IP地址段为255.255.255.255(全向广播地址);源地址段为0.0.0.0(未知地址)[因为此时客户端还没有IP地址];源MAC全F;
在Discover报文的DHCP载荷中会包含源mac地址,这样服务器接收后会记录此地址并且通过该地址判断客户端曾经是否申请过IP地址,继而形成一个租约。
DHCP Offer(提供报文):
服务器响应Discover报文后以单播或广播形式发送。源IP地址为服务器地址,目的IP地址为服务器为客户端准备的地址(单播)/255.255.255.255(广播)。单播(Broadcast位,置0)、广播(Broadcast位,置1),具体由厂商决定,例:华为单播、思科微软广播。
报文中包含IP地址和其他相关一切配置信息(如子网掩码、默认网关、DNS服务器、租期、域名等)。通常情况下,多个DHCP服务器可能会发送不同的Offer报文,客户端会选择其中一个Offer作为其配置。
DHCP Request(请求报文):
客户端在收到Offer报文后,选择其中一个DHCP服务器的配置,再以广播形式发送。(广播:向选中的服务器发送确认请求,向未选中的服务器发出告知撤回将分配来的资源)
具体选择的服务器地址会在报文中的option(54)字段显示。
DHCP Acknowledgment(确认报文):
服务器在收到Request报文后,以单播或广播形式发送,报文包含信息与Offer(提供报文)一致(唯一区别在于option(53)字段中一个是描述offer一个描述ack)单播、广播依旧取决于报文中的Broadcast位(0;1)用于确认并正式分配IP地址和配置给客户端。
DHCP NAK(否定报文):(不常用)
服务器在无法为客户端提供请求的IP地址或配置时以广播形式发送。即服务器收到客户端的Reques报文,查找报文里客户端的MAC地址,发现本地没有找到对应的租约记录(或者有租约记录但是租期已到限制),就会拒绝提供所请求的配置。
DHCP Release(释放报文):
由客户端 单播发送给DHCP服务器,用于告知服务器先前分配来的IP地址因为某种原因,现在已经不用了,请释放先前分配的IP地址和配置。
DHCP Decline(拒绝报文):(不常见)
客户端发现分配的IP地址已经被其他设备使用或其他冲突情况下,会发送Decline报文来拒绝从DHCP服务器接收到的IP地址。(免费arp检测)
DHCP Inform(信息报文):(不常见)
客户端请求服务器其他配置信息,例如客户端自己手动配置了IP地址、掩码、网关等等,但缺少DNS、域名等信息,这时就可以通过这个报文请求获取信息。
- 如果是一个广播域:首先客户端discover报文广播寻找服务器,目的IP地址段为255.255.255.255,源地址段为0.0.0.0,源MAC全F,服务器响应Discover报文后以单播/广播形式发送offer报文,目的IP地址为服务器为客户端准备的地址/255.255.255.255,客户端收到Offer报文后,选择其中一个DHCP服务器的配置,再广播发送ack报文确认请求,至此IP成功分配。(服务器核对租期正常,IP地址未冲突)
- 【因为同广播域,故而服务器就知道客户端与它同网段,分配的IP地址前缀即与自己一样】
DHCP中继 (通常是路由器或三层交换机)
- 如果不在一个广播域:客户端discover报文的广播更为单播,通过查找路由表发送码,由此来穿过广播域。这其中便用到了DHCP中继代理。即DHCP中继让网关作为中间人,将收到的DHCP广播消息转换为单播消息,并把报文发给服务器,服务器收到后再以offer形式回复offer报文给网关,网关再转发给客户端。
- 【届时,因为有的厂家源地址设置的还是0.0.0.0,为了确定vlan在哪个网段,于是在报文中添加了一个Relay Agent IP address(中继代理IP地址)字段——一般是客户端网关地址,网关又与客户端同网段,分配的IP地址前缀即与网关一样】
DHCP中继配置命令:
1.服务器配置静态IP地址,并部署地址池
int e0/0
ip add 10.3.0.254 255.255.255.0
ip dhcp pool DHCP
network 192.168.1.0 /24
发现,地址池中的网段和服务器的静态IP地址不处于同一网段中。
二层广播的Discover报文无法直接发送给DHCP服务器,因而需要使用到DHCP中继
2.部署DHCP中继
int vlan 1
ip add 192.168.1.254 255.255.255.0
no shutdown
前提:保证DHCP服务器到代理设备的连通性。
ip helper-address 10.3.0.254 # 将二层广播数据包转换成三层数据包进行转发。
DHCP中继的问题:
1.三层连通性的问题
2.ip helper-address 后面写的地址必须是DHCP服务器地址
ip申请到后会开启三个计时器
1.租期更新计时器;2.租期重绑定计时器;3.租期失效计时器
3个计时器原理:
在默认情况下,还剩50%租期时,客户端的第一个计时器租期更新计时器就超时了 。这时,客户端就会发送一个单播的request向服务器请求延长租期。
▲如果服务器收到了并同意延长,就会返还客户端一个ACK报文,客户端即会得到一个新的租期。
▲如果服务器没有回复ACK,而客户端的租期一直拖到达到了87.5%,到这份上,租期重绑定计时器就超时了。这时,客户端就会认为之前的DHCP服务器挂了,所以他会再次以广播的形式发送request的报文向整个广播域内请求帮忙续租。
✿在这种情况下,客户端如果收到了ACK,那租期依然会自动延长。
✿如果收到的不是ACK(肯定确认)而是NAK(否定确认)的话,客户端就会直接宣告地址过期超时,剩下的12.5%时间也不会用了,继而发送一个Release(释放)报文把分配的地址退回去。
✿如果客户端既没有收到ACK,也没有收到NAK,那他就会把剩下的12.5%的时光继续过完,直到租期失效计时器超时。随后在超时的瞬间,客户端也会发送Release(释放)报文将分配的地址还回去。
DHCP Snooping(动态主机配置协议安全过滤)
作用:保护DHCP服务器,并抑制掉不合法的DHCP服务器。
它在交换机上工作,通过监视和过滤网络中的DHCP交互流量,防止未经授权的DHCP服务器发送虚假的DHCP响应,从而提高网络的安全性。
一旦开启了DHCP Snooping功能,则交换机上的所有端口都会变为非信任端口。这些端口不可以响应来自客户端的DHCP Discover(发现)数据包。这意味着DHCP Snooping会阻止DHCP服务器在非信任端口上分配IP地址,以防止不合法的DHCP服务器干扰合法的DHCP过程。只有管理员明确信任后设置的信任端口才能正常工作,为客户端提供IP地址。
1.开启DHCP Snooping功能
(config)# ip dhcp snooping
2.指定DHCP Snooping在哪个VLAN生效
(config)# ip dhcp snooping vlan x
3.进入需要被信任的端口
(config)# int e0/0
(config-if)# ip dhcp snooping trust
只有被设置为信任端口才可以回应Discover数据包
4.思科的路由器不认识Option 82,而交换机在发送的时候会加上Option 82。
(1)交换机不发送Option 82
(config)# no ip dhcp snooping information option # 删除Option 82
(2)思科的路由器识别Option 82
a.全局下承认Option 82
(config)# ip dhcp relay information option
b.接口下信任Option 82
(config)# int e0/0
(config-if)# ip dhcp relay information trusted