IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  AIX and UNIX | Linux  >

UNIX 网络分析

理解 UNIX 系统网络配置

developerWorks
前一页第 3 页,共 7 页后一页

文档选项

对本教程的评价

帮助我们改进这些内容


查找有关其他主机的信息

获得了有关您的机器的基本信息后,可以进一步查看网络中的其他机器,从而判断它们的可用性和提供的服务。通过使用正确的工具,甚至可以确定这些机器正在运行的操作系统和它们可能共享的服务。

检查主机

检查远程机器的最简单也是最明显的工具就是使用 ping 工具查看某个特定主机是否启动并且可用。ping 工具执行一些非常简单的操作。它将一个数据包发送给远程主机来请求一个响应。当接收到响应后,ping 工具将计算时间差异,发送并接收包所用的时间可以表明某台机器与 ping 工具当前位置的距离的远近。

例如,如果 ping 您的网络中的某台机器,那么很可能很快就会得到 ping 包的响应(参见清单 11)。


清单 11. ping 自己的网络中的机器

$ ping bear
PING bear.mcslp.pri (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=0.154 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.162 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.149 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.161 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=64 time=0.162 ms
64 bytes from 192.168.0.2: icmp_seq=5 ttl=64 time=0.161 ms
^C
--- bear.mcslp.pri ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.149/0.158/0.162/0.005 ms

ping 工具的不同实现使用不同的工作方式。在 Linux 和 Mac OS X 上,此工具在默认情况下将不断发送包并等待响应,直到使用 Control-C 强制应用程序终止。

在 Solaris™、AIX® 和其他一些 UNIX 版本中,ping 工具仅仅表示远程主机是否发出响应(参见清单 12),而没有其他进一步的动作。


清单 12. 在 UNIX 系统上仅执行 Ping 操作

$ ping bear
bear is alive

要执行更长的测试,使用 -s 选项,如清单 13 所示。


清单 13. 使用 -s 选项执行 ping

$ ping -s bear
PING bear: 56 data bytes
64 bytes from bear.mcslp.pri (192.168.0.2): icmp_seq=0. time=0.288 ms
64 bytes from bear.mcslp.pri (192.168.0.2): icmp_seq=1. time=0.247 ms
64 bytes from bear.mcslp.pri (192.168.0.2): icmp_seq=2. time=0.208 ms
64 bytes from bear.mcslp.pri (192.168.0.2): icmp_seq=3. time=0.230 ms
^C
----bear PING Statistics----
4 packets transmitted, 4 packets received, 0% packet loss
round-trip (ms)  min/avg/max/stddev = 0.208/0.243/0.288/0.034

每一行的 time 字段表示每个包的速度和延迟(发出响应之前的延迟,通常表示活动的级别)。当停止输出时,将获得所发送和接收的包的数量的汇总和时间统计数据。

ping 包所需传递的距离越远,从远程主机获得的响应时间越长。例如,如果尝试 ping Internet 中的一个公共服务器,那么获取响应包的时间将会显著增加(参见清单 14)。


清单 14. ping Internet 中的一个公共服务器

$ ping www.example.com
PING www.example.com (67.205.21.169) 56(84) bytes of data.
64 bytes from mcslp.com (67.205.21.169): icmp_seq=1 ttl=44 time=193 ms
64 bytes from mcslp.com (67.205.21.169): icmp_seq=2 ttl=44 time=194 ms
64 bytes from mcslp.com (67.205.21.169): icmp_seq=3 ttl=44 time=197 ms
64 bytes from mcslp.com (67.205.21.169): icmp_seq=4 ttl=44 time=194 ms
^C
--- www.example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3039ms
rtt min/avg/max/mdev = 193.737/195.120/197.123/1.353 ms

将这个连接到 Internet 服务所需的时间(193 毫秒)与连接本地主机所需时间(0.23 毫秒)进行比较。

ping 工具还可以快速判断您是否能够到达您希望连接到的远程主机。在实际上不存在的主机上运行 ping 将返回一个非常具体的错误(参见清单 15)。


清单 15. 在实际上不存在的主机上运行 ping

$ ping notinhere
PING notinhere (192.168.0.110) 56(84) bytes of data.
>From bear.mcslp.pri (192.168.0.2) icmp_seq=1 Destination Host Unreachable
>From bear.mcslp.pri (192.168.0.2) icmp_seq=2 Destination Host Unreachable
>From bear.mcslp.pri (192.168.0.2) icmp_seq=3 Destination Host Unreachable
^C
--- notinhere ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4039ms

ping 工具需要知道网络上可用的机器有哪些。让我们看一看在不知道主机名或 IP 地址的情况下,如何判断网络上有哪些主机。





回页首


发现网络上的主机

在 Ethernet 网络系统(或其他系统)内,网络上的所有设备都具有一个与硬件网络设备相关联的惟一地址。通过使用更高级别的协议,比如可以将 MAC 地址和主机名关联起来的 Internet Protocol,Media Access Control (MAC) 数可以惟一地标识网络设备。

在网络上发送包时,操作系统将使用这种方法(以相反的方式)。当向特定主机名发送包时,操作系统试图将主机名解析为一个 MAC 地址,这样就可以构造将在网络上发送的硬件(Ethernet)包。

Address Resolution Protocol (ARP) 处理这种映射,并且可以使用 arp 工具来显示目前拥有的有关主机及主机名或 IP 地址的信息。

由于网络上的任何一台机器要与其他机器进行通信,必须使用 MAC 地址和 IP 地址发送包,系统在 ARP 缓存中收集到的信息可以有助于查明网络上其他的机器有哪些(参见清单 16)。


清单 16. 使用 arp 命令

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
gendarme.mcslp.pri       ether   00:1B:2F:F0:39:6A   C                     eth0
narcissus.mcslp.pri      ether   00:16:CB:85:2D:15   C                     eth0
solaris2.vmbear.mcslp.p  ether   00:0C:29:7F:0D:C5   C                     eth0
nautilus.wireless.mcslp  ether   00:17:F2:40:4D:1B   C                     eth0
sulaco.mcslp.pri         ether   00:16:CB:A0:3B:CB   C                     eth0

由于现代 Ethernet 交换机取代了旧式的 hub 结构,arp 输出的信息可能被局限于与某个特定主机之间来回传送的包。如果可以在服务器上运行 arp,那么可以获得更长的信息列表,但是这并不总是可行或实用的。

在某些网络交换机中,提供了一个网络管理或监视端口,通过这个端口的所有包都被编码,可以利用这一特性获取有关其他网络设备的信息,进而获得有关网络结构的信息。如果无法访问这类信息,需要使用更厉害的方法来查找网络中的主机。





回页首


查找网络中的其他主机

nmap 工具可以跨网络执行各种类型的扫描,从而帮助查明和判断信息的不同级别。从最基础的方面说,它可以用于查找某个给定网络中的所有主机。

本文在前面介绍了如何获得某个主机的当前 IP 地址和网络掩码信息。可以使用这个信息为 nmap 设置基本的搜索参数,从而尝试找到网络上的所有主机。要指定这一信息,必须使用 CIDR 样式的地址。CIDR 格式使用主机的 IP 地址、网络掩码中的位数来判断网络的范围。

对于示例主机,192.168.1.25 为 IP 地址,而网络掩码为 255.255.252.0。这相当于 22 位 —— 8 位用于第一部分,8 位用于第 2 部分,而 6 位用于第三部分。

使用这个地址运行 nmap 将扫描网络范围内的每一个 IP 地址(比如,192.168.0.0 和 192.168.3.255 之间的每一个地址)并判断哪些主机发出响应。

可以执行各种测试,包括使用标准 ping 工具的测试。或在 ping 协议被禁用的情况下尝试其他网络端口的更广泛的测试。例如,ping 测试显示清单 17 所示的主机列表。


清单 17. 运行 nmap 扫描 IP 地址的范围

$ nmap -sP 192.168.1.25/22

Starting Nmap 4.76 ( http://nmap.org ) at 2009-03-24 15:59 GMT
Host 192.168.0.1 appears to be up.
Host bear.mcslp.pri (192.168.0.2) appears to be up.
Host narcissus.mcslp.pri (192.168.0.3) appears to be up.
Host 192.168.0.10 appears to be up.
Host 192.168.0.27 appears to be up.
Host sulaco.mcslp.pri (192.168.0.101) appears to be up.
Host nautilus.wireless.mcslp.pri (192.168.0.109) appears to be up.
Host 192.168.1.1 appears to be up.
Host 192.168.1.25 appears to be up.
Host gentoo1.vmbear.mcslp.pri (192.168.1.52) appears to be up.
Host gentoo2.vmbear.mcslp.pri (192.168.1.53) appears to be up.
Nmap done: 1024 IP addresses (11 hosts up) scanned in 5.78 seconds

ping 检查使您可以很快地了解到网络上都有哪些其他机器。在这个例子中,共发现了 11 台主机,但是,并不是所有主机都可以解析回一个名称。这是 DNS 配置中一个应当被修复的错误,因为有些系统使用相反的查找(从 IP 地址到名称)作为安全检查,确保客户机 IP 地址不是伪造的。





回页首


查找网络上的其他服务

ping 检查非常有用,但是如果希望知道某台机器将自身公开给哪些服务,那么应使用 TCP 检查。TCP 检查需要花更长的时间,因为 nmap 尝试使用 TCP/IP 协议从列表的每一个主机中打开端口。这可以更有效地显示网络中有哪些主机,并且提供每个主机的打开的端口的详细信息。可以参见清单 18。


清单 18. 使用 TCP 检查

$ nmap -sT 192.168.1.25/22

Starting Nmap 4.76 ( http://nmap.org ) at 2009-03-24 16:03 GMT
Interesting ports on 192.168.0.1:
Not shown: 997 closed ports
PORT      STATE SERVICE
80/tcp    open  http
8080/tcp  open  http-proxy
49153/tcp open  unknown

Interesting ports on bear.mcslp.pri (192.168.0.2):
Not shown: 987 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
111/tcp  open  rpcbind
143/tcp  open  imap
443/tcp  open  https
902/tcp  open  iss-realsecure
993/tcp  open  imaps
2000/tcp open  callbook
2049/tcp open  nfs
3128/tcp open  squid-http
3306/tcp open  mysql

Interesting ports on narcissus.mcslp.pri (192.168.0.3):
Not shown: 982 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
88/tcp   open  kerberos-sec
106/tcp  open  pop3pw
111/tcp  open  rpcbind
311/tcp  open  asip-webadmin
389/tcp  open  ldap
548/tcp  open  afp
625/tcp  open  apple-xsrvr-admin
749/tcp  open  kerberos-adm
1021/tcp open  unknown
1022/tcp open  unknown
3659/tcp open  unknown
3689/tcp open  rendezvous
4111/tcp open  unknown
5900/tcp open  vnc
8086/tcp open  unknown
8087/tcp open  unknown

Interesting ports on 192.168.0.10:
Not shown: 997 closed ports
PORT    STATE SERVICE
23/tcp  open  telnet
80/tcp  open  http
443/tcp open  https

Interesting ports on 192.168.0.27:
Not shown: 999 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

Interesting ports on sulaco.mcslp.pri (192.168.0.101):
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
88/tcp   open  kerberos-sec
548/tcp  open  afp
631/tcp  open  ipp
2170/tcp open  unknown

Interesting ports on nautilus.wireless.mcslp.pri (192.168.0.109):
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
88/tcp   open  kerberos-sec
111/tcp  open  rpcbind
1001/tcp open  unknown
5900/tcp open  vnc

Interesting ports on 192.168.1.1:
Not shown: 995 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
80/tcp   open  http
5431/tcp open  unknown

Interesting ports on 192.168.1.25:
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
4045/tcp open  lockd

Interesting ports on gentoo1.vmbear.mcslp.pri (192.168.1.52):
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
3128/tcp open  squid-http

Interesting ports on gentoo2.vmbear.mcslp.pri (192.168.1.53):
Not shown: 998 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
111/tcp open  rpcbind

Nmap done: 1024 IP addresses (11 hosts up) scanned in 32.27 seconds

从这个输出中可以看到,网络上存储许多服务。例如,地址为 192.168.0.1 的设备提供了 HTTP 和 HTTP 代理服务。除了 smtp imap、nfs 和 MySQL 服务外,Sp 还提供了 bear.mcslp.pri。

要确定关于这些服务的更具体的信息,可以再次使用 nmap,使用 version 参数获得特定主机上打开的协议和端口的更详细的版本信息列表。

比如,通过检查主服务器(bear)上的内容,可以很好地了解每个端口背后运行的内容(参见清单 19)。


清单 19. 使用 version 参数运行 nmap

$ nmap -sT -sV bear

Starting Nmap 4.76 ( http://nmap.org ) at 2009-03-24 16:17 GMT
Interesting ports on localhost (127.0.0.1):
Not shown: 985 closed ports
PORT      STATE SERVICE         VERSION
22/tcp    open  ssh             OpenSSH 5.1 (protocol 2.0)
25/tcp    open  smtp            Postfix smtpd
53/tcp    open  domain          ISC BIND 9.4.3-P1
111/tcp   open  rpcbind
143/tcp   open  imap            Cyrus IMAP4 2.3.13-Gentoo
443/tcp   open  ssl/http        Apache httpd
783/tcp   open  spamassassin    SpamAssassin spamd
902/tcp   open  ssl/vmware-auth VMware Authentication Daemon 1.10 (Uses VNC)
993/tcp   open  ssl/imap        Cyrus imapd
2000/tcp  open  sieve           Cyrus timsieved 2.3.13-Gentoo (included w/cyrus imap)
2049/tcp  open  rpcbind
3128/tcp  open  http-proxy      Squid webproxy 2.7.STABLE6
3306/tcp  open  mysql           MySQL 5.0.60-log
10024/tcp open  smtp            amavisd smtpd
10025/tcp open  smtp            Postfix smtpd
Service Info: Hosts:  gendarme.mcslp.com, bear, 127.0.0.1

Service detection performed. Please report any incorrect results at
   http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.12 seconds

在这个例子中,可以看到许多具体的服务,这一次显示版本信息,甚至是各种情况下提供的应用程序信息。





回页首


确定网络中未被识别出来的主机

在网络上找到一个主机后,特别是您不能立即识别出这个主机的话,您可能需要了解有关这台主机的更多信息。TCP 端口扫描展示这台主机所支持的服务有哪些,但是这不足以了解整体情况。一些设备或系统公开端口的方式可能不能使您立即看到网络上有哪些内容。

nmap 操作系统扫描将检查打开的端口并试图找出不同服务后隐藏的系统。这使识别网络上具有打开端口的服务器和识别新设备有所区别。

例如,如果在服务器 bear 上运行操作系统识别,可以将系统识别为运行传统 Linux 版本,这很可能表示一台标准的计算机,如清单 20 所示。


清单 20. nmap 操作系统扫描

# nmap -sT -O bear

Starting Nmap 4.76 ( http://nmap.org ) at 2009-03-24 16:20 GMT
Interesting ports on localhost (127.0.0.1):
Not shown: 985 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
25/tcp    open  smtp
53/tcp    open  domain
111/tcp   open  rpcbind
143/tcp   open  imap
443/tcp   open  https
783/tcp   open  spamassassin
902/tcp   open  iss-realsecure
993/tcp   open  imaps
2000/tcp  open  callbook
2049/tcp  open  nfs
3128/tcp  open  squid-http
3306/tcp  open  mysql
10024/tcp open  unknown
10025/tcp open  unknown
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.17 - 2.6.25
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.71 seconds

这个 OS 扫描并不理想,因为它需要借助网络指纹(finger printing)技术来判断打开的端口和返回的版本信息的含义。例如,下面清单 21 中的扫描识别出大量可能潜藏在端口类型背后的潜在操作系统。


清单 21. 扫描识别出大量潜在操作系统

# nmap -sT -O some.faroffhost.com

Starting Nmap 4.76 ( http://nmap.org ) at 2009-03-24 16:23 GMT
Interesting ports on some.faroffhost.com (205.196.217.20):
Not shown: 976 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   open     smtp
110/tcp  open     pop3
111/tcp  filtered rpcbind
113/tcp  open     auth
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
143/tcp  open     imap
548/tcp  open     afp
554/tcp  open     rtsp
555/tcp  open     dsf
587/tcp  open     submission
687/tcp  open     unknown
993/tcp  open     imaps
995/tcp  open     pop3s
1720/tcp filtered H.323/Q.931
5222/tcp open     unknown
5269/tcp open     unknown
5666/tcp open     unknown
7070/tcp open     realserver
8000/tcp open     http-alt
8001/tcp open     unknown
8649/tcp open     unknown
Device type: print server|general purpose|storage-misc|WAP|switch|specialized
Running (JUST GUESSING) : HP embedded (92%), Linux 2.6.X|2.4.X (92%), Buffalo embedded 
(91%), Acorp embedded (89%), Actiontec Linux 2.4.X (89%), Linksys embedded (89%), 
Netgear embedded (89%), Infoblox NIOS 4.X (89%)
Aggressive OS guesses: HP 4200 PSA (Print Server Appliance) model J4117A (92%), 
Linux 2.6.20 (Ubuntu 7.04 server, x86) (92%), Linux 2.6.9 (92%), Buffalo TeraStation NAS 
device (91%), Linux 2.6.18 (CentOS 5.1, x86) (91%), OpenWrt 7.09 (Linux 2.4.34) (90%), 
Acorp W400G or W422G wireless ADSL modem (MontaVista Linux 2.4.17) (89%), HP Brocade 
4100 switch; or Actiontec MI-424-WR, Linksys WRVS4400N, or Netgear WNR834B wireless 
broadband router (89%), HP Brocade 4Gb SAN switch (89%), Infoblox NIOS Release 
4.1r2-5-22263 (89%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 18 hops

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 23.66 seconds

注意,nmap 扫描可以同时用于本地和远程网络。在上面的远程测试中,nmap 确定出包在抵达目的地之前如何通过不同的系统。理解您和网络上其他机器之间的各种设备通常是理解并确定网络布局的最后一部分。





回页首


确定网络结构

不论何时在网络上发送 IP 网络包,每当系统将包转发给另一个网络或系统时,一个特殊计数器将执行增量计算。包转发出现在一些不同的系统之间。如果有多个网络交换机彼此相连接,那么每个 hub 可以将自身标识为一个新设备。此外,无线接入点和传统路由器都是可以转发包的设备,因此被认为是包在网络中的路由过程的一部分。

在大多数网络环境中,本地网络中的 hub、交换机和其他组件并不会计算包转发的次数,但是随着网络的不断延伸,网络的规模将不断扩大并更加复杂,因此理解单个包的路由可以帮助您识别性能和连接性问题。

用于显示与主机通信的路由信息的主要工具是 traceroute。它可以确定从当前主机到目的地之间的给定路径中的每个主机的 IP 地址。如果主机位于本地,那么将使用直接路由(参见清单 22)。


清单 22. 使用 traceroute

$ traceroute solaris2
traceroute to solaris2 (192.168.1.25), 30 hops max, 40 byte packets
 1  solaris2.mcslp.pri (192.168.1.25)  0.651 ms  0.892 ms  0.969 ms

对于本地网络中可以通过本地路由器或网桥访问的主机,参见清单 23。


清单 23. 本地网络中的主机

$ traceroute gentoo1
traceroute to gentoo1 (192.168.1.52), 30 hops max, 40 byte packets
 1  gendarme.mcslp.pri (192.168.0.1) 3.163 ms  3.159 ms  6.618 ms
 2  gentoo1.mcslp.pri (192.168.1.52)  34.336 ms  34.341 ms  34.341 ms

与远程网络的连接可能显示每个路由器和包采用的步骤(参见清单 24)。


清单 24. 与远程网络的连接

$ traceroute www.ibm.com
traceroute to www.ibm.com (129.42.58.216), 30 hops max, 40 byte packets
 1  gendarme.mcslp.pri (192.168.0.1)  3.163 ms  3.159 ms  6.618 ms
 2  gauthier-dsl1.hq.zen.net.uk (62.3.82.17)  34.336 ms  34.341 ms  34.341 ms
 3  lotze-ge-0-0-1-136.hq.zen.net.uk (62.3.80.137)  37.581 ms  47.276 ms  50.548 ms
 4  nietzsche-ae2-0.ls.zen.net.uk (62.3.80.70)  43.945 ms  47.239 ms  50.529 ms
 5  nozick-ge-3-1-0-0.ls.zen.net.uk (62.3.80.74)  55.343 ms  55.341 ms  55.339 ms
 6  lorenz-ge-3-0-0-0.te.zen.net.uk (62.3.80.78)  66.347 ms  63.118 ms  63.105 ms
 7  82.195.188.13 (82.195.188.13)  146.039 ms  118.175 ms  124.532 ms
 8  sl-bb22-lon-8-0.sprintlink.net (213.206.128.60)  50.460 ms  47.273 ms  40.991 ms
 9  sl-bb20-lon-12-0.sprintlink.net (213.206.128.52)  47.107 ms  47.094 ms  43.711 ms
10  sl-crs2-nyc-0-5-3-0.sprintlink.net (144.232.9.164)  111.579 ms  113.173 ms  
      113.159 ms
11  144.232.18.238 (144.232.18.238)  116.353 ms  111.633 ms  111.619 ms
12  0.xe-5-0-1.XL3.NYC4.ALTER.NET (152.63.3.125)  114.812 ms  111.788 ms  115.000 ms
13  0.so-7-1-0.XT3.STL3.ALTER.NET (152.63.0.6)  151.969 ms  142.573 ms  142.574 ms
14  POS6-0.GW8.STL3.ALTER.NET (152.63.92.37)  142.552 ms  253.001 ms  252.986 ms
15  ibm-gw.customer.alter.net (65.206.180.74)  179.655 ms  228.775 ms  228.751 ms
16  10.16.255.10 (10.16.255.10)  145.847 ms  139.310 ms  142.509 ms
17  * * *
18  129.42.58.216 (129.42.58.216)  143.118 ms  141.181 ms  141.152 ms

通过使用这种方法,并结合使用 nmap 确定主机列表,您可以更好地理解网络中的主机,以及使用哪些路由器和系统访问这些系统。





回页首



前一页第 3 页,共 7 页后一页
    关于 IBM 隐私条约 联系 IBM 使用条款