一、为什么要抓包

        平时在调试设备中最有效的排错手段就是抓包,有些时候因为网络环境不一样总会出现抓包看不到的情况,这里给大家整合了一下抓包的案例。

(1)以ICMP报文做测试:

     system tcpdump -ni any icmp and host 1.2.4.8 为例

这个可以不进行修改

     any 表示抓取哪一个物理口的数据包any是所有,可以添加具体接口例如eth1、feth1

     icmp表示抓取icmp协议的报文  例如ping 、windows中的tracert

     and 多项过滤条件中间需要加上and

     host 表示抓取的主机地址

 (2)其他常用的过滤条件

     net 表示抓取的子网内 例如 system tcpdump –ni any net 192.168.1.0/24

     port 表示抓取的端口 例如 system tcpdump –ni any port 8080

     -evv 可以抓取更详细的报文参数例如显示数据包的源\目的MAC地址、VLAN ID等信息 例如 system tcpdump –ni any host 1.2.4.8 –evvvvvv

其他还有更多的参数可以百度tcpdump查看。

抓取报文后

天融信防火墙python脚本 天融信防火墙命令行_天融信防火墙python脚本

Reth5 代表从eth5接口收到的报文

X@dummy 代表数据包是从设备本身产生的,例如ping设备管理接口、管理设备(NG不显示dummy显示为M)

Xeth5 代表从eth5接口发出的报文

二、路由模式

  路由模式基本上是最常见的部署模式,也是抓包最方便的不用添加其他的过滤条件,直接输入TCPDUMP命令即可 例如PC PING 1.2.4.8

system tcpdump -ni any icmp and host 1.2.4.8

天融信防火墙python脚本 天融信防火墙命令行_h5_02

 

三、VLAN

案例中的vlan ID是 1000

        Access模式:和路由模式一样,因为Access接口在转发的时候会移出TAG ID 也就是VLAN ID。(同时也解释了trunk抓包的时候不加vlan为什么看不到报文)

        Trunk模式:

        TOS系统:system tcpdump -ni eth1 vlan 1000  抓包必须把any替换成对应接口

天融信防火墙python脚本 天融信防火墙命令行_抓包_03

        NG系统:system tcpdump -ni any vlan and icmp and host 1.2.4.8  NG系统上接口属性可以选择any,vlan属性后面也可以不写vlanID可以抓取所有VLAN



四、链路聚合

链路聚合路由模式:

        抓包和路由模式部署的时候一样,不用添加其他过滤条件,直接输入TCPDUMP命令即可 例如PC PING 1.2.4.8

system tcpdump -ni any icmp and host 1.2.4.8

天融信防火墙python脚本 天融信防火墙命令行_网络_04

链路聚合交换模式(access):

        和路由模式一样,因为Access接口在转发的时候会移出TAG ID 也就是VLAN ID。

链路聚合交换模式(trunk):

        TOS系统 system tcpdump -ni bond1 vlan 1000 and icmp  TOS系统上需要带BOND接口去抓取报文。

天融信防火墙python脚本 天融信防火墙命令行_h5_05

 

        NG系统:system tcpdump -ni any vlan and icmp   NG系统上接口属性可以选择any,vlan属性后面也可以不写vlanID可以抓取所有VLAN


        总结一下:现场环境如果是上下联不通的BOND或者一端是BOND另一边是路由接口,则需要开启2个或者更多的命令行通过不同的过滤条件同时抓取报文,来判断转发是否正常


  

  • 五、IPSEC

        TOS系统:system tcpdump -ni any icmp and host 1.2.4.8 没有特殊需要过滤的因为TOS中有虚接口的概念,直接可以看到

天融信防火墙python脚本 天融信防火墙命令行_抓包_06

          NG系统:NG系统中取消了虚接口的概念所以抓包的时候看不到发出的报文,因此给很多同事造成了困扰0.0。给大家提供一个方法可以看出是否数据包是从隧道发出的办法。

PC ping一个大包

天融信防火墙python脚本 天融信防火墙命令行_h5_07

 

确定设备收到的数据

天融信防火墙python脚本 天融信防火墙命令行_h5_08


        然后:system tcpdump -ni any esp and host 192.168.100.7 (192.168.100.7是建立隧道时候对端的IP)


E:表示封装 X:表示发出,随后通过length的大小来分辨是否正常从隧道内转发

六、GRE


 

system tcpdump -ni any icmp and host 1.2.4.8  GRE在TOS和NG系统中均可以直接显示GRE接口的转发 如果数据过多也可以把any 替换成gre-0


天融信防火墙python脚本 天融信防火墙命令行_网络_09

 

七、虚拟线

         虚拟线抓包,如果上下联是路由模式、或者acces模式可以直接通过system tcpdump -ni any icmp and host 1.2.4.8 进行抓包

        如果发现抓不到报文,有一种可能是上下联是Trunk导致收发数据的时候数据包带着vlanID进行转发所以需要使用-EVVVV参数确定数据包的vlanID是多少(此时数据报文绝对会很多,如果看不过来了,可以用CRT等工具记录会话,暂停抓包后再文件中搜索一下)

天融信防火墙python脚本 天融信防火墙命令行_网络_10

        随后在抓取正确的业务报文 

天融信防火墙python脚本 天融信防火墙命令行_链路_11