1 实验拓扑与目标
关于DHCP ARP安全的features,虽然不适合中大型环境,但是在小型网络,然后领导又有特殊需求的要求下面的客户不能私自设置IP,必须通过DHCP获取,防止因为恶意设置导致地址冲突等问题。这个技术需要通过DHCP来配合,但是在中大型环境,然后架构更加复杂的时候,就需要用DHCP Snooping,DAI与ip source Guard技术,更加能细致的控制,属于内部安全技术常见部署之一。
拓扑说明,该拓扑比较适用于有2~多个VLAN的情况下,这个时候必须与连接的出口路由器配置子接口的方式,当然这种方式只适合小型网络。
还另外一种情况就是,像思科的ISR系列路由器,有些系列是附带二层接口与三层接口,是多业务路由器,可以看作是一台三层交换机+路由器,这种可以把二层交换机与出口路由器配置为trunk模式,然后配置SVI接口,这种也是合适的,还可以起EC,解决单臂路由的带宽瓶颈问题。不过一般小型网络也没这么多需求了,这里只是稍微提下。
2 配置与思路
1.二层交换机初始化与配置
1.创建VLAN SW-s2960(config)#vlan 2 SW-s2960(config-vlan)#vlan 3 SW-s2960(config-vlan)#
2.把接入PC的接口划入对应的VLAN SW-s2960(config)#int f1/0 SW-s2960(config-if)#switchport mode access SW-s2960(config-if)#switchport access vlan 2 SW-s2960(config-if)#spanning-tree portfast
SW-s2960(config)#int f1/1 SW-s2960(config-if)#switchport mode access SW-s2960(config-if)#switchport access vlan 3 SW-s2960(config-if)#spanning-tree portfast 这里启用快速端口,是跳过生成树状态机,使得客户端能够快速获取到地址。
3.与接路由器接口配置为trunk SW-s2960(config)#int f1/15 SW-s2960(config-if)#switchport trunk encapsulation dot1q SW-s2960(config-if)#switchport mode trunk SW-s2960(config-if)#switchport trunk allowed vlan 1-3,1002-1005 说明:二层交换机简单的配置,划分了VLAN,然后把对应接口加入VLAN,以及与上行接口定义为trunk,红色部分为可选,默认是允许全部VLAN通过,这里只允许已经存在的VLAN通过。
2.出口路由器初始化
1.连接外网的接口 ROUTER-GW(config)#int e1/0 ROUTER-GW(config-if)#ip address 202.100.1.1 255.255.255.0 ROUTER-GW(config-if)#no shutdown ROUTER-GW(config-if)#exit
2.连接内网的接口,子接口形式 ROUTER-GW(config)#int f0/0 ROUTER-GW(config-if)#no shut ROUTER-GW(config)# ROUTER-GW(config)#int f0/0.2 ROUTER-GW(config-subif)#encapsulation dot1Q 2 ROUTER-GW(config-subif)#ip address 192.168.2.254 255.255.255.0
ROUTER-GW(config)#int f0/0.3 ROUTER-GW(config-subif)#encapsulation dot1Q 3 ROUTER-GW(config-subif)#ip address 192.168.3.254 255.255.255.0 说明:子接口,必须先把物理接口开启,然后在子接口下,封装需要的VLAN,以及配置IP地址。
默认路由配置,走公网的路由
ROUTER-GW(config)#ip route 0.0.0.0 0.0.0.0 202.100.1.10 说明:让下面的客户端上公网,必须配置默认路由。
3.DHCP+ARP安全配置
1.DHCP配置【配置VLAN 2与VLAN3的地址池】 ROUTER-GW(config)#ip dhcp pool vlan2 ROUTER-GW(dhcp-config)#network 192.168.2.0 /24 ROUTER-GW(dhcp-config)#default-router 192.168.2.254 ROUTER-GW(dhcp-config)#dns-server 114.114.114.114 ROUTER-GW(dhcp-config)#lease 0 4 ROUTER-GW(dhcp-config)#domain-name ccieh3c.taobao.com ROUTER-GW(dhcp-config)#exit
ROUTER-GW(config)#ip dhcp pool vlan3 ROUTER-GW(dhcp-config)#network 192.168.3.0 /24 ROUTER-GW(dhcp-config)#default-router 192.168.3.254 ROUTER-GW(dhcp-config)#dns-server 114.114.114.114 ROUTER-GW(dhcp-config)#domain-name ccieh3c.taobao.com ROUTER-GW(dhcp-config)#lease 0 4 配置了常用的参数,包括分配的地址池网段、掩码、网关、DNS、与域名。这里租期特别重要,会跟下面的ARP来配合使用。
2.ARP安全配置【重点】 ROUTER-GW(config)#ip dhcp pool vlan2 ROUTER-GW(dhcp-config)#update arp
ROUTER-GW(config)#ip dhcp pool vlan3 ROUTER-GW(dhcp-config)#update arp
ROUTER-GW(config)#interface f0/0.2 ROUTER-GW(config-subif)#arp authorized ROUTER-GW(config-subif)#arp probe interval 10 count 3 【可选】
ROUTER-GW(config)#interface f0/0.3 ROUTER-GW(config-subif)#arp authorized ROUTER-GW(config-subif)#arp probe interval 10 count 3 【可选】
说明下配置的命令作用,(1)在接口下配置的arp authorized,它的作用是启用了该功能的接口,如果收到ARP的Request,则不会主动回应ARP reply,什么情况下会响应呢,第一个是自己手工绑定,该环境适合有静态IP地址存在的服务器或者网络打印机,第二个则是在DHCP里面配置的特殊命令了 (2)可以看到在DHCP进程下,配置了一个update arp,它的作用就是,当客户端通过DHCP从该设备获取到DHCP分配的地址的时候,由于该设备是服务器,它清楚的知道,它分配给下面客户端的IP与MAC是什么,通过这个来生成ARP表项,这样的话,也就是说静态配置IP的用户,是在网关上面不会产生对应的ARP表项的,那么一个数据包发送出去,需要明确知道网关的MAC地址是什么,如果网关不给于回应,那么数据包由于不知道目的MAC是什么,导致封装失败,数据包则发送不了,从而实现防止内网用户私设IP的方法,当然这个只能在特定环境下使用,如果在中大型环境下,则配合DHCP Snooping+DAI与ip source guard这些技术是最推荐的。最后的 arp probe interval 10 count 3,它的使用场景,是当DHCP的租期与ARP的缓存时间不复合的时候,才会用到,它的作用是当ARP表的老化时间快要到删除的点的时候,它会在最后的时间段内每10s询问一次ARP表项里面的IP主机是否都在线, 如果3s内没有收到回应,则删除对应ARP表项。这里把租期改为4小时就是与ARP的对应时间一致,也就是说,当租期到期的时候,如果没有续约,则ARP的缓存也正好到期。
4.出口路由器NAT配置,让下面客户端能够访问外网。
ROUTER-GW(config)#ip access-list extended nat ROUTER-GW(config-ext-nacl)#10 permit ip 192.168.2.0 0.0.0.255 any ROUTER-GW(config-ext-nacl)#20 permit ip 192.168.3.0 0.0.0.255 any
ROUTER-GW(config)#ip nat inside source list nat interface e1/0 overload
ROUTER-GW(config)#int f0/0.2 ROUTER-GW(config-subif)#ip nat inside
ROUTER-GW(config-subif)#int f0/0.3 ROUTER-GW(config-subif)#ip nat inside
ROUTER-GW(config-subif)#int e1/0 ROUTER-GW(config-if)#ip nat outside NAT部分,主要是用ACL匹配哪些网段执行NAT,NAT的内容是,匹配了该ACL的网段,通过外网接口访问Internet,做端口PAT转换,并且在内网子接口与外网接口启用。
5.测试以及几种情况的应对办法。
可以看到已经获取到了DHCP地址,以及有对应的绑定表与ARP表项。
访问公网也没任何问题。
接下来测试下手动配置IP是否有问题。
这里手动配置了一个IP地址,2.2的。
它网关都不能Ping通,另外出口路由器上面也没对应的ARP表项。
这个也说明了,如果是静态配置的IP,是不能产生动态ARP信息的,使得静态IP访问无效。
假设该地址是一台服务器或者打印机的话,可以通过静态绑定来实现让它访问
ROUTER-GW(config)#arp 192.168.2.2 000c.29a4.46ed arpa
可以看到这样就可以正常访问了。
4 总结
总结:对于DHCP ARP安全技术来说,这里只能当一个features来了解,因为它并不是适合主流的场合,适合一个小的环境,一种廉价的解决方案,对于架构层次多,而且复杂的来说,更加推荐使用DHCP Snooping与ip source guard这些技术。