UNIX 网络分析( 三 )


大多数机器上的这一配置是通过 /etc/nsswitch.conf 文件实现的,该文件包含了各种命名服务(主机、用户等等)以及使用各种服务(DNS、NIS 或本地文件)进行解析的顺序 。可以参见清单 5 。
清单 5. 解析名称服务系统
passwd: files
group: files
hosts: files dns 
ipnodes:files dns
networks:files
protocols: files
rpc:files
ethers: files
netmasks:files
bootparams: files
publickey: files
netgroup:files
automount: files
aliases:files
services:files
printers:user files
auth_attr: files
prof_attr: files
project:files
tnrhtp: files
tnrhdb: files
例如,在清单 5 中,首先解析主机名信息:在系统中查找本地文件(比如 /etc/hosts),然后再查找域名系统(DNS) 。
如果 DNS 已经进行了配置,那么 /etc/resolv.conf 文件将告诉您使用哪些机器来将名称转换为 IP 地址 。清单 6 展示了一个样例文件 。
清单 6. 哪些机器将名称转换为 IP 地址
domain example.pri
nameserver 192.168.0.2
nameserver 192.168.0.3
如果希望直接对机器查询信息,那么这些信息很有用 。可以使用 dig 和 nslookup 等工具提取有关名称服务和名称解析以及 IP 地址的信息 。
检查路由
网络以外的主机(即与当前 IP 地址相比,超出了网络掩码的范围之外)被发送到一个路由器,从路由器转发到另一台机器 。路由器可以在任何一级网络上使用,包括部门之间、不同物理位置,以及 Internet 之类的公共和外部站点 。
netstat 命令将告诉您,当您的机器希望与 “本地 网络以外的机器通信时,将与那些机器或路由器建立联系 。例如,下面的清单 7 来自于一台 Solaris 机器 。
清单 7. netstat 命令
$ netstat -r
Routing Table: IPv4
 DestinationGatewayFlags Ref Use Interface 
-------------------- -------------------- ----- ----- ---------- --------- 
default voyager.example.pri UG1139 pcn0 
192.168.0.0 solaris2.example.pri U 1447 pcn0 
solaris2 solaris2 UH1 35 lo0
Routing Table: IPv6
 Destination/MaskGatewayFlags RefUseIf
--------------------------- --------------------------- ----- --- ------- ----- 
fe80::/10fe80::20c:29ff:fe7f:dc5 U10 pcn0 
solaris2solaris2UH 10 lo0
可以从这个输出中看到,机器非常忙碌 。第三列显示了使用冒号分隔的主机名和端口,分别针对每个打开的连接或侦听连接 。如果 TCP 或 UDP 服务号与某个已知的端口号匹配(如 /etc/services 文件中定义的那样),那么服务的名称将被显示在输出中 。对于主机,将显示主机名、备用的 IP 地址或 ‘*’ 符号 。星号表示服务和端口是打开的并且正在侦听所有 IP 地址 。
例如,可以从输出中看到,机器被配置为支持 NFS,并且具有打开的(已经建立的)连接,如清单 9 所示 。
清单 9. 机器被配置为支持 NFS
$ netstat -a|grep nfs
tcp0 0 *:nfs*:* LISTEN 
tcp1 0 bear.example.pri:nfs sulaco.example.p:51900 CLOSE_WAIT 
tcp0 0 bear.example.pri:nfs narcissus.example.p:62968 ESTABLISHED
tcp1 0 bear.example.pri:nfs sulaco.example.p:59172 CLOSE_WAIT 
tcp0 0 bear.example.pri:nfs sulaco.example.p:65320 ESTABLISHED
tcp1 0 bear.example.pri:nfs sulaco.example.p:53877 CLOSE_WAIT 
udp0 0 *:nfs*:*
也可以使用这个输出查看哪些机器目前正在和这台机器通信 。例如,可以提取一个与这台机器建立连接的机器列表,方法是查看第 5 列,进行排序并从列表中移除重复的内容(参见清单 10) 。

推荐阅读