安全 : Cisco IOS 防火墙

IOS-XE配置的ZBFW排除故障指南

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 23 日) | 反馈

IOS-XE配置的ZBFW排除故障指南

简介

聚合服务路由器(ASR) 1000是基于硬件的路由器。Cisco IOS XE ®软件配置编程硬件ASIC (数量流处理器(QFP), RP等等)执行他们的功能。这允许提高吞吐量和更加快速的功能。对此的缺点是更加富挑战性排除故障。用于的传统IOS命令通过基于区域的防火墙(ZBFW)轮询当前会话和丢弃计数器不再有效,虽然丢包不再在软件方面。本文描述如何最佳排除故障ASR 1000,用使用轮询在ASR的硬件丢弃计数器的命令。


贡献用Rama Darbha, Namit Agarwal和奥利维尔Pelerin, Cisco TAC工程师。

链路和文档

命令参考

Cisco ASR 1000系列汇聚服务路由器命令参考

Cisco IOS XE 3S命令参考

配置指南

IOS-XE 15S

指南概述

ZBFW配置指南

数据路径排除故障步骤

为了排除故障数据路径,您必须识别流量是否通过ASR和IOS-XE代码适当地通过。对防火墙功能的特定,数据路径故障排除遵从这些步骤:

  1. 验证配置-采集配置并且检查输出验证连接。

  2. 验证州的连接,如果流量适当地通过, IOS-XE将打开在ZBFW功能的一连接。此连接跟踪流量和状态信息在客户端和服务器之间。

  3. 验证丢弃计数器-当流量不适当地时通过, IOS-XE记录所有丢弃的数据包的一个丢弃计数器。检查此输出查出流量失败的原因。

  4. 记录-提供更加粒状的信息的聚集Syslog在连接修造和丢包。

  5. 数据包踪迹丢弃的数据包-请使用包跟踪捉住丢弃的数据包。

  6. 调试-聚集调试是多数verbose选项。调试可以有条件地得到确认数据包的确切的转发路径。

验证配置

show tech support防火墙输出如下汇总:

------------------ show clock ------------------
------------------ show version ------------------
------------------ show running-config ------------------
------------------ show parameter-map type inspect ------------------
------------------ show policy-map type inspect ------------------
------------------ show class-map type inspect ------------------
------------------ show zone security ------------------
------------------ show zone-pair security ------------------
------------------ show policy-firewall stats global ------------------
------------------ show policy-firewall stats zone ------------------
------------------ show platform hardware qfp active feature firewall
datapath <submode> -----------
------------------ show platform software firewall RP <submode> ----------------

验证连接状态

连接信息可以得到,以便在ZBFW的所有连接是列出的。输入此命令:

ASR#show policy-firewall sessions platform           
--show platform hardware qfp active feature firewall datapath scb any any
any any any all any--
[s=session  i=imprecise channel  c=control channel  d=data channel]
 14.38.112.250 41392 14.36.1.206 23 proto 6 (0:0)    [sc]

它表示从14.38.112.250的TCP Telnet连接到14.36.1.206。

注意:注意,如果运行此命令,将需要很长时间是否有在设备的大量连接。思科建议您运行此命令以特定过滤器如概述此处。

连接表可以被过滤下来到一特定源或目的地址。在平台从属方式以后请使用过滤器。选项过滤是:

radar-ZBFW1#show policy-firewall sessions platform ?
  all                     detailed information
  destination-port        Destination Port Number
  detail                  detail on or off
  icmp                    Protocol Type ICMP
  imprecise               imprecise information
  session                 session information
  source-port             Source Port
  source-vrf              Source Vrf ID
  standby                 standby information
  tcp                     Protocol Type TCP
  udp                     Protocol Type UDP
  v4-destination-address  IPv4 Desination Address
  v4-source-address       IPv4 Source Address
  v6-destination-address  IPv6 Desination Address
  v6-source-address       IPv6 Source Address
  |                       Output modifiers
  <cr>

此连接表是从14.38.112.250来源显示仅的被过滤的那么连接:

ASR#show policy-firewall sessions platform v4-source-address 14.38.112.250
--show platform hardware qfp active feature firewall datapath scb 14.38.112.250 any any any
any all any --
[s=session  i=imprecise channel  c=control channel  d=data channel]
 14.38.112.250 41392 14.36.1.206 23 proto 6 (0:0)    [sc]

当连接表被过滤时,详细的连接信息可以为更多全面分析得到。要显示此输出,请使用详细信息关键字。

ASR#show policy-firewall sessions platform v4-source-address 14.38.112.250 detail
--show platform hardware qfp active feature firewall datapath scb 14.38.112.250 any any any
any all any detail--
[s=session  i=imprecise channel  c=control channel  d=data channel]
 14.38.112.250 41426 14.36.1.206 23 proto 6 (0:0)       [sc]
 pscb : 0x8c5d4f20,  bucket : 64672, fw_flags: 0x204 0x20419441,
        scb state: active, scb debug: 0
 nxt_timeout: 360000, refcnt: 1,  ha nak cnt: 0,  rg: 0, sess id: 117753
 hostdb: 0x0, L7: 0x0, stats: 0x8e118e40, child: 0x0
 l4blk0: 78fae7a7 l4blk1: e36df99c l4blk2: 78fae7ea l4blk3: 39080000
 l4blk4: e36df90e l4blk5: 78fae7ea l4blk6: e36df99c l4blk7: fde0000
 l4blk8: 0 l4blk9: 1
 root scb: 0x0 act_blk: 0x8e1115e0
 ingress/egress intf: GigabitEthernet0/0/2 (1021), GigabitEthernet0/0/0 (131065)
 current time 34004163065573 create tstamp: 33985412599209 last access: 33998256774622
 nat_out_local_addr:port: 0.0.0.0:0 nat_in_global_addr:port: 0.0.0.0:0
 syncookie fixup: 0x0
 halfopen linkage: 0x0 0x0
 cxsc_cft_fid: 0x0
 tw timer: 0x0 0x0 0x372ba 0x1e89c181
 Number of simultaneous packet per session allowed: 25
    bucket 125084 flags 1 func 1 idx 8 wheel 0x8ceb1120

验证丢弃计数器

在XE输出更改的丢弃计数器3.9期间。在XE 3.9前,防火墙丢弃原因非常通用的。在XE 3.9以后,防火墙丢弃原因被扩展了变得更加粒状。

要验证丢弃计数器,请执行两个步骤:

  1. 确认在IOS-XE的全局丢弃计数器。这些计数器将显示什么功能丢弃了流量。功能示例包括服务质量(QoS)、网络地址转换(NAT)、防火墙等等。

  2. 一旦子功能识别,请查询子功能提供的粒状丢弃计数器。在此指南中,被分析的子功能是防火墙功能。

在QFP的全局丢弃计数器

基本命令取决于在提供在QFP间的所有丢包:

Router#show platform hardware qfp active statistics drop

此命令显示您通用的丢包全局在QFP间。这些丢包可以在所有功能。某些示例功能是:

Ipv4Acl
Ipv4NoRoute
Ipv6Acl
Ipv6NoRoute
NatIn2out
VfrErr
...etc

要看到所有丢包,请包括有值为零的计数器,使用命令:

show platform hardware qfp active statistics drop all

要清除计数器,请使用此命令。在显示它对屏幕后,它清除输出。此命令是清楚的在读,因此输出被重设到零,显示对屏幕后。

show platform hardware qfp active statistics drop clear

这是基本提供的防火墙特定丢弃计数器列表,当此命令发出时:

FirewallBackpressure
FirewallInvalidZone
FirewallL4Insp
FirewallNoForwardingZone
FirewallNonsession
FirewallPolicy
FirewallL4
FirewallL7
FirewallNotInitiator
FirewallNoNewSession
FirewallSyncookieMaxDst
FirewallSyncookie
FirewallARStandby

在QFP的防火墙功能丢弃计数器

限制用QFP全局丢弃计数器是没有在丢弃原因的粒度,并且某些丢弃原因例如Firewall4获得很超载对点有排除故障的微不足道的作用。这在IOS-XE 3.9 (15.3(2)S)从那以后被提高了,其中防火墙功能丢弃计数器被添加了。这给出更加粒状的套丢弃原因:

ASR#show platform hardware qfp active feature firewall drop all
-------------------------------------------------------------------------------
Drop Reason                                                             Packets
-------------------------------------------------------------------------------
Invalid L4 header                                                             0
Invalid ACK flag                                                              0
Invalid ACK number                                                            0
Invalid TCP initiator                                                         0
SYN with data                                                                 0
Invalid window scale option                                                   0
Invalid Segment in SYNSENT state                                              0
Invalid Segment in SYNRCVD state                                              0
TCP out of window                                                             0
TCP extra payload after FIN                                                   0
Invalid TCP flags                                                             0
Invalid sequence number                                                       0
Retrans with invalid flags                                                    0
TCP out-of-order segment                                                      0
SYN flood drop                                                                0
Internal Error - synflood hostdb alloc fail                                   0
Synflood blackout drop                                                        0
Half-open session limit exceed                                                0
Too many packet per flow                                                      0
Too many ICMP error packets per flow                                          0
Unexpect TCP payload in 3-way handshake                                       0
Internal error - Undefined direction                                          0
SYN inside current window                                                     0
RST inside current window                                                     0
Stray Segment                                                                 0
RST sent to responder                                                         0
ICMP Internal Error - Missing NAT info                                        0
ICMP Internal Error - Fail to get ErrPkt                                      0
ICMP Internal Error - Fail to get Stats blk                                   0
ICMP Internal Error - direction undefined                                     0
ICMP packet rcvd in SCB close state                                           0
Missed IP hdr in ICMP packet                                                  0
ICMP Error Pkt has no IP or ICMP                                              0
ICMP Error Pkt exceeds burst limit                                            0
ICMP Unreachable packet exceeds limit                                         0
ICMP Error Pkt invalid sequence                                               0
ICMP Error Pkt invalid ACK                                                    0
ICMP Error Pkt too short                                                      0
Exceed session limit                                                          0
Packet rcvd in SCB close state                                                0
Packet rcvcd after CX requested teardown                                      0
CXSC not running                                                              0
Zone-pair without policy                                                      0
Same zone without Policy                                                      0
ICMP Error and Policy not present                                             0
Classification Failed                                                         0
Policy drop for non tcp/udp/icmp                                              0
PAM lookup action drop                                                        0
ICMP Error Packet TCAM missed                                                 0
Security policy misconfigure                                                  0
Internal Error - Get stat blk failed                                          0
SYN cookie max dst reached                                                    0
Internal Error - syncookie dsttbl allocation failed                           0
SYN cookie being triggered                                                    0
Fragment drop                                                                 0
Policy drop due to classification result                                      0
ICMP policy drop due to classification result                                 0
L7 segmented packet not allow                                                 0
L7 fragmented packet not allow                                                0
L7 unknown proto type                                                         0
L7 inspection returns drop                                                    0
L7 sub-channel promotion failed (no zone pair)                                0
L7 sub-channel promotion failed (no policy)                                   0
Firewall Create Session fail                                                  0
Firewall No new session allow                                                 0
Not a session initiator                                                       0
Firewall invalid zone                                                         0
Firewall AR standby                                                           0
Firewall no forwarding allow                                                  0
Firewall back pressure                                                        0
Firewall no broadcast allow                                                   0
Catch All                                                                     0

记录

ASR记录日志功能生成Syslog记录丢弃的数据包。这些Syslog在数据包为什么提供更多细节丢弃了。有sysloggings的两种类型:

  1. 本地缓冲syslogging

  2. 远程高速的记录日志

本地缓冲Syslogging

要查出丢包的原因,您能使用通用的ZBFW故障排除,例如启用日志丢包。有两种方式配置丢包记录日志。

方法 1:请使用Inspect全局parameter-map记录丢弃的数据包。

parameter-map type inspect-global
     log dropped-packets

 方法 2:请使用自定义Inspect parameter-map记录仅特定类的丢弃的数据包。

parameter-map type inspect LOG_PARAM
     log dropped-packets
! policy-map type inspect ZBFW_PMAP class type inspect ZBFW_CMAP inspect LOG_PARAM

这些信息传送对日志或根据ASR如何控制为记录配置。这是丢弃日志消息的示例。

*Apr  8 13:20:39.075: %IOSXE-6-PLATFORM: F0: cpp_cp: QFP:0.0 Thread:103
TS:00000605668054540031 %FW-6-DROP_PKT: Dropping tcp pkt from GigabitEthernet
0/0/2 14.38.112.250:41433 => 14.36.1.206:23(target:class)-(INSIDE_OUTSIDE_ZP:
class-default)
due to Policy drop:classify result with ip ident 11579 tcp flag 0x2, seq
2014580963, ack 0

本地的限制缓冲Syslogging

  1. 这些日志是根据bugID被限制的速率CSCud09943。

  2. 除非特定配置应用,这些日志可能不打印。例如,除非日志关键字指定,由类别默认值数据包的被丢弃的数据包没有已登录:
policy-map type inspect ZBFW_PMAP
  class class-default
   drop log

远程高速的记录日志

高速的记录日志(HSL)生成Syslog直接地从QFP并且发送它到已配置的Netflow HSL收集器。这是ZBFW的推荐的记录日志解决方案在ASR。

对于HSL,请使用此配置:

parameter-map type inspect inspect-global
   log template timeout-rate 1
   log flow-export v9 udp destination 1.1.1.1 5555

为了使用此配置, NetFlow收集器有能力在Netflow版本9上要求。这被选派在:

配置指南:基于区域的策略防火墙, Cisco IOS XE版本3S (ASR 1000)防火墙高速的记录日志

包跟踪使用有条件的匹配

Enable (event)包跟踪通过打开有条件调试然后启用这些功能的包跟踪:

ip access-list extended CONDITIONAL_ACL
  permit ip host 10.1.1.1 host 192.168.1.1
  permit ip host 192.168.1.1 host 10.1.1.1
!
debug platform condition feature fw dataplane submode all level info
debug platform condition ipv4 access-list CONDITIONAL_ACL both

注意:因为ACL不是必要的,匹配情况能直接地使用IP地址。这配比作为允许双向跟踪的来源或目的地。此方法,如果修改配置没有允许,可以使用。

debug platform condition ipv4 address 192.168.1.1/32

打开包跟踪功能:

debug platform packet-trace copy packet both
debug platform packet-trace packet 16
debug platform packet-trace drop
debug platform packet-trace enable

 注意:有两种方式使用此功能:

  1. 如果使用debug命令平台数据包踪迹丢弃,将跟踪仅丢弃的数据包。

  2. 如果排除debug命令平台数据包踪迹丢弃,将跟踪匹配条件,包括由设备检查/通过的一个的所有数据包。

打开有条件调试:

debug platform condition start

运行测验,然后关闭调试:

debug platform condition stop

现在信息可以显示到屏幕。在本例中,互联网控制消息协议(ICMP)数据包丢弃的归结于防火墙策略:

Router#show platform packet-trace statistics
Packets Summary
  Matched  2
  Traced   2
Packets Received
  Ingress  2
  Inject   0
Packets Processed
  Forward  0
  Punt     0
  Drop     2
    Count       Code  Cause
    2           183   FirewallPolicy
  Consume  0

Router#show platform packet-trace summary
Pkt   Input            Output           State  Reason
0     Gi0/0/2          Gi0/0/0          DROP   183 (FirewallPolicy)
1     Gi0/0/2          Gi0/0/0          DROP   183 (FirewallPolicy)

Router#show platform packet-trace packet 0
Packet: 0           CBUG ID: 2980
Summary
  Input     : GigabitEthernet0/0/2
  Output    : GigabitEthernet0/0/0
  State     : DROP 183 (FirewallPolicy)
  Timestamp
    Start   : 1207843476722162 ns (04/15/2014 12:37:01.103864 UTC)
    Stop    : 1207843477247782 ns (04/15/2014 12:37:01.104390 UTC)
Path Trace
  Feature: IPV4
    Source      : 10.1.1.1
    Destination : 192.168.1.1
    Protocol    : 1 (ICMP)
  Feature: ZBFW
    Action  : Drop
    Reason  : ICMP policy drop:classify result
    Zone-pair name  : INSIDE_OUTSIDE_ZP
    Class-map name  : class-default
Packet Copy In
  c89c1d51 5702000c 29f9d528 08004500 00540000 40004001 ac640e26 70fa0e24
  01010800 172a2741 00016459 4d5310e4 0c000809 0a0b0c0d 0e0f1011 12131415
Packet Copy Out
  c89c1d51 5702000c 29f9d528 08004500 00540000 40003f01 ad640e26 70fa0e24
  01010800 172a2741 00016459 4d5310e4 0c000809 0a0b0c0d 0e0f1011 12131415

显示平台数据包踪迹数据包<num>解码命令解码信息包报头题头信息和内容。此功能在XE 3.11介绍:

Router#show platform packet-trace packet all decode
Packet: 0           CBUG ID: 2980
Summary
  Input     : GigabitEthernet0/0/2
  Output    : GigabitEthernet0/0/0
  State     : DROP 183 (FirewallPolicy)
  Timestamp
    Start   : 1207843476722162 ns (04/15/2014 12:37:01.103864 UTC)
    Stop    : 1207843477247782 ns (04/15/2014 12:37:01.104390 UTC)
Path Trace
  Feature: IPV4
    Source      : 10.1.1.1
    Destination : 192.168.1.1
    Protocol    : 1 (ICMP)
  Feature: ZBFW
    Action  : Drop
    Reason  : ICMP policy drop:classify result
    Zone-pair name  : INSIDE_OUTSIDE_ZP
    Class-map name  : class-default
Packet Copy In
  c89c1d51 5702000c 29f9d528 08004500 00540000 40004001 ac640e26 70fa0e24
  01010800 172a2741 00016459 4d5310e4 0c000809 0a0b0c0d 0e0f1011 12131415
  ARPA
    Destination MAC     : c89c.1d51.5702
    Source MAC          : 000c.29f9.d528
    Type                : 0x0800 (IPV4)
  IPv4
    Version             : 4
    Header Length       : 5
    ToS                 : 0x00
    Total Length        : 84
    Identifier          : 0x0000
    IP Flags            : 0x2 (Don't fragment)
    Frag Offset         : 0
    TTL                 : 64
    Protocol            : 1 (ICMP)
    Header Checksum     : 0xac64
    Source Address      : 10.1.1.1
    Destination Address : 192.168.1.1
  ICMP
    Type                : 8 (Echo)
    Code                : 0 (No Code)
    Checksum            : 0x172a
    Identifier          : 0x2741
    Sequence            : 0x0001
Packet Copy Out
  c89c1d51 5702000c 29f9d528 08004500 00540000 40003f01 ad640e26 70fa0e24
  01010800 172a2741 00016459 4d5310e4 0c000809 0a0b0c0d 0e0f1011 12131415
  ARPA
    Destination MAC     : c89c.1d51.5702
    Source MAC          : 000c.29f9.d528
    Type                : 0x0800 (IPV4)
  IPv4
    Version             : 4
    Header Length       : 5
    ToS                 : 0x00
    Total Length        : 84
    Identifier          : 0x0000
    IP Flags            : 0x2 (Don't fragment)
    Frag Offset         : 0
    TTL                 : 63
    Protocol            : 1 (ICMP)
    Header Checksum     : 0xad64
    Source Address      : 10.1.1.1
    Destination Address : 192.168.1.1
  ICMP
    Type                : 8 (Echo)
    Code                : 0 (No Code)
    Checksum            : 0x172a
    Identifier          : 0x2741
    Sequence            : 0x0001

调试

有条件调试

在XE3.10中,有条件调试将介绍。条件语句可以用于保证仅ZBFW功能日志调试消息与情况有关。有条件调试限制匹配ACL元素的日志的使用访问控制列表(ACL)。并且,在XE3.10之前,调试消息是更难读。debug输出在XE3.10改善使他们更加容易了解。

要启用这些调试,请输入此命令:

debug platform condition feature fw dataplane submode [detail | policy | layer4 | drop]
debug platform condition ipv4 access-list <ACL_name> both
debug platform condition start

注意必须通过ACL和定向性设置condition命令。通过使用debug命令平台情况开始,有条件调试不会实现直到他们开始。为了关闭有条件调试,请使用debug命令平台情况终止

debug platform condition stop

为了关闭有条件调试,请勿使用undebug all命令。为了关闭所有有条件调试,请输入此命令:

ASR#clear platform condition all

在XE3.14之前, ha事件调试没有条件的。结果,如果使用debug命令平台情况功能fw dataplane从属方式所有原因所有日志创建,选择的对立于情况此处。这能创建附加噪声进行的调试困难。

默认情况下,有条件的日志级别是信息。要增加/请减小级别记录日志,使用命令:

debug platform condition feature fw dataplane submode all [verbose | warning]

采集和查看调试

调试文件不打印到控制台或监视器。所有调试写入到ASR的光盘。调试写入到在文件夹tracelogs下的光盘与namecpp_cp_F0-0.log.<date>。要查看调试写入的文件,请使用输出:

ASR# cd harddisk:
ASR# cd tracelogs
ASR# dir cpp_cp_F0*
Directory of harddisk:/tracelogs/cpp_cp_F0*

Directory of harddisk:/tracelogs/

3751962  -rwx     1048795  Jun 15 2010 06:31:51 +00:00  cpp_cp_F0-0.log.5375.20100615063151
3751967  -rwx     1048887  Jun 15 2010 02:18:07 +00:00  cpp_cp_F0-0.log.5375.20100615021807
39313059840 bytes total (30680653824 bytes free)

每个调试文件将存储作为cpp_cp_F0-0.log.<date>文件。这些是使用TFTP,可以复制ASR的正常文本文件。日志文件最大在ASR是1Mb。在1Mb以后,调试写入到新的日志文件。所以每日志文件被时间戳指示文件的开始。

日志文件可能在以下位置存在:

harddisk:/tracelogs/
bootflash:/tracelogs/

因为日志文件只显示,在他们被转动后,使用此命令,日志文件可以手工被转动:

ASR#test platform software trace slot f0 cpp-control-process rotate

这将立即创建cpp_cp日志文件并且开始在qfp的新的。例如:

ASR#test platform software trace slot f0 cpp-control-process rotate
  Rotated file from: /tmp/fp/trace/stage/cpp_cp_F0-0.log.7311.20140408134406,
Bytes: 82407, Messages: 431

ASR#more tracelogs/cpp_cp_F0-0.log.7311.20140408134406
04/02 10:22:54.462 : btrace continued for process ID 7311 with 159 modules
04/07 16:52:41.164 [cpp-dp-fw]: (info): QFP:0.0 Thread:110 TS:00000531990811543397
:FW_DEBUG_FLG_HA:[]: HA[1]: Changing HA state to 9
04/07 16:55:23.503 [cpp-dp-fw]: (info): QFP:0.0 Thread:120 TS:00000532153153672298
:FW_DEBUG_FLG_HA:[]: HA[1]: Changing HA state to 10
04/07 16:55:23.617 [buginf]: (debug): [system] Svr HA bulk sync CPP(0) complex(0)
epoch(0) trans_id(26214421) rg_num(1)

此命令允许调试文件合并到更加容易处理的单个文件。它将合并在目录的所有文件,并且隔行扫描他们准时根据。当日志非常冗长和在多个文件间时,创建这可帮助:

ASR#request platform software trace slot rp active merge target bootflash:MERGED_OUTPUT.log
Creating the merged trace file: [bootflash:MERGED_OUTPUT.log]
including all messages

Done with creation of the merged trace file: [bootflash:MERGED_OUTPUT.log]

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


Document ID: 117721