1、DHCP snooping、IPSG、DAI 的一些使用经验源自于一次客户的需求,客户网络中员工使用的都是静态 IP,没有 DHCP,客户的需求是,防止外来电脑设定一个内网 IP,就能够访问内网的资源,但是客户静态 IP 的合法用户并不固定端口,也就是说合法的静态 IP 用户会抱着笔记本一会儿接这个端口,一会儿接那个端口,那么 IP 跟 mac 的绑定就不能与端口相关联起来。借这个机会研究了一下 DHCP snooping、IPSG、DAI,在经过很多测试实验之后,找到了解决方法,也总结了些学习经验。一、 刚开始试了 DAI,开启 dhcp snooping 的情况下, , DAI 会根据这个
2、 DHCP snooping的 binding 列表来检查端口来检查源 arp 包,但是客户没有 dhcp server,做静态绑定的话又必须要跟接口关联Switch(config)#ip source binding 1111.1111.1111 vlan 1 1.1.1.10 ?interface binding interface但是客户需要又不能跟接口关联,所以这个 binding 表是空的,那岂不就是谁都无法接入,之后试了一下,发现只开启 DAI,而不开启 dhcp snooping,这样,DAI 不会检查 dhcp binding 表,而是匹配 arp 表转发,所以,只要手工写 a
3、rp 表项就好了,而且在开启 DAI 情况下, untrust 接口不会学习 arp,也就是说,一台陌生的 pc 接入网络,交换机不会将陌生 pc 的 mac 地址学来,而是会在手工写的 mac 地址表里面找条目,有他的 mac 地址,这台 PC 就能访问网络,没有,这台 pc 就不能访问网络,与接口无关。测试过程如下,交换机 vlan1 的 SVI 接口地址是 1.1.1.1,pc 地址是 1.1.1.10,Switch(config)#ip arp inspection vlan 1Switch(config)#arp 1.1.1.10 60eb.69eb.b6ff ARPASwitch(
4、config)#arp 1.1.1.20 2222.2222.2222 ARPA总共就配这两条命令,pc 长 ping 1.1.1.1,可以通虽然没有开 dhcp snooping,但是还是 show 一下 binding 表,是空的查看 arp 表项,有手工写的 arp 表项,1.1.1.10 对应我的 mac我再 no 掉手工写的 arp 表项Switch(config)#no arp 1.1.1.10 60eb.69eb.b6ff ARPA查看 arp 表项,1.1.1.10 对应的 mac 变成了 incomplete,交换机不会自动学习陌生的这个是我的 MAC 地址这个是我随便加一个
5、条目做测试mac 地址了Ping 包立刻中断交换机开始报 DAI 的 log,无效的 arp 请求,我发的 ping 包请求网关 mac 是无效的*Mar 1 04:16:32.398: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/1, vlan 1.(60eb.69eb.b6ff/1.1.1.10/0019.e7aa.5f40/1.1.1.1/04:16:31 UTC Mon Mar 1 1993)这时我再加上 arp 条目Switch(config)#arp 1.1.1.10 60eb.69eb.b6ff ARPA立刻
6、又能通了为了验证结论的准确性,我再开启 dhcp snoopingSwitch(config)#ip dhcp snoopingSwitch(config)#ip dhcp snooping vlan 1ping 包过了很久才中断,但好歹中断了,并且 ping 包断的时候交换机也开始报DAI 的 log,证明开启了 dhcp binding, binding 表是空时,即使 arp 有表项,也是无法接入的。然后我再关闭 dhcp snoopingSwitch(config)no ip dhcp snooping vlan 1Switch(config)#no ip dhcp snooping还
7、是一直不通,需要把接口 shutdown/no showdown 一下,就可以通了。最终确实证明了,未开启 dhcp snooping 时,只配置了 DAI,数据包的转发会查arp 表项。且交换机不会学习陌生的 mac 地址。客户这种情况,只需要将所有 IP 与mac 对应关系写入 arp 表,在配置 DAI,就能实现了。二、 接着,我又试验了 IPSG同样先不配置 dhcp snooping,只配置 IPSGSwitch(config)interface FastEthernet0/1Switch(config-if)switchport mode accessSwitch(config-i
8、f)switchport port-securitySwitch(config-if)ip verify source然后 clear arp 清空一下 mac 表现在 mac 表项是没有我的 mac 记录的,我再 ping 1.1.1.1通了,查看一下 arp 表项交换机学到了我的 mac 地址,并且记录到了 mac 地址表中。只开启 IPSG 的话,交换机还是会学习陌生的 mac 地址进行转发,所以 IPSG 不能达到客户这种需求。还发现一个问题,配置完整的 DHCP snooping 与 IPSG,我用手工绑定 mac、IP和接口Switch(config)ip source bindi
9、ng 60EB.69EB.B6FF vlan 1 1.1.1.10 interface Fa0/1这时候 pc 接入交换机 F0/1 接口,可以访问网络,但是查看 binding 表却是空的但是我 no 掉手工绑定Switch(config)no ip source binding 60EB.69EB.B6FF vlan 1 1.1.1.10 interface Fa0/1Ping 包立刻就中断了所以手工绑定还是起作用了,但是不知道为什么,show binding 表却看不出来,不知道是我交换机的问题,还是怎么回事。 这次测试主要得出结果就是发现不配置 dhcp snooping,只配置 DAI 的效果,交换机会查 arp 表项,不再学习陌生的 mac 地址,如果有 IP 与 MAC 绑定,但是又不能与接口关联的需求,那么这个方法就能实现了。