JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:IP 服务     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分TCP/IP 管理

1.  规划网络部署

2.  使用 IPv6 地址的注意事项

3.  配置 IPv4 网络

4.  在网络上启用 IPv6

5.  管理 TCP/IP 网络

主要的 TCP/IP 管理任务(任务列表)

使用 netstat 命令监视网络状态

如何按协议显示统计信息

如何显示传输协议的状态

如何显示网络接口状态

如何显示套接字的状态

如何显示特定地址类型的包的传输状态

如何显示已知路由的状态

使用 ping 命令探测远程主机

如何确定远程主机是否正在运行

如何确定主机是否正在丢弃包

管理和记录网络状态显示

如何控制与 IP 相关的命令的显示输出

如何记录 IPv4 路由选择守护进程的操作

如何跟踪 IPv6 相邻节点搜索守护进程的活动

使用 traceroute 命令显示路由信息

如何查找通向远程主机的路由

如何跟踪所有路由

使用 snoop 命令监视包传送

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

如何将 snoop 输出捕获到文件

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

如何监视 IPv6 网络通信

使用 IP 层设备监视包

如何检查 IP 层上的包

检查包的示例

管理缺省地址选择

如何管理 IPv6 地址选择策略表

如何仅修改当前会话的 IPv6 地址选择表

6.  配置 IP 隧道

7.  对网络问题进行故障排除

8.  IPv4 参考

9.  IPv6 引用

第 2 部分DHCP

10.  关于 DHCP(概述)

11.  管理 ISC DHCP 服务

12.  配置和管理 DHCP 客户机

13.  DHCP 命令和文件(参考)

第 3 部分IP 安全性

14.  IP 安全体系结构(概述)

15.  配置 IPsec(任务)

16.  IP 安全体系结构(参考)

17.  Internet 密钥交换(概述)

18.  配置 IKE(任务)

19.  Internet 密钥交换(参考资料)

20.  Oracle Solaris 中的 IP 过滤器(概述)

21.  IP 过滤器(任务)

第 4 部分网络性能

22.  集成负载平衡器概述

23.  配置集成负载平衡器(任务)

24.  虚拟路由器冗余协议(概述)

25.  VRRP 配置(任务)

26.  实施拥塞控制

第 5 部分IP 服务质量 (IP Quality of Service, IPQoS)

27.  IPQoS 介绍(概述)

28.  规划启用了 IPQoS 的网络(任务)

29.  创建 IPQoS 配置文件(任务)

30.  启动和维护 IPQoS(任务)

31.  使用流记帐和统计信息收集功能(任务)

32.  IPQoS 的详细介绍(参考)

词汇表

索引

使用 snoop 命令监视包传送

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

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

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

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

  1. 列显有关连接到系统的接口的信息。
    # ipadm show-if

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

  2. 键入不带参数的 snoop 开始捕获包,如示例 5-15 所示。
  3. 使用 Ctrl-C 组合键停止此进程。

示例 5-15 snoop 命令的输出

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

% snoop
Using device /dev/net (promiscuous mode)
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)
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.
.
.
.
fe80::a00:20ff:febb:e09 -> ff02::9 RIPng R (5 destinations)

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

如何将 snoop 输出捕获到文件

  1. 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

  2. 检查 snoop 输出捕获文件。
    # snoop -i filename

示例 5-16 snoop 输出捕获文件的内容

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

# snoop -i /tmp/cap
1   0.00000 fe80::a00:20ff:fee9:2d27 -> fe80::a00:20ff:fecd:4375 
    ICMPv6 Neighbor advertisement
...
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  

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

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

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

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

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

如何监视 IPv6 网络通信

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

示例 5-17 仅显示 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

使用 IP 层设备监视包

Oracle Solaris 中引入了用于增强 IP 观察功能的 IP 层设备。通过这些设备,可以访问具有与系统网络接口关联的地址的所有包。这些地址包括本地地址以及位于非回送接口或逻辑接口上的地址。可观察的通信流量可以是 IPv4 和 IPv6 地址。因此,可以监视以系统为目标的所有通信流量。通信流量可以是回送 IP 通信流量、来自远程计算机的包、要从系统发送的包或转发的所有通信流量。

使用 IP 层设备,全局区域的管理员可以监视区域之间以及区域内的通信流量。非全局区域的管理员也可以观察由该区域发送和接收的通信流量。

要监视 IP 层上的通信流量,请将一个新选项 -I 添加到 snoop 命令。此选项对该命令指定将使用新 IP 层设备,而不是底层链路层设备以显示通信流量数据。


注 - 要了解各层之间的区别,请参见《系统管理指南:IP 服务》中的"数据封装和 TCP/IP 协议栈"


如何检查 IP 层上的包

  1. 如有必要,列显有关连接到系统的接口的信息。
    # ipadm show-if
  2. 捕获特定接口上的 IP 通信流量。
    # snoop -I interface [-V | -v]

检查包的示例

所有示例都基于下列系统配置:

# ipadm show-addr
ADDROBJ      TYPE       STATE   ADDR
lo0/v4       static     ok      127.0.0.1/8
net0/v4      static     ok      192.68.25.5/24
lo0/?        static     ok      127.0.0.1/8
net0/?       static     ok      172.0.0.3/24
net0/?       static     ok      172.0.0.1/24
lo0/?        static     ok      127.0.0.1/8
 

假设两个区域 sandboxtoybox 使用以下 IP 地址:

您可以对系统上的不同接口发出 snoop -I 命令。显示的包信息取决于您是全局区域的管理员还是非全局区域的管理员。

示例 5-18 回送接口上的通信流量

# snoop -I lo0
Using device ipnet/lo0 (promiscuous mode)
   localhost -> localhost    ICMP Echo request (ID: 5550 Sequence number: 0)
   localhost -> localhost    ICMP Echo reply (ID: 5550 Sequence number: 0)

要生成详细输出,请使用 -v 选项。

# snoop -v -I lo0
Using device ipnet/lo0 (promiscuous mode)
IPNET:  ----- IPNET Header -----
IPNET:  
IPNET:  Packet 1 arrived at 10:40:33.68506
IPNET:  Packet size = 108 bytes
IPNET:  dli_version = 1
IPNET:  dli_type = 4
IPNET:  dli_srczone = 0
IPNET:  dli_dstzone = 0
IPNET:  
IP:   ----- IP Header -----
IP:   
IP:   Version = 4
IP:   Header length = 20 bytes
...

为了支持观察 IP 层上的包,引入了优先于要观察的包的新 ipnet 数据包头。将同时指示源和目标 ID。ID 为“0”指示将从全局区域生成通信流量。

示例 5-19 本地区域的 net0 设备中的包流

# snoop -I net0
Using device ipnet/net0 (promiscuous mode)
toybox -> sandbox TCP D=22 S=62117 Syn Seq=195630514 Len=0 Win=49152 Options=<mss
sandbox -> toybox TCP D=62117 S=22 Syn Ack=195630515 Seq=195794440 Len=0 Win=49152
toybox -> sandbox TCP D=22 S=62117 Ack=195794441 Seq=195630515 Len=0 Win=49152
sandbox -> toybox TCP D=62117 S=22 Push Ack=195630515 Seq=195794441 Len=20 Win=491

该输出显示了系统内不同区域中发生的通信。您可以查看与 net0 IP 地址关联的所有包,包括从本地传递到其他区域的包。如果生成详细输出,则可以查看包流中涉及的区域。

# snoop -I net0 -v port 22
IPNET:  ----- IPNET Header ----- 
IPNET: 
IPNET:  Packet 5 arrived at 15:16:50.85262 
IPNET:  Packet size = 64 bytes 
IPNET:  dli_version = 1 
IPNET:  dli_type = 0 
IPNET:  dli_srczone = 0 
IPNET:  dli_dstzone = 1 
IPNET: 
IP:   ----- IP Header ----- 
IP: 
IP:   Version = 4 
IP:   Header length = 20 bytes 
IP:   Type of service = 0x00 
IP:         xxx. .... = 0 (precedence) 
IP:         ...0 .... = normal delay 
IP:         .... 0... = normal throughput 
IP:         .... .0.. = normal reliability 
IP:         .... ..0. = not ECN capable transport 
IP:         .... ...0 = no ECN congestion experienced 
IP:   Total length = 40 bytes 
IP:   Identification = 22629 
IP:   Flags = 0x4 
IP:         .1.. .... = do not fragment 
IP:         ..0. .... = last fragment 
IP:   Fragment offset = 0 bytes 
IP:   Time to live = 64 seconds/hops 
IP:   Protocol = 6 (TCP) 
IP:   Header checksum = 0000 
IP:   Source address = 172.0.0.1, 172.0.0.1 
IP:   Destination address = 172.0.0.3, 172.0.0.3 
IP:   No options 
IP: 
TCP:  ----- TCP Header ----- 
TCP: 
TCP:  Source port = 46919 
TCP:  Destination port = 22 
TCP:  Sequence number = 3295338550 
TCP:  Acknowledgement number = 3295417957 
TCP:  Data offset = 20 bytes 
TCP:  Flags = 0x10 
TCP:        0... .... = No ECN congestion window reduced 
TCP:        .0.. .... = No ECN echo 
TCP:        ..0. .... = No urgent pointer 
TCP:        ...1 .... = Acknowledgement 
TCP         .... 0... = No push 
TCP         .... .0.. = No reset 
TCP:        .... ..0. = No Syn 
TCP:        .... ...0 = No Fin 
TCP:  Window = 49152 
TCP:  Checksum = 0x0014 
TCP:  Urgent pointer = 0 
TCP:  No options 
TCP:

ipnet 数据包头指示该包是从全局区域 (ID 0) 发送至沙箱 (ID 1) 的。

示例 5-20 通过标识区域观察通信流量

# snoop -I hme0 sandboxsnoop -I net0 sandbox
Using device ipnet/hme0 (promiscuous mode)
toybox -> sandbox TCP D=22 S=61658 Syn Seq=374055417 Len=0 Win=49152 Options=<mss
sandbox -> toybox TCP D=61658 S=22 Syn Ack=374055418 Seq=374124525 Len=0 Win=49152
toybox -> sandbox TCP D=22 S=61658 Ack=374124526 Seq=374055418 Len=0 Win=49152
#

通过标识区域来观察包的功能在具有多个区域的系统中非常有用。当前,只能使用区域 ID 标识区域。不支持将 snoop 与区域名称一起使用。