Skip to content

天融信的debug功能

1debug说明:

TOS 3.3.005以上版本下使用

通常遇到了防火墙的故障时一般是通过抓包的方式来查看进出的数据包,但是有些情况下设备不支持抓包(如:425平台)或者通过抓包无法分析出故障,那么这种情况下可以通过防火墙的DEBUG功能(005以上版本都可以支持,与硬件平台没关系)来进行故障的定位,这个功能可以观察数据包在防火墙不同的模块间数据转发的一个过程,可以很快定位数据故障的原因,下面介绍一下这个功能的基本使用方法和一个故障定位的案例。
系统模块开关状态,默认是关闭。
debug module show
可以看到系统的模块的开关状态的调试级别。
开启模块的调试功能,调试级别改为4级。
debug module enable name session level 4
debug module enable name ncore-switch level 4
debug module enable name ncore-packetcheck level 4
debug module enable name ncore-hook level 4
debug module enable name ncore-route level 4
debug module enable name ncore-arp level 4
debug module enable name ncore-packetsend level 4
debug module enable name suitstate_mod level 4
debug module enable name ha_mod level 4
debug module enable name ha_sync level 4
debug module enable name bpf level 4
debug module enable name pf level 4
debug module enable name ip_mac level 4
debug module enable name fw_nat_module level 4
debug module enable name as_info level 4
debug module enable name ids level 4
debug module enable name routed level 4
注意,设备不一样模块数会有所不同。
配置过滤策略,只输出主机地址为172.16.1.2的主机地址的debug信息
debug filter set host-ip1 172.16.1.2 host-ip2 172.16.1.2
启动debug输出
debug start
查看过滤条件
debug filter show

2,案例:

用户通过vpn后无法访问保护主机,但是可以ping通这台机器,设备是425平台无法抓包,无法通过抓包来定位问题。
X86的设备还原故障时现象一样
抓包可以看到防火墙收到了包系统没有转发出去。
01:45:59.888508 R@ppp0 In ethertype IPv4 (0x0800), length 64: (tos 0x0, ttl 128, id 7215, offset 0, flags [DF], proto: TCP (6), length: 48) 10.1.1.2.1377 > 172.16.1.2.23: S, cksum 0xaa90 (correct), 217698000:217698000(0) win 16384 <mss 1260,nop,nop,sackOK>
01:46:02.840808 R@ppp0 In ethertype IPv4 (0x0800), length 64: (tos 0x0, ttl 128, id 7221, offset 0, flags [DF], proto: TCP (6), length: 48) 10.1.1.2.1377 > 172.16.1.2.23: S, cksum 0xaa90 (correct), 217698000:217698000(0) win 16384 <mss 1260,nop,nop,sackOK>
01:46:08.856214 R@ppp0 In ethertype IPv4 (0x0800), length 64: (tos 0x0, ttl 128, id 7236, offset 0, flags [DF], proto: TCP (6), length: 48) 10.1.1.2.1377 > 172.16.1.2.23: S, cksum 0xaa90 (correct), 217698000:217698000(0) win 16384 <mss 1260,nop,nop,sackOK>

设备debug输出信息为:
session : -----------------------------------------
session : Packet(protocol=6) entering session
session : new session :proto=6 10.1.1.2/1371 <==> 172.16.1.2/23 //
主机访问服务器的23端口,是一个新的连接//
session : TCP session get SYN packet, change server status to SYN RCVD
session : new session created
ncore-hook : Datagram input HOOK 1 SE ipsec_post_bridge
ncore-hook : Datagram input HOOK 1 SE se_pf_postsession
ncore-hook : Datagram input HOOK 1 SE dpi_pre_nat
ncore-hook : Datagram input HOOK 1 SE se_syncookie //
数据包在syncookie模块没有转发出去//

session : syn cookie get SYN from client.
session : syn cookie send SYN+ACK to client.
ncore-hook : Datagram input HOOK 3 SE ipsec_pre_routing //
数据包没有走到下一个模块上,说明问题就出现在与syn代理方面的配置上,后检查发现设备对172.16.0.0这个子网做了syn代理处理,但是即使配置syn代理系统也应该把数据包转发出去,因此初步怀疑syn代理机制有bug存在。//

可以通过修改配置来解决,去掉syn代理后网络正常。输出信息如下:
session : -----------------------------------------
session : Packet(protocol=6) entering session
session : new session :proto=6 10.1.1.2/3536 <==> 172.16.1.2/23 //
新建连接//
session : TCP session get SYN packet, change server status to SYN RCVD //syn
//
session : new session created
ncore-hook : Datagram input HOOK 1 SE ipsec_post_bridge //
经过了vpn模块//
ncore-hook : Datagram input HOOK 1 SE se_pf_postsession //
经过了防火墙的pf规则//
ncore-hook : Datagram input HOOK 1 SE dpi_pre_nat
ncore-hook : Datagram input HOOK 1 SE se_syncookie //
经过了syn代理模块//
ncore-hook : Datagram input HOOK 1 SE se_nat
fw_nat_module : [dnat handle] before nat proto:[6] 10.1.1.2(3536) ==> 172.16.1.2(23)
ncore-hook : Datagram input HOOK 1 SE se_firewall
fw_nat_module : [fw handle] policy [8376] matched //
匹配到了防火墙的访问控制策略id8376//
ncore-hook : Datagram input HOOK 1 SE se_firewall
ncore-hook : Datagram input HOOK 1 SE se_nat
fw_nat_module : [snat handle] before nat proto:[6] 10.1.1.2(3536) ==> 172.16.1.2(23) //
匹配到了防火墙的地址转换策略id8386//
fw_nat_module : [snat handle] policy [8386] matched
fw_nat_module : [snat handle] after nat proto:[6] 172.16.1.1(3536) ==> 172.16.1.2(23)
ncore-hook : Datagram input HOOK 1 SE se_firewall
ncore-hook : Datagram input HOOK 1 SE dpi_post_nat
ncore-hook : Datagram input HOOK 1 SE ffr_post_nat
ncore-hook : Datagram input HOOK 1 SE se_pf_postsession
session : Session confirm success, total confirm number is 182803 //
会话建立完成会话号为:182803//
ncore-hook : Datagram input HOOK 3 SE ids_pre_routing
ids : 0.0.0.0-->172.16.1.2, config not found //
匹配防火墙ids策略//
ncore-hook : Datagram input HOOK 3 SE se_pf_postsession
ncore-hook : Datagram input HOOK 3 SE se_firewall
ncore-hook : Datagram input HOOK 3 SE dpi_pre_routing
ncore-hook : Datagram input HOOK 3 SE ffr_prerouting
ncore-hook : Datagram input HOOK 3 SE bridge_chk
ncore-hook : Datagram input HOOK 3 SE ipsec_pre_routing
ncore-hook : Datagram input HOOK 4 SE tos_qos_policy

ncore-packetcheck : begin to tos_tb.

ncore-hook : Datagram input HOOK 0 SE ipsec_rcv

ncore-hook : Datagram input HOOK 0 SE ids_linkin

ncore-hook : Datagram input HOOK 0 SE ip_mac

ip_mac : ip mac accept //
匹配防火墙ip+mac策略//
ncore-hook : Datagram input HOOK 0 SE bpf

ncore-hook : Datagram input HOOK 0 SE igmp_local_in

ncore-hook : Datagram input HOOK 0 SE se_ha
//
第一个数据包完成//

//下面是二个回应数据包//
session : -----------------------------------------
session : Packet(protocol=6) entering session
session : Old session: proto=6 172.16.1.2/23 ==> 172.16.1.1/3536
session : TCP session got SYN ACK packet, change server status to SACK WAIT
session : cheat check, need nat
session : Old session packet accept
ncore-hook : Datagram input HOOK 3 SE ids_pre_routing

ncore-hook : Datagram input HOOK 3 SE se_pf_postsession

ncore-hook : Datagram input HOOK 3 SE se_firewall

ncore-hook : Datagram input HOOK 3 SE dpi_pre_routing

ncore-hook : Datagram input HOOK 3 SE ffr_prerouting

ncore-hook : Datagram input HOOK 3 SE bridge_chk

ncore-hook : Datagram input HOOK 3 SE ipsec_pre_routing

ncore-hook : Datagram input HOOK 4 SE tos_qos_policy

ncore-packetcheck : begin to tos_tb.

ncore-hook : Datagram input HOOK 0 SE ipsec_rcv

ncore-hook : Datagram input HOOK 0 SE ids_linkin
ncore-hook : Datagram input HOOK 0 SE ip_mac
ip_mac : ip mac accept
ncore-hook : Datagram input HOOK 0 SE bpf
ncore-hook : Datagram input HOOK 0 SE igmp_local_in
ncore-hook : Datagram input HOOK 0 SE se_ha

//下面是三个回应数据包//
session : -----------------------------------------
session : Packet(protocol=6) entering session
session : Old session: proto=6 10.1.1.2/3536 ==> 172.16.1.2/23
session : Got ACK packet , TCP handshake success
session : cheat check, need nat
session : Old session packet accept
ncore-hook : Datagram input HOOK 3 SE ids_pre_routing

ncore-hook : Datagram input HOOK 3 SE se_pf_postsession

ncore-hook : Datagram input HOOK 3 SE se_firewall

ncore-hook : Datagram input HOOK 3 SE dpi_pre_routing

ncore-hook : Datagram input HOOK 3 SE ffr_prerouting

ncore-hook : Datagram input HOOK 3 SE bridge_chk

ncore-hook : Datagram input HOOK 3 SE ipsec_pre_routing

ncore-hook : Datagram input HOOK 4 SE tos_qos_policy

ncore-packetcheck : begin to tos_tb.

ncore-hook : Datagram input HOOK 0 SE ipsec_rcv

ncore-hook : Datagram input HOOK 0 SE ids_linkin

ncore-hook : Datagram input HOOK 0 SE ip_mac

ip_mac : ip mac accept
ncore-hook : Datagram input HOOK 0 SE bpf

ncore-hook : Datagram input HOOK 0 SE igmp_local_in

ncore-hook : Datagram input HOOK 0 SE se_ha
//
连接建立完成//

session : -----------------------------------------
session : Packet(protocol=6) entering session
session : Old session: proto=6 172.16.1.2/23 ==> 172.16.1.1/3536
session : cheat check, need nat
session : Old session packet accept
ncore-hook : Datagram input HOOK 3 SE ids_pre_routing

ncore-hook : Datagram input HOOK 3 SE se_pf_postsession

ncore-hook : Datagram input HOOK 3 SE se_firewall

ncore-hook : Datagram input HOOK 3 SE dpi_pre_routing

ncore-hook : Datagram input HOOK 3 SE ffr_prerouting

ncore-hook : Datagram input HOOK 3 SE bridge_chk

ncore-hook : Datagram input HOOK 3 SE ipsec_pre_routing

ncore-hook : Datagram input HOOK 4 SE tos_qos_policy

ncore-packetcheck : begin to tos_tb.

ncore-hook : Datagram input HOOK 0 SE ipsec_rcv

ncore-hook : Datagram input HOOK 0 SE ids_linkin

ncore-hook : Datagram input HOOK 0 SE ip_mac

ip_mac : ip mac accept
ncore-hook : Datagram input HOOK 0 SE bpf

ncore-hook : Datagram input HOOK 0 SE igmp_local_in

ncore-hook : Datagram input HOOK 0 SE se_ha

session : -----------------------------------------
session : Packet(protocol=6) entering session
session : Old session: proto=6 10.1.1.2/3536 ==> 172.16.1.2/23
session : cheat check, need nat
session : Old session packet accept
ncore-hook : Datagram input HOOK 3 SE ids_pre_routing

ncore-hook : Datagram input HOOK 3 SE se_pf_postsession
ncore-hook : Datagram input HOOK 3 SE se_firewall

ncore-hook : Datagram input HOOK 3 SE dpi_pre_routing

ncore-hook : Datagram input HOOK 3 SE ffr_prerouting

ncore-hook : Datagram input HOOK 3 SE bridge_chk

ncore-hook : Datagram input HOOK 3 SE ipsec_pre_routing

ncore-hook : Datagram input HOOK 4 SE tos_qos_policy

ncore-packetcheck : begin to tos_tb.

ncore-hook : Datagram input HOOK 0 SE ipsec_rcv

ncore-hook : Datagram input HOOK 0 SE ids_linkin

ncore-hook : Datagram input HOOK 0 SE ip_mac
ip_mac : ip mac accept
ncore-hook : Datagram input HOOK 0 SE bpf
ncore-hook : Datagram input HOOK 0 SE igmp_local_in
ncore-hook : Datagram input HOOK 0 SE se_ha

总体而言,这个debug功能相对于tcpdump功能而言要复杂详细得多,可以分析判断出系统内部的一些问题。

评论与留言

欢迎留言。你可以匿名留言,也可以自愿留下网名或邮箱;邮箱不会公开展示。

还没有留言,欢迎交流。

发表留言

网络分析技术档案