解决一个共享网络中,计算机指定获取DHCP地址


 

                

 

偶然看到QQ群里说,在两个dhcp服务器里保证获取第一个服务器怎么做?瞬间来了兴趣,想了想方案,发现百度也没有答案,因此我写了一个解决方案

如何让计算机获取指定DHCP,这个要从DHCP的 协议原理以及 交换机高级特性

 

                

 

环境展示

要求:PC1指定获取R2的IP地址,PC2不限制获取哪个IP

如何解决?DHCP服务器指定?若提供DHCP服务的不是服务器而是其他设备呢?

先看DHCP协议报文交互原理

 

                

 

1.计算机网卡运行时,由于网卡未配置IP地址,会向网络中寻找DHCP服务器,这个过程,数据报文叫做 DHCP-Discover(DHCP发现报文)

由于计算机还没有IP地址,所以源地址0.0.0.0,目标地址255.255.255.255。由于不知道服务器地址,所以目的地址也是广播地址,目的端口68,服务器监听68端口

  1. 为了防止一个网络里出现了多个DHCP服务器而计算机无法区分哪个报文是哪个服务器发送的,DHCP交互报文中封装了 随机的事务ID

3.服务器收到后,由于客户端也还没有IP地址,也会发送目的地址255.255.255.255,源是服务器自己IP地址的数据包,目标端口67,计算机监听67端口,收到的 事务ID不变,这个数据过程叫 DHCP-Offer(DHCP提供报文)

DHCP-Offer报文里包含里要给予的,没有被记录使用的IP地址、子网掩码、网关地址、DNS地址、地址租期等内容

4.由于DHCP的工作原理是计算机按先后顺序,先收到谁的 DHCP-Offer ,就向哪个服务器发送 DHCP-Request(DHCP请求报文),事务ID不变,去向DHCP服务器确认该地址可用

DHCP-Request报文源地址还是0.0.0.0,目的地址255.255.255.255,这样的目的是不用向网络中的每一个DHCP服务器单播发送DHCP请求报文,节省了交互时间

5.此时多个服务器均会收到 DHCP-Request,然后根据报文中的 事务ID去辨别是否是发给我的请求,若不是发给我的则丢弃。若是发给我的,则回复 DHCP-Ack(DHCP确认报文)告知计算机可以使用该IP地址了,目的地址255.255.255.255,源是服务器

6.计算机收到 DHCP-Ack后,也会发送 免费ARP,这个 免费ARP源是给予的IP地址,目的也是这个地址。用来确认该网络中没有存在相同的IP地址,若存在,则向服务器发送 DHCP-Decline(DHCP拒绝报文),此时计算机会重新发送 DHCP-Discover进行新的开始

7.若计算机发现地址不存在冲突,则进行使用。

至此,DHCP的交互流程结束。地址续约及释放不在讲解,接下来回到题目要求进行操作

基于拓扑图可以分析出来, DHCP-Snooping技术无法使用,因为要求中写到PC2可以获取任意地址,设置哪个端口为Trust都无法进行PC1要求的控制。

也无法划开VLAN进行隔离,要求就是同一个广播域中。

所以此操作基于华为 MQC技术(模块化QOS命令行),也可以说是流策略。进行控制

在SW2上,配置

acl number 3000
 rule permit ip source 20.0.0.254 0
# traffic classifier 20 it-match 3000 # traffic behavior 20 deny # traffic policy 20 classifier 20 behavior 20 # interface GigabitEthernet0/0/2 traffic-policy 20 outbound 

 

配置思路:
既然无法划开VLAN,那就对 DHCP报文交互过程进行限制,以计算机收到的第一个Offer报文进行控制。
为什么要进行三层控制,如果控制了二层,那计算机获取地址后就无法和R2进行交互,也不符合要求。
在SW2中,ACL定义了源地址为R2 20.0.0.254,就是定义了DHCP-Offer报文的返回数据帧。
在流分类中挂载ACL,为什么ACL是 permit?因为如果是 deny的话,流行为控制将不会挂载该条数据包
最后用流策略匹配流分类及流行为,应用在连接计算机的接口出方向即可。

此时效果为:PC1的DHCP请求报文可以被R2接收,R2也会发DHCP提供报文给计算机,该DHCP提供报文可以被SW2接收,但是不会下发给PC1,至此PC1仅能收到R1的DHCP报文。
这就完成了指定获取DHCP地址的控制。

若没有要求同一个VLAN进行控制,其实也可以通过 MUX VLAN进行控制(思科系叫 Private VLAN
将主VLAN设成R2的接口VLAN,互通型VLAN设计成R1与PC2的接口。在将隔离型VLAN配置为PC1的接口。
所有互通型VLAN和隔离型VLAN均可和主VLAN交互,隔离型VLAN不可访问其他VLAN,而互通型VLAN,也就是PC2和R1的接口,既可以互访也可以访问主VLAN-R2的接口。
这也是另一种办法获取指定DHCP地址的解决方案。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM