介绍

数据包嗅探器是一种工具,可以捕捉和分析进入、离开或通过路由器的数据包。诊断网络或保护网络的安全攻击时,数据包嗅探非常有用。

启用对客户端转发的无线客户端之间的单播流量不会被嗅探工具看到。启用硬件卸载网桥处理的数据包也不可见(像未知的单播、广播和多播流量这样的泛滥数据包可能可见)。

数据包嗅探器配置

RouterOS的嵌入式嗅探器允许根据各种协议来捕获数据包。

在下面的例子中,将配置嗅探器来匹配通过ether1接口的数据包。

[admin@MikroTik] > /tool/sniffer/start interface=ether1
[admin@MikroTik] > /tool/sniffer/stop
[admin@MikroTik] > /tool/sniffer/save file-name=/flash/test.pcap
MikroTik] > file print where name~"test"
Columns: NAME, TYPE, SIZE, CREATION-TIME
#  NAME        TYPE  SIZE  CREATION-TIME
9  flash/test.pcap  file 3696  dec/04/2019 10:48:16

可以从文件菜单下载捕获的数据包。然后使用包分析器,如 `Wireshark <https://www.wireshark.org/>`_来分析文件。

注意,嗅探到的数据包在10分钟内可用,如果需要永久使用,请设置一个"文件名"直接保存,或按前面所述用"保存"命令。

Sub-menu: /tool sniffer

属性 说明
file-limit (integer 10...4294967295[KiB]; Default: 1000KiB) 文件大小限制。当达到限制时,Sniffer将停止。
文件名 (string; Default: ) 保存嗅探数据包的文件名。
filter-cpu (integer; Default: ) 用作过滤器的CPU核心。
filter-ip-address (ip/mask[,ip/mask] (max 16 items); Default: ) 最多使用16个IP地址作为一个过滤器。
filter-dst-ip-address (ip/mask[,ip/mask] (max 16 items); Default: ) 最多16个IP目标地址作为过滤器使用。
filter-src-ip-address (ip/mask[,ip/mask] (max 16 items); Default: ) 最多16个IP源地址作为过滤器使用。
filter-ipv6-address (ipv6/mask[,ipv6/mask] (max 16 items); Default: ) 最多16个IPv6地址作为过滤器使用。
filter-dst-ipv6-address (ipv6/mask[,ipv6/mask] (max 16 items); Default: ) 最多16个IPv6目的地址作为过滤器使用。
filter-src-ipv6-address (ipv6/mask[,ipv6/mask] (max 16 items); Default: ) 最多16个IPv6源地址作为过滤器使用。
filter-mac-address (mac/mask[,mac/mask] (max 16 items); Default: ) 最多16个MAC地址和MAC地址掩码作为过滤器使用。
filter-dst-mac-address (mac/mask[,mac/mask] (max 16 items); Default: ) 最多16个MAC目标地址和MAC地址掩码作为过滤器使用。
filter-src-mac-address (mac/mask[,mac/mask] (max 16 items); Default: ) 最多16个MAC源地址和MAC地址掩码作为过滤器使用。
filter-port ([!]port[,port] (max 16 items); Default: ) 最多16个用逗号隔开的端口作为过滤器使用。也可以使用预定义的端口名称列表,如ssh和telnet。
filter-dst-port ([!]port[,port] (最多16项); Default: ) 最多16个用逗号隔开的目的端口作为过滤器使用。也可以使用预定义的端口名称列表,如ssh和telnet。
filter-src-port ([!]port[,port] (最多16项); Default: ) 最多16个用逗号隔开的源端口作为过滤器使用。也可以使用预定义的端口名称列表,如ssh和telnet。
filter-ip-protocol ([!]protocol[,protocol] (max 16 items); Default: ) 最多16个用逗号隔开的IP/IPv6协议作为过滤器使用。IP协议(可以用协议名称代替,也可以用协议编号):
- ipsec-ah - IPsec AH协议
- ipsec-esp - IPsec ESP协议
- ddp - 数据报交付协议
- EGP 外部网关协议
- ggp - 网关-网关协议
- gre-一般路由封装
- hmp - 主机监控协议
- idpr-cmtp - idpr控制信息传输
- icmp - 互联网控制信息协议
- icmpv6 - 互联网控制消息协议V6
- igmp -- 互联网组管理协议
- ipencap - ip封装在ip中
- ipip -- ip封装
- encap ip封装
- iso-tp4 - ISO传输协议4级
- ospf -开放最短路径优先
- PUP - Parc通用分组协议
- PIM - 协议独立组播
- RSPF -- 无线电最短路径优先
- rdp - 可靠数据报协议
- ST - ST数据报模式
- tcp - 传输控制协议
- udp - 用户数据报协议
- vmtp - 多功能信息传输
- vrrp - 虛擬路由器冗余协议
- xns-idp - Xerox xns idp
- xtp xpress传输协议
filter-mac-protocol ([!]protocol[,protocol] (max 16 items); Default: ) 最多有16个逗号分隔的条目作为过滤器使用。Mac协议(可以使用协议名称代替协议编号)。
- 802.2 - 802.2帧(0x0004)
- arp - 地址解析协议(0x0806)
- homeplug-av - HomePlug AV MME (0x88E1)
- ip - 互联网协议版本4 (0x0800)
- ipv6 - 互联网协议版本6 (0x86DD)
- ipx - 互联网分组交换(0x8137)
- lldp - 链接层发现协议(0x88CC)
- loop-protect - 环路保护协议 (0x9003)
- mpls-multicast - MPLS组播(0x8848)
- mpls-unicast - MPLS单播(0x8847)
- packing-compr - 以压缩的 IP包 (0x9001) 封装数据包
- packing-simple - 以简单IP包 (0x9000) 封装的数据包
- pppoe - PPPoE会话阶段(0x8864)
- pppoe-discovery - PPPoE发现阶段(0x8863)
- rarp - 反向地址解析协议(0x8035)
- service-vlan - 提供者桥接(IEEE 802.1ad)和最短路径桥接IEEE 802.1aq (0x88A8)
- vlan - VLAN标记的帧(IEEE 802.1Q)和最短路径桥接IEEE 802.1aq,与NNI兼容(0x8100)
filter-stream (yes | no; Default: yes) 为嗅探服务器设计的嗅探数据包会被忽略。
filter-size (integer[-integer]:0..65535; Default: ) 过滤指定大小或大小范围的字节的数据包。
filter-direction (any | rx | tx; Default: ) 指定应用哪个方向的过滤。
filter-interface (all | name; Default: all) 嗅探器运行的接口名称。all 表示嗅探器将在所有接口上嗅探数据包。
filter-operator-between-entries (and | or; Default: or) 改变有多个条目的过滤器逻辑。
filter-vlan (integer[,integer]:0..4095; Default: ) 最多有16个VLAN ID用作过滤器。
memory-limit (integer 10..4294967295[KiB]; Default: 100KiB) 用来存储嗅探数据的内存量。
memory-scroll (yes | no; Default: yes) 当达到内存限制时,是否重写旧的嗅探数据。
only-headers (yes | no; Default: no) 在内存中只保存数据包的标题,而不是整个数据包。
streaming-enabled (yes | no; Default: no) 是否向流媒体服务器发送嗅探数据包。
streaming-server (IP; Default: 0.0.0.0) Tazmen Sniffer Protocol(TZSP)流接收器。

配置的 文件大小 限制不能超过可用的内存!

数据包嗅探器快速模式

快速模式将显示结果,因为它们被过滤掉了,有一个有限大小的数据包缓冲区。有几个属性可以设置过滤。如果没有设置属性,将使用当前的配置。

[admin@MikroTik] > /tool/sniffer/quick ip-protocol=icmp
Columns: INTERFace, TIME, NUm, DIr, SRC-MAC, DST-MAC, SRC-ADDRESS, DST-ADDRESS, PROTOCOl, SIze, Cpu, FP
INTERF  TIME    NU  DI  SRC-MAC            DST-MAC            SRC-ADDRESS     DST-ADDRESS     PROTOCO  SI  C  FP
ether7  35.472  79  <-  6C:3B:6B:ED:83:69  6C:3B:6B:ED:81:83  10.155.126.252  10.155.126.253  ip:icmp  70  7  no
ether7  35.472  80  ->  6C:3B:6B:ED:81:83  6C:3B:6B:ED:83:69  10.155.126.253  10.155.126.252  ip:icmp  70  7  no
ether1  35.595  81  <-  6C:3B:6B:ED:83:63  6C:3B:6B:ED:81:7D  172.24.24.2     172.24.24.1     ip:icmp  70  4  no
ether1  35.595  82  ->  6C:3B:6B:ED:81:7D  6C:3B:6B:ED:83:63  172.24.24.1     172.24.24.2     ip:icmp  70  4  no
ether7  36.457  83  <-  6C:3B:6B:ED:83:69  6C:3B:6B:ED:81:83  10.155.126.252  10.155.126.253  ip:icmp  70  7  no
ether7  36.457  84  ->  6C:3B:6B:ED:81:83  6C:3B:6B:ED:83:69  10.155.126.253  10.155.126.252  ip:icmp  70  7  no
ether1  36.6    85  <-  6C:3B:6B:ED:83:63  6C:3B:6B:ED:81:7D  172.24.24.2     172.24.24.1     ip:icmp  70  4  no
ether1  36.6    86  ->  6C:3B:6B:ED:81:7D  6C:3B:6B:ED:83:63  172.24.24.1     172.24.24.2     ip:icmp  70  4  no

除非设置 fast-path 参数,否则在同一接口上使用数据包嗅探器将看不到流量生成器数据包。

数据包嗅探器协议

在这个子菜单中,可以看到所有被嗅探的协议和它们在整个嗅探量中的份额。

[admin@MikroTik] /tool sniffer protocol> print
 # PROTOCOL IP-PROTOCOL PORT                                     PACKETS      BYTES        SHARE
 0 802.2                                                              1         60        0.05%
 1 ip                                                               215     100377       99.04%
 2 arp                                                                2        120        0.11%
 3 ipv6                                                               6        788        0.77%
 4 ip       tcp                                                     210      99981       98.65%
 5 ip       udp                                                       3        228        0.22%
 6 ip       ospf                                                      2        168        0.16%
 7 ip       tcp         8291 (winbox)                               210      99981       98.65%
 8 ip       tcp         36771                                       210      99981       98.65%
 9 ip       udp         646                                           3        228        0.22%

数据包嗅探器主机

子菜单显示参与嗅探的数据交换的主机列表。

[admin@MikroTik] /tool sniffer host> print
 # ADDRESS         RATE                PEEK-RATE           TOTAL
 0 10.5.101.3      0bps/0bps           0bps/720bps         0/90
 1 10.5.101.10     0bps/0bps           175.0kbps/19.7kbps  61231/7011
 2 10.5.101.13     0bps/0bps           0bps/608bps         0/76
 3 10.5.101.14     0bps/0bps           0bps/976bps         0/212
 4 10.5.101.15     0bps/0bps           19.7kbps/175.0kbps  7011/61231
 5 224.0.0.2       0bps/0bps           608bps/0bps         76/0
 6 224.0.0.5       0bps/0bps           1440bps/0bps        302/0

数据包嗅探器连接数

这里可以得到一个在嗅探时间内被监视的连接列表。

[admin@MikroTik] tool sniffer connection> print
Flags: A - active
  #   SRC-ADDRESS       DST-ADDRESS             BYTES     RESENDS   MSS
  0 A 10.0.0.241:1839   10.0.0.181:23 (telnet)  6/42      60/0      0/0
  1 A 10.0.0.144:2265   10.0.0.181:22 (ssh)     504/252   504/0     0/0