系统管理指南:IP 服务

使用 snoop 命令监视包传送

可以使用 snoop 命令监视数据传送的状态。snoop 捕获网络包并以指定的格式显示其内容。系统收到包或将其保存到文件之后,便会立即显示这些包。当 snoop 向中间文件执行写入操作时,在密切跟踪的情况下不可能丢失包。然后,可以使用 snoop 本身来解释此文件。

要以混杂模式捕获进出缺省接口的包,您必须承担网络管理员角色或成为超级用户。在汇总表单中,snoop 仅显示与最高级协议有关的数据。例如,NFS 包仅显示 NFS 信息,而不会显示底层 RPC、UDP、IP 和以太网帧信息,但是如果选择了两个详细选项之一,则会显示这些信息。

坚持不懈地使用 snoop 可以使您熟悉常规系统行为。有关对包进行分析的帮助,请查找最新的白皮书和 RFC,并搜寻专家针对特定领域(如 NFS 或 NIS)提供的建议。有关使用 snoop 及其选项的详细信息,请参阅 snoop(1M) 手册页。

Procedure如何检查来自所有接口的包

  1. 在本地主机上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 列显有关连接到系统的接口的信息。


    # ifconfig -a
    

    snoop 命令通常使用第一个非回送设备,通常为主网络接口。

  3. 键入不带参数的 snoop 开始捕获包,如示例 8–19 所示。

  4. 使用 Ctrl-C 组合键停止此进程。


示例 8–19 snoop 命令的输出

基本 snoop 命令针对双栈主机返回如下所示的输出。


% snoop
Using device /dev/hme (promiscuous mode)
farhost.remote.com -> myhost       RLOGIN C port=993 
    myhost -> farhost.remote.com   RLOGIN R port=993 Using device /dev/hme
router5.local.com -> router5.local.com ARP R 10.0.0.13, router5.local.com is
    0:10:7b:31:37:80
router5.local.com -> BROADCAST     TFTP Read "network-confg" (octet)
farhost.remote.com -> myhost       RLOGIN C port=993 
    myhost ->   nisserve2          NIS C MATCH 10.0.0.64 in ipnodes.byaddr
nisserve2 ->    myhost             NIS R MATCH No such key
    blue-112 -> slave-253-2        NIS C MATCH 10.0.0.112 in ipnodes.byaddr
myhost -> DNSserver.local.com      DNS C 192.168.10.10.in-addr.arpa. Internet PTR ?
DNSserver.local.com  myhost        DNS R 192.168.10.10.in-addr.arpa. Internet PTR 
   niserve2.
.
.
farhost.remote.com-> myhost        RLOGIN C port=993 
    myhost -> farhost.remote.com   RLOGIN R port=993 fe80::a00:20ff:febb:
.
fe80::a00:20ff:febb:e09 -> ff02::9 RIPng R (5 destinations)

在此输出中捕获的包显示了远程登录部分,包括查找 NIS 和 DNS 服务器以便进行地址解析。同时还包括来自本地路由器的定期 ARP 包以及向 in.ripngd 发出的 IPv6 链路本地地址的通告。


Procedure如何将 snoop 输出捕获到文件

  1. 在本地主机上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. snoop 会话捕获到文件。


    # snoop -o filename
    

    例如:


    # snoop -o /tmp/cap
    Using device /dev/eri (promiscuous mode)
    30 snoop: 30 packets captured

    此示例中,在名为 /tmp/cap 的文件中捕获到了 30 个包。可以将此文件放在任何具有足够磁盘空间的目录中。捕获的包数显示在命令行中,您可以随时按 Ctrl-C 组合键中止捕获。

    snoop 将在主机上生成大量网络负载,这会使结果失真。要查看实际结果,请从第三方系统运行 snoop

  3. 检查 snoop 输出捕获文件。


    # snoop -i filename
    

示例 8–20 snoop 输出捕获文件的内容

以下内容显示了可能会作为 snoop -i 命令输出接收到的各种捕获。


# snoop -i /tmp/cap
1   0.00000 fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 
    ICMPv6 Neighbor advertisement
2   0.16198 farhost.com   -> myhost     RLOGIN C port=985 
3   0.00008 myhost -> farhost.com       RLOGIN R port=985 
10  0.91493    10.0.0.40 -> (broadcast)  ARP C Who is 10.0.0.40, 10.0.0.40 ?
34  0.43690 nearserver.here.com  -> 224.0.1.1  IP  D=224.0.1.1 S=10.0.0.40 LEN=28, 
      ID=47453, TO =0x0, TTL=1
35  0.00034  10.0.0.40 -> 224.0.1.1    IP  D=224.0.1.1 S=10.0.0.40 LEN=28, ID=57376, 
     TOS=0x0, TTL=47  

Procedure如何检查 IPv4 服务器和客户机之间的包

  1. 在远离与客户机或服务器相连的集线器的位置建立 snoop 系统。

    第三方系统(snoop 系统)将检查所有干预通信,因此 snoop 跟踪会反映网络上实际出现的情况。

  2. snoop 系统上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  3. 键入带有选项的 snoop 并将输出保存到文件。

  4. 检查并解释输出。

    有关 snoop 捕获文件的详细信息,请参阅 RFC 1761, Snoop Version 2 Packet Capture File Format

Procedure如何监视 IPv6 网络通信

您可以使用 snoop 命令来仅显示 IPv6 包。

  1. 在本地节点上,承担网络管理角色或成为超级用户。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 捕获 IPv6 包。


    # snoop ip6
    

    有关 snoop 命令的更多信息,请参见 snoop(1M) 手册页。


示例 8–21 仅显示 IPv6 网络通信

以下示例显示了在节点上运行 snoop ip6 命令时可能显示的典型输出。


# snoop ip6
fe80::a00:20ff:fecd:4374 -> ff02::1:ffe9:2d27 ICMPv6 Neighbor solicitation
fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 ICMPv6 Neighbor 
      solicitation
fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 ICMPv6 Neighbor 
      solicitation
fe80::a00:20ff:febb:e09 -> ff02::9      RIPng R (11 destinations)
fe80::a00:20ff:fee9:2d27 -> ff02::1:ffcd:4375 ICMPv6 Neighbor solicitation