默认情况下,交换机在二层接口上转发数据时,只查看数据包的MAC地址,并不会查看数据包的IP地址,如果要让交换机根据数据包的IP或者同时根据IP与MAC做出转发决定,有多种方法可以实现。如根据IP转发,可以通过在接口上应用Port ACL来实现,如果要根据MAC转发,可以通过应用port-security来实现,但无论是Port ACL还是port-security,都存在一些局限性,下面介绍一种扩展性较高的安全防护特性- IP Source Guard,IP Source Guard 可以根据数据包的IP地址或IP与MAC地址做出转发决定,如果数据包的IP 或MAC是不被允许的,那么数据包将做丢弃处理。


因为IP Source Guard需要根据数据包的IP或者同时根据IP与MAC做出转发决定,所以IP Source Guard在工作时,需要有一张IP和MAC的转发表,在这张表中,明确记录着哪些IP 是可以转发的,哪些MAC可以被转发,其它不能被转发的统统丢弃。这表转发表称为IP source binding table,并且只能被IP source guard使用。而IP source binding table表,只有在交换机上开启DHCP snooping功能后,才会生成。


IP Source Guard的这张转发表的条目可以自动学习,也可以手工静态添加,如果是自动学习,是靠DHCP snooping功能学习的,所以只有客户端是通过DHCP请求获得地址,并且DHCP服务器的回复是经过交换机时,才能被DHCP snooping学习到。


当在交换机上同时开启了IP Source Guard与DHCP snooping后,交换机将在开启了的接口上拒绝所有流量通过,只放行DHCP流量,并且会自动应用一条ACL到接口上,也只有ACL允许的IP 才能通过,这条ACL无法在正常配置中查看,只能通过表的方式查看。因为默认可以允许DHCP通过,所以主机的DHCP请求可以帮助他们从DHCP服务器获得地址,当DHCP服务器向主机提供地址时,这个信息在穿越交换机时,IP信息会被记录,并且被自动生成的ACL允许转发,这样以后,只有主机从DHCP服务器自动获得的IP可以通过交换机,而其它IP的流量都是被拒绝的,因此可以看出,IP Source Guard和DHCP snooping的配合使用,可以防止一个主机使用其它主机的IP地址来***网络,因为只有DHCP获得的地址能够被交换机转发,其它接口即使配置了相同IP,都会被IP Source Guard拒绝放行。


注:IP Source Guard自动生成的ACL优先于任何Router ACLs和VLAN map。

当IP source binding table表的内容有任何变化时,自动生成的ACL也会自动改变,自动生成的ACL总是与IP source binding table表中的条目同步。如果IP source binding table表是空的,那么ACL将拒绝所有流量通过,也就是最初的状态。


因为IP Source Guard可以根据数据包的IP地址做出转发,也可以同时根据IP与MAC地址做出转发,如果要开启同时根据IP与MAC做出转发,还必须在接口上开启port security功能,port security帮助识别流量的MAC地址,并将其添加到source binding table表中,最后被ACL设置为允许。


注:

★IP source guard只能在二层接口上开启,并且不支持EtherChannel。

★当IP source guard根据IP转发在接口上开启,这个接口所在的VLAN必须开启DHCP snooping,

★如果是在trunk上开启,DHCP snooping应该在所有VLAN上开启,过滤也对所有VLAN生效。

★如果在trunk上打开或关闭某一个VLAN DHCP snooping的,可能会出问题。

★当IP source guard根据IP和MAC转发在接口上开启,那么DHCP snooping和port security必须同时开启


开启基于IP的IP Source Guard:

sw1(config)#int range f0/1 - 2

sw1(config-if-range)# ip verify source


sw1#sh ip source binding

MacAddress           IpAddress         Lease(sec)   Type            VLAN   Interface

------------------   ---------------   ----------   -------------   ----   --------------Total number of bindings: 0

说明:初始状态下,IP source binding table为空,意味着ACL会拒绝所有流量通过,只有DHCP能通过。

查看自动生成的ACL:


sw1#sh ip verify source

Interface   Filter-type   Filter-mode   IP-address        Mac-address         Vlan

---------   -----------   -----------   ---------------   -----------------   ----------Fa0 /1       ip            active        deny-all                             10

Fa 0 /2       ip            active        deny-all                             10

sw1#

说明:因为初始状态下,IP source binding table为空,所以ACL会拒绝所有流量


开启基于IP与MAC的IP Source Guard

(1)在接口上开启基于IP与MAC的IP Source Guard

sw1(config)#int f0/1

sw1(config-if)#ip verify source port-security

(2)开启port-security

sw1(config)#int f0/1

sw1(config-if)#switchport port-security