多交换机互联场景下,应用基于ACL的流策略来控制VLAN间流量互访所导致的问题及解决方法

发布时间:  2015-10-30 浏览次数:  895 下载次数:  0
问题描述
如图所示,两台交换机互联,互联接口配置trunk类型允许所有VLAN通过,交换机与下挂PC之间使用access类型连接。

图示 多交换机互联场景下,应用基于ACL的流策略来控制VLAN间流量互访组网图



客户需求如下:

VLAN30仅允许VLAN20的流量进入,同时拒绝其他所有流量。假设VLAN10的IP地址段为10.0.0.0/24,VLAN20的IP地址段为20.0.0.0/24,VLAN30的IP地址段为30.0.0.0/24。

接口配置可以参考图5-1,此处略去。

与流量控制相关的Switch2的关键配置如下:

#
acl name vlan30_inbound
rule 5 permit ip source 20.0.0.0 0.0.0.255 destination 30.0.0.0 0.0.0.255
rule 10 deny ip
#
traffic classifier vlan30_inbound
if-match acl vlan30_inbound 
#
traffic behavior vlan30_inbound
permit

traffic policy vlan30_inbound match-order config 
classifier vlan30_inbound behavior vlan30_inbound
#
vlan 30
traffic-policy vlan30_inbound inbound
#

完成配置后,测试结果如下:

1、VLAN30网络只允许VLAN20的流量访问。
2、Switch1上的VLAN10的流量无法访问Switch2的VLAN20网络。
处理过程
首先,VLAN下基于ACL的流策略是对属于该VLAN的所有物理接口操作生效的。基于这个前提,在单台交换机的情况下,上述配置是可以完全达到要求的。但是,在多交换机互联的情况下,就没这么简单了。除了实现结果1的需求外,还带来了计划外的结果2(Switch1上的VLAN10的流量无法访问Switch2的VLAN20网络)。

这其中原因在于:

1、交换机之间通过trunk模式互联的场景下,互联trunk接口允许所有VLAN通过。
2、只在Switch2上配置,并应用于VLAN30上的报文过滤流策略除了在普通的属于VLAN30的access接口下生效外,在放行VLAN30的互联trunk端口下也生效了。

所以也就导致了以上问题的产生。
解决方案
由于华为交换机基于VLAN的报文控制使用的机制如上,所以解决上述问题最有效及快捷的方法是:创建一个新的报文过滤策略,允许所有流量通过,然后应用在级联trunk端口上。由于物理接口下的策略优先于VLAN下的策略,所有通过互联通道的流量不受VLAN下策略影响。

Switch2的具体配置如下:

#
acl 2000
rule permit ip
#
traffic classifier inter-permit
if-match acl 2000
#
traffic behavior inter-permit
permit
#
traffic policy inter-permit
classifier inter-permit behavior inter-permit
#
interface Eth-trunk 1----------------交换机之间的互联接口
traffic-policy inter-permit inbound
#
建议与总结
此案例事实上是基于客户使用华为交换机替换友商C设备后,在实现报文过滤时,由于两家设备之间不同的配置及实现机制引出来的:客户在相同组网的情况下,使用友商C的设备实现相同的需求,只需要在Switch2上的interface vlanif30下应用ACL即可,不会引入多余的结果。所以,在使用华为交换机通过ACL来实现VLAN间的流量访问控制时,要注意实际策略的生效接口,严格按照产品文档来进行配置设计及验证。

END