FWSM xlate问题

2块FWSM分别加载在2台7609上面,做成failover的模式,没有启用context特性,默认不做nat,fwsm配置4个接口(outside、To_VRF31、To_VRF32和To_VRF33,安全等级依次增高)。7609作为核心交换,上面配置多个vlan,然后某些vlan配置在某些vrf里面。不同vrf通过fwsm互联,vrf和fwsm之间通过ospf进行路由通告。
现在碰到了这么一个问题:
一台二层交换机上接了一台服务器s1(当然服务器是接在交换机2960,2960再接在7609上),这台服务器的网口配置了多个vlan的ip地址,分别为100.246,101.246,102.246,104.246,108.246,109.246等,上接的交换机相应端口也配置了trunk,而vlan100-104属于VRF31,vlan108属于VRF33,vlan109属于VRF32,服务器的默认网关配置成vlan108的gw。我发现只要数据流量从VRF32这个路由表往100.246(或者101.246,102.246,104.246,109.246)都不通,我查看了路由表是正确的。而从fwsm上面查看信息如下:
FWSM-A-C7609# sh xlate det | grep 246
NAT from To_VRF33:123.37.108.246 to outside:123.37.108.246 flags Ii
NAT from To_VRF33:123.37.108.246 to To_VRF31:123.37.108.246 flags Ii
NAT from To_VRF33:123.37.108.246 to To_VRF32:123.37.108.246 flags Ii
NAT from To_VRF33:123.37.100.246 to To_VRF32:123.37.100.246 flags Ii
NAT from To_VRF33:123.37.101.246 to To_VRF32:123.37.101.246 flags Ii
NAT from To_VRF33:123.37.102.246 to To_VRF32:123.37.102.246 flags Ii
NAT from To_VRF33:123.37.104.246 to To_VRF32:123.37.104.246 flags Ii
NAT from To_VRF33:123.37.109.246 to To_VRF32:123.37.109.246 flags Ii
NAT from To_VRF32:123.37.109.246 to To_VRF31:123.37.109.246 flags Ii
NAT from To_VRF32:123.37.109.246 to outside:123.37.109.246 flags Ii
FWSM-A-C7609#
上面的信息显然有错误,比如123.37.100.246等应该是在To_VRF31这个接口下的,怎么会在To_VRF33下呢?
然后我clear xlate后,再从VRF32ping 100.246,通了一个包,后面又不通了,同样显示是上面的xlate条目。但是如果我将这台服务器的默认网关改成VRF31内任何一个网关(比如vlan100,101,102,104等)后,就不会出现上面的问题,一切正常。Fwsm的xlate显示如下:
FWSM-A-C7609# sh xlate det | grep 246
NAT from To_VRF33:123.37.108.246 to outside:123.37.108.246 flags Ii
NAT from To_VRF33:123.37.108.246 to To_VRF32:123.37.108.246 flags Ii
FWSM-A-C7609#
question 1:为什么会产生NAT from To_VRF33:123.37.100.246 to To_VRF32:123.37.100.246 flags Ii这样的xlate表项,123.37.100.246处于VRF31内,怎么会在VRF33里面呢?
answer:由于服务器的默认网关为108.254,而vlan208在VRF33内,所以fwsm检测到返回的数据包是从VRF33接收到的,所以会产生这条表项。fwsm不会根据ip数据包内的源和目的ip来产生这个表项,而是根据数据包接收的接口来产生的,而且只会产生高安全等级到低安全等级的表项。
question 2:为什么会有一个icmp包通,而后续的又不通了呢?fwsm从某接口接收到数据包后到底是一个什么样的处理流程呢?实现匹配nat表项然后匹配路由表,还是先匹配路由表在匹配nat表项呢?
answer:这个问题也好解释。在fwsm上面没有源和目的地址的xlate表项的时候:
从源服务器发往目的服务器的第一个请求包:fwsm从接口To_VRF32检测到数据包,匹配规则为permit,然后查找路由表确定了接收接口To_VRF32安全等级高于转发接口To_VRF31,也没有查找到关于此目的地址的xlate表项,所以就产生源地址的相关xlate表项并转发数据包;
从目的服务器发往源服务器的第一个返回包:目的服务器接收到数据包从默认网关的子接口返回数据包,此时fwsm从To_VRF33接收到返回包,匹配规则为permit,然后查找路由表确定接收接口To_VRF33安全等级高于转发接口To_VRF32,同时查找到目的地址的xlate表项符合逻辑,所以就产生源地址的相关xlate表项并转发数据包。
所以第一个icmp包通了。继续看下面的处理过程:
从源服务器发往目的服务器的第二个请求包:fwsm从接口To_VRF32检测到数据包,匹配规则为permit,然后查找路由表确定了接收接口To_VRF32安全等级高于转发接口To_VRF31,但是此时查找到目的地址的xlate表项为from To_VRF33来的,显然不符合路由表查找得知应为To_VRF31的逻辑,所以将数据包丢弃。
所以后续的icmp包都会丢弃。
通过针对不同安全等级服务器之间的icmp测试,总结出fwsm处理数据包的流程:
FWSM从某一接口接收到数据包时:
action1:先匹配访问控制规则,若规则不允许则丢弃;否则继续后续操作;
action2:查找路由表等确定转发接口,确定接收与转发接口的安全等级高低;
action3:若接收接口安全等级高于转发接口,而查找目的地址的xlate,若存在且体现非正确转发接口则将数据包丢弃;否则会产生源地址的相关xlate表项;若接收接口安全等级低于转发接口,则直接转发;
image
需要注意的是:FWSM不管有没有启用nat都会产生xlate表项,当使用no nat-control禁止nat特性时,fwsm会从高安全等级到低安全等级转发数据时针对数据包的源地址产生相应的xlate表项;而启用了nat特性后,会根据nat的配置来产生xlate表项。

你可能感兴趣的:(职场,休闲,安全等级,fwsm数据处理流程,xlate)