会话表是设备转发报文的关键表项。所以当出现业务故障时,通常可以通过查看会话表信息,大致定位发生故障的模块或阶段。
当某个业务发生问题,例如流量不通或者断断续续时,通过查看会话表可以得出以下信息:
- 如果该项业务已经建立了正确的会话表项,并且根据安全策略允许了该业务的转发。如果业务此时仍然不通,有以下几种可能原因:
- 出接口发生了硬件故障(例如接口卡损坏,网线接触不良等)
- 下行设备丢弃了相关报文
- 路由配置有错误
- 出接口发送的报文有错误
- 其他业务层面的丢包(例如带宽管理、攻击防范功能导致的丢包)
- 其他配置方面的问题
- 如果该项业务没有建立会话表项,有以下几种可能原因:
- 由于上游设备的问题或者是路由配置的问题,导致报文没有正确转发到上
- 设备上配置的安全策略不允许该报文的转发,例如安全策略动作被配置为“拒绝”,源IP被加入了黑名单等
- 入接口发生了硬件故障(例如接口卡损坏,网线接触不良等)
- 攻击防范方面,除黑名单之外,可能还有其他功能导致丢包
- 带宽管理功能可以限制会话数,当会话数超过阈值时,导致会话无法建立而直接丢包
- 其他配置方面的问题
通过Web方式查看会话表的方法如下:
- 选择“监控 > 会话表”。
- 显示“会话表”界面,查看会话表信息。
- 单击“高级查询”,选择查询条件,可以筛选查看符合条件的会话表项。
项目 | 描述 |
---|---|
虚拟系统 | 查看指定虚拟系统的会话表项。 |
协议 | 查看指定协议的会话表项。 |
应用 | 查看指定应用的会话表项。 |
源安全区域/目的安全区域 | 查看指定源安全区域/目的安全区域的会话表项。 |
源地址/目的地址 | 查看源地址/目的地址为指定地址或地址范围的会话表项。 |
NAT源地址/NAT目的地址 | 查看NAT转换后的源地址/目的地址为指定地址或地址范围的会话表项。 |
源端口/目的端口 | 查看源端口/目的端口为指定端口的会话表项。 |
NAT源端口/NAT目的端口 | 查看NAT转换后的源端口/目的端口为指定端口的会话表项。 |
安全策略 | 查看匹配指定安全策略的会话表项。 |
用户名 | 查看指定用户的会话表项。 |
最近一段时间创建的会话 | 查看指定时间范围内创建的会话表项。 比如,配置为5分钟,表示查看最近5分钟内创建的会话表项。说明:此处只能查看当前依旧存活的会话信息,假如某条会话创建以后,很快又被删除或是老化掉了,则该条会话信息将不会在此显示。 |
出接口 | 查看指定出接口的会话表项。 |
报文数 | 查看正向报文数、反向报文数或双向报文数大于等于、小于等于或等于指定值的会话表项。 正向是指与会话表项中源安全区域到目的安全区域相同的方向。同理,反向是指与会话表项中源安全区域到目的安全区域相反的方向。 说明:仅USG6000和NGFW Module支持按双向报文数筛选。 |
- 对于USG9500,当配置了按正向报文数或反向报文数筛选查询会话表项后,在查看某条会话表的详细信息时,可能会出现当前会话已老化无法查看的情况。
- 对于NAT64会话,基于源/目的地址或端口查询会话时,只能基于NAT转换前的地址/端口查询,不能基于NAT转换后的地址/端口查询
会话表在某一时间段的显示如下:
图5-4 会话表在某一时间段的显示
单击“详细信息”对应的,可以查看会话表的详细信息。具体字段含义如下:
项目 | 描述 |
---|---|
创建时间 | 会话表创建的时间。 |
协议 | 会话表的协议类型。 |
源虚拟系统/目的虚拟系统 | 会话表的源虚拟系统和目的虚拟系统。 |
源安全区域/目的安全区域 | 会话表的源安全区域/目的安全区域。 |
源地址/目的地址 | 会话表的源IP地址/目的IP地址。 |
NAT源地址/NAT目的地址 | 会话进行NAT转换后的源地址/目的地址。 |
源端口/目的端口 | 会话表的源端口/目的端口。 |
NAT源端口/NAT目的端口 | 会话进行NAT转换后的源端口/目的端口。 |
正向报文数(包)/正向字节数(B) | 会话正方向的报文数(单位为包)和字节数(单位为Byte)。 |
反向报文数(包)/反向字节数(B) | 会话反方向的报文数(单位为包)和字节数(单位为Byte)。 |
出接口/出接口MAC地址 | 会话的出接口/出接口的MAC地址。 |
下一跳 | 会话的下一跳IP地址。 |
安全策略 | 会话命中的安全策略。 |
应用 | 会话表的应用类型。 |
用户名 | 会话表的用户名。 |
会话超时时间 | 会话表的老化时间。 |
会话超时剩余时间 | 会话表剩余的存活时间。 |
通过命令行方式查看会话表的方法如下:
- 执行命令system-view,进入系统视图。
- 执行以下命令查看IPv4会话表信息。
- display firewall session table [ verbose ] [ vsys vsys-name ] [ source-zone source-zone | destination-zone destination-zone | { default-policy | policy policy-name } | source-cpe start-ipv6-address [ to end-ipv6-address ] | source { inside start-ip-address [ to end-ip-address ] | global start-ip-address [ to end-ip-address ] } | destination-cpe start-ipv6-address [ to end-ipv6-address ] | destination { inside start-ip-address [ to end-ip-address ] | global start-ip-address [ to end-ip-address ] } | slot slot-id cpu cpu-id | protocol { id | tcp | udp | sctp | icmp | ah | esp | gre } | application application-name | source-port { inside port-number | global port-number } | destination-port { inside port-number | global port-number } | interface { interface-name | interface-type interface-number } | service service-type | vlan vlan-id | created-in time | long-link | user user-name | { local | remote } | uniderection ] *
- display firewall session tableverbose [ vsys vsys-name ] [ source-zone source-zone | destination-zone destination-zone | { default-policy | policy policy-name } | source-cpe start-ipv6-address [ to end-ipv6-address ] | source { inside start-ip-address [ to end-ip-address ] | global start-ip-address [ to end-ip-address ] } | destination-cpestart-ipv6-address [ to end-ipv6-address ] | destination { inside start-ip-address [ to end-ip-address ] | global start-ip-address [ to end-ip-address ] } | slot slot-id cpucpu-id | protocol { id | tcp | udp | sctp | icmp | ah | esp | gre } | application application-name | source-port { inside port-number | global port-number } | destination-port { inside port-number | global port-number } | interface { interface-name | interface-type interface-number } | service service-type | vlan vlan-id | created-in time | long-link | user user-name | { local | remote } | uniderection | { reverse-packet | forward-packet | total-packet } { over | below | equal } packet-value ] *
- display firewall session table [ verbose ] all-systems [ source-cpe start-ipv6-address [ to end-ipv6-address ] | source { inside start-ip-address [ to end-ip-address ] | global start-ip-address [ to end-ip-address ] } | destination-cpe start-ipv6-address [ to end-ipv6-address ] | destination { inside start-ip-address [ to end-ip-address ] | global start-ip-address [ to end-ip-address ] } | slot slot-id cpu cpu-id | protocol { id | tcp | udp | sctp | icmp | ah | esp | gre } | source-port { inside port-number | global port-number } | destination-port { inside port-number | global port-number } | interface { interface-name | interface-type interface-number } | serviceservice-type | vlanvlan-id | created-intime | long-link | { local | remote } ] *
- display firewall session tableverboseall-systems [ source-cpe start-ipv6-address [ to end-ipv6-address ] | source { inside start-ip-address [ toend-ip-address ] | global start-ip-address [ to end-ip-address ] } | destination-cpe start-ipv6-address [ to end-ipv6-address ] | destination { inside start-ip-address [ to end-ip-address ] | global start-ip-address [ to end-ip-address ] } | slot slot-id cpucpu-id | protocol { id | tcp | udp | sctp | icmp | ah | esp | gre } | source-port { inside port-number | global port-number } | destination-port { inside port-number | global port-number } | interface { interface-name | interface-type interface-number } | service service-type | vlan vlan-id | created-in time | long-link | { local | remote } | { reverse-packet | forward-packet | total-packet } { over | below | equal } packet-value ] *
- display firewall session table [ verbose ] slb [ destination { vip start-vip-address [ to end-vip-address ] | rip start-rip-address [ to end-rip-address ] } | source start-source-address [ to end-source-address ] | destination-port { vport vport-number | rport rport-number } | source-port source-port-number | slot slot-idcpucpu-id ] *
- display firewall session table [ verbose ] session-id session-id
在双机热备的组网环境中,可以通过选择local或remote参数,按需要查看本端设备或对端设备的会话表信息。
由于通常情况下设备上的会话表数目很大,逐条查看非常困难。所以该条命令中提供多个参数可以选择需要查看的会话表的类型,有效利用这些参数可以减少查看会话表时显示的条目,缩短定位问题的时间。
对于NAT64会话,基于源/目的地址或端口查询会话时,只能基于NAT转换前的地址/端口查询,不能基于NAT转换后的地址/端口查询。
如果NAT转换前为IPv4地址,则使用display firewall session table [ verbose ]命令结合以下一个或多个参数组合查询:source inside start-ip-address [ to end-ip-address ]、destination global start-ip-address [ to end-ip-address ]、source-port inside port-number、destination-port global port-number。
在不使用verbose的情况下,会显示简要会话表项,格式如下:
Current Total Sessions : NUM TYPE VPN:SRCVPN --> DSTVPNSRCIP --> DSTIP
在使用verbose的情况下,会显示详细会话表项,以USG6000E/USG6000为例,格式如下:
Current Total Sessions : NUM TYPE VPN:SRCVPN --> DSTVPN ID: ID-NUMBER Zone: SRCZONE--> DSTZONE Remote TTL: TOTALTIME Left: LEFTTIME Interface: OUTINTERFACE Nexthop: IP-ADDRESS MAC: MACADDRESS <-- packets:NUMBER bytes:BYTES --> packets:NUMBER bytes:BYTES SRCIP --> DSTIP PolicyName: POLICYNAME
各个参数含义如表1所示。其中斜体参数会根据实际情况显示不同内容。
表5-6 会话表项参数含义参数
含义
TYPE
该会话的协议类型,可能出现的情况与display firewall session table命令中的protocol参数的取值范围相同。
VPN:SRCVPN --> DSTVPN
该会话的源VPN实例名称和目的VPN实例名称。
ID: ID-NUMBER
该会话的ID号。
Zone: SRCZONE--> DSTZONE
该会话的源安全区域名称和目的安全区域名称。
Remote
双机热备场景下,当该会话是由主机备份过来的会话,会显示此标记。
- 双机热备场景下,Remote说明当前会话是备份会话,该会话是从对端设备备份过来的。
- 对于USG9500,CPU备份场景下,Remote说明该会话是从主CPU上备份过来的。
TTL: TOTALTIME
会话表项总的存活时间。
Left: LEFTTIME
会话表项剩余的存活时间。
Interface: OUTINTERFACE
报文出接口的接口号。
Nexthop: IP-ADDRESS
报文下一跳的IP地址。
MAC: MACADDRESS
报文下一跳的MAC地址。
<-- packets:NUMBERbytes:BYTES
反向报文数统计以及字节数统计。
--> packets:NUMBER bytes:BYTES
正向报文数统计以及字节数统计。正常情况下应该与收到的报文数以及字节数相同,如果变少,说明存在丢包的情况。
SRCIP --> DSTIP
该会话的源IP地址、源端口号、目的IP地址、目的端口号。
地址的格式是x.x.x.x:portx[y.y.y.y:porty],其中portx和porty分别是源和目的端口号。括号内为NAT转换后地址。如果没有进行NAT转换,则不显示括号内的内容。
PolicyName: POLICYNAME
报文匹配的策略名称。
TCP State:TCPState
TCP连接状态,仅TCP会话显示此字段。
- connecting:表示设备收到SYN首包,TCP连接正在建立。
- established:表示设备收到ACK包,TCP连接已经建立完成。
- fin-1:表示设备收到第一个FIN包,TCP连接正在断开。
- close:表示设备收到第二个FIN包,TCP连接已经断开。
- 查看IPv6会话表信息。
- display firewall ipv6 session table [ verbose ] [ vsysvsys ] [ source-zone source-zone | destination-zone destination-zone| { default-policy | policy policy-name } | source start-ipv6-address [ to end-ipv6-address ] | destination start-ipv6-address [ to end-ipv6-address ] | application application-type | protocol { id | tcp | udp | icmp | ah | esp | gre } | service service-type | source-port port-number | destination-port port-number | interface { interface-name | interface-type interface-number } | vlan vlan-id | created-in time | long-link | user user-name | { local | remote } | slot slot-idcpucpu-id ] *
- display firewall ipv6 session tableverbose [ vsysvsys ] [ source-zone source-zone | destination-zone destination-zone| { default-policy | policy policy-name } | source start-ipv6-address [ to end-ipv6-address ] | destination start-ipv6-address [ to end-ipv6-address ] | application application-type | protocol { id | tcp | udp | icmp | ah | esp | gre } | service service-type | source-port port-number | destination-port port-number | interface { interface-name | interface-type interface-number } | vlan vlan-id | created-in time | long-link | user user-name | { local | remote } | slot slot-idcpucpu-id | { reverse-packet | forward-packet | total-packet } { over | below | equal } packet-value ] *
- display firewall ipv6 session table [ verbose ] all-systems [ source start-ipv6-address [ to end-ipv6-address ] | destination start-ipv6-address [ to end-ipv6-address ] | protocol { id | tcp | udp | icmp | ah | esp | gre } | service service-type | source-port port-number | destination-port port-number | interface { interface-name | interface-type interface-number } | vlan vlan-id | created-in time | long-link | { local | remote } | slot slot-id cpucpu-id ] *
- display firewall ipv6 session tableverboseall-systems [ source start-ipv6-address [ to end-ipv6-address ] | destination start-ipv6-address [ to end-ipv6-address ] | protocol { id | tcp | udp | icmp | ah | esp | gre } | service service-type | source-port port-number | destination-port port-number | interface { interface-name | interface-type interface-number } | vlan vlan-id | created-in time | long-link | { local | remote } | slot slot-idcpucpu-id | { reverse-packet | forward-packet | total-packet } { over | below | equal } packet-value ] *
- display firewall ipv6 session table [ verbose ] session-id session-id
对于NAT64会话,基于源/目的地址或端口查询会话时,只能基于NAT转换前的地址/端口查询,不能基于NAT转换后的地址/端口查询。
如果NAT转换前为IPv6地址,则使用display firewall ipv6 session table [ verbose ]命令结合以下一个或多个参数组合查询:source inside start-ipv6-address [ to end-ipv6-address ]、destination global start-ipv6-address [ to end-ipv6-address ]、source-port inside port-number、destination-port global port-number。
- 执行命令export firewall session table ftp-serverserver-addressusernamepasswordfile-name,发送会话详细信息到指定的FTP服务器(如PC)。
除USG6635E/6640E-K/6655E、USG6680E和USG6712E/6716E/USG9500之外,其他型号均支持该命令。
目前只支持此FTP服务器使用默认的21端口,否则会话信息无法发送。