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#
然后我clear xlate后,再从VRF32ping 100.246,通了一个包,后面又不通了,同样显示是上面的xlate条目。但是如果我将这台服务器的默认网关改成VRF31内任何一个网关(比如vlan100,101,102,104等)后,就不会出现上面的问题,一切正常。Fwsm的xlate显示如下:
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#
answer:由于服务器的默认网关为108.254,而vlan208在VRF33内,所以fwsm检测到返回的数据包是从VRF33接收到的,所以会产生这条表项。fwsm不会根据ip数据包内的源和目的ip来产生这个表项,而是根据数据包接收的接口来产生的,而且只会产生高安全等级到低安全等级的表项。
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包都会丢弃。
FWSM从某一接口接收到数据包时:
action1:先匹配访问控制规则,若规则不允许则丢弃;否则继续后续操作;
action2:查找路由表等确定转发接口,确定接收与转发接口的安全等级高低;
action3:若接收接口安全等级高于转发接口,而查找目的地址的xlate,若存在且体现非正确转发接口则将数据包丢弃;否则会产生源地址的相关xlate表项;若接收接口安全等级低于转发接口,则直接转发;