浅谈网络故障诊断Word下载.docx
《浅谈网络故障诊断Word下载.docx》由会员分享,可在线阅读,更多相关《浅谈网络故障诊断Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
教程总结
主题205
LPI考试202准备(主题205):
网络配置
介绍如何配置基本的TCP/IP网络,范围从硬件层(常见的以太网,modem、ISDN或802.11)到网络地址的路由。
主题206
LPI考试202准备(主题206):
邮件和新闻
介绍如何将Linux用作邮件和新闻服务器。
本教程将介绍邮件传输、本地邮件过滤以及邮件列表维护等方面的内容,还将介绍NNTP协议使用的服务器软件。
主题207
LPI考试202准备(主题207):
DNS
介绍如何使用Linux作为DNS服务器,主要是使用BIND。
本教程还将介绍如何执行基本的BIND配置、管理DNS区域,以及保障DNS服务器的安全。
主题208
LPI考试202准备(主题208):
Web服务
介绍如何安装和配置Web服务器,以及如何实现Squid代理服务器。
主题210
LPI考试202准备(主题210):
网络客户机管理
介绍如何配置DHCP服务器、NIS客户机和服务器、LDAP服务器和PAM身份验证支持。
参见下面详细的目标。
主题212
LPI考试202准备(主题212):
系统安全性
介绍如何配置路由器,如何保障FTP服务器的安全,如何配置SSH,以及如何执行各种其他安全管理任务。
主题214
网络故障诊断
(本教程)回顾可以用来检测和解决网络问题的工具和命令。
LinuxProfessionalInstitute不为任何第三方考试准备资料或技术做担保。
详情请联系info@lpi.org。
关于本教程
欢迎阅读“系统安全性”,这是介绍Linux上中级网络管理的由7篇文章组成的教程系列中的最后一篇。
本文会重新回顾有关LinuxProfessionalInstitute202考试主题的前6篇教程中介绍的内容,从而为整个系列的教程提供一个通用的上下文。
本文会对前面已经介绍过的一些工具进行重点说明,这些工具是ifconfig、route、hostname、dmesg、netstat、ping、traceroute等,本文还将重点介绍如何使用这些工具来解决问题。
与developerWorks201和202系列中的其他教程一样,本教程旨在充当考试准备的学习指南和入门,而不是该主题的完全文档。
鼓励读者参考LPI的详细目标列表,并在需要时参考其他资料,以补充这里的知识。
本教程是按照这个主题的LPI目标组织的。
大致上说,学习目标的权值越高,在考试中出的题就会越多。
表2.网络故障诊断:
本教程涉及的考试目标LPI考试目标
目标权值
目标摘要
2.214.7
网络问题的故障诊断
权值1
判断并修正常见的网络设置问题。
目标包括了解基本配置文件的位置和命令。
前提条件
要想从本教程获得最大的好处,那么您应该具备Linux的一些基础知识,并拥有一个可以用来实践本教程中介绍的命令的Linux系统。
本教程是在LPI考试202系列的前6篇教程基础上构建的。
其他资源
对于大多数Linux工具来说,查看讨论过的所有实用工具手册通常很有用。
实用工具或内核之间的版本和开关(switch)可能有所不同,或者具有不同的Linux发行版。
关于更深入的信息,LinuxDocumentationProject提供了各种有用的文档,尤其是它的HOWTO文档。
关于Linux网络的书籍已经出版了很多,我觉得O'
Reilly出版的由CraigHunt编写的TCP/IPNetworkAdministration一书相当有用。
网络配置工具
关于网络故障诊断
要诊断网络配置的故障,则需要知道如何使用本系列教程中讨论的几个工具;
还需要熟悉影响网络状态和行为的配置文件。
本教程对进行故障诊断所应该熟悉的主要工具和配置文件进行了有效归纳。
为了简便起见,本教程将根据给定工具是更适合网络配置还是更适合用来分析网络问题来对这些工具进行分组。
当然,实际上这些工具很少是独立的。
ifconfig
LPI考试202准备(主题205):
网络配置对ifconfig详细进行了讨论。
这个工具既可以报告网络接口的当前状态,还可以用来修改这些接口的配置。
在大部分情况下,如果在网络上发生了某种故障,例如一台机器根本就无法访问网络了,不使用任何参数执行ifconfig通常是我们采取的第一步操作。
如果这个命令没有报告任何活动接口,那么我们就可以确认本地机器的配置有问题。
这里的“活动”是指它可以显示分配的IP地址;
在大部分情况下,我们应该期望在RX和TX行中看到报文的数量:
清单1.使用ifconfig
eth0 Link encap:
Ethernet HWaddr 00:
C0:
9F:
21:
2F:
25
inet addr:
192.168.216.90 Bcast:
66.98.217.255 Mask:
255.255.254.0
UP BROADCAST RUNNING MULTICAST MTU:
1500 Metric:
1
RX packets:
6193735 errors:
0 dropped:
0 overruns:
0 frame:
0
TX packets:
6982479 errors:
0 carrier:
试图使用类似于ifconfigeth0up...的命令来激活网络接口是尝试查看这个网络接口是否可以激活的第一步(在很多情况下,这行命令中都会添加其他一些参数)。
route
网络配置对route详细进行了讨论。
这个工具让我们可以查看并修改对本地机器和本地网络有效的路由表。
使用route可以添加和删除路由,设置网络掩码和网关,并执行各种其他任务。
对于大部分情况来说,调用route应该在初始化脚本中进行,但是在试图诊断和解决问题时,尝试使用route的一些选项可以给我们提供很大的帮助(可以将成功验证过的命令复制到适当的初始化脚本中供以后使用)。
hostname
这个工具还有几个别名,分别表示了这个工具的功能的不同方面:
domainname
nodename
dnsdomainname
nisdomainname
ypdomainname
可以使用hostname选项来控制这个工具的不同方面。
hostname用来设置或显示当前系统的主机名、域名或节点名。
很多网络程序都会使用这些名称来标识机器。
域名还可由NIS/YP使用。
dmesg
dmesg工具可以用来检查内核的日志消息;
它是与syslogd一起进行工作的。
任何内核进程,包括与网络有关的进程,都可以使用dmesg工具进行访问,我们通常会使用grep之类的其他工具对输出结果进行过滤,还可能使用dmesg命令的一些选项。
手工设置ARP
我们几乎从不需要(也不想)弄乱自动发现的ARP记录。
不过在调试过程中,用户可能希望手工配置ARP缓存。
arp工具可以实现这种功能。
arp工具的关键选项有:
-d,表示删除;
-s,表示设置;
-f,表示从文件中设置(默认文件是/etc/ethers)。
例如,假设与本地网络上特定IP地址进行现在非常不可靠。
这种情况的一个可能原因是多台机器都错误地被配置成使用同一个IP地址。
当ARP请求通过以太网络进行广播时,无法预测出是哪一台机器首先使用ARP响应对这个请求进行应答。
最终的结果会导致数据报文一次被发送到某台机器上,另外一次却被发送到另外一台不同的机器上。
使用arp-n来调试实际的IP分配是第一步。
如果我们可以确定此时的IP地址没有正确映射到正确的以太网设备上,那么这就是我们要继续探索的一条重要线索。
除了随机测试之外,还可以使用arp-s(或-f)选项来强制进行正确的ARP映射。
将IP设置为映射到一个它应该映射到的实际以太网设备上;
手工配置映射不会过期,除非使用temp标记进行这种设置。
如果手工ARP映射解决了数据丢失问题,那么这就是一个强烈的信号,指出存在的问题就是重复分配了IP地址。
网络故障诊断工具
netstat
网络配置对netstat进行了详细的讨论。
这个工具可以显示很多有关网络连接、路由表、接口统计信息、伪装连接(masqueradeconnection)和多播成员的信息。
此外,netstat还提供有关已经使用各种方法处理过的报文的相当详细的统计信息。
netstat的手册提供了有关netstat的可用开关和选项的信息。
这个工具是一个很好的通用工具,可以用它深入挖掘本地机器上网络状态的详细信息。
ping
查看是否可以从当前机器连接到指定主机(通过IP或符号名)的一个好起点就是ping工具。
利用存在的路由(如果使用了符号名,还包括利用DNS或其他方式对名称进行解析),ping可以提供有关报文往返时间的信息,这可以说明网络拥塞程度或路由延时程度。
有时ping会显示所丢弃报文的百分比,不过实际上我们通常会看到ping请求中所丢失报文的比率是100%或0%。
traceroute
traceroute工具在某种程度上与ping有点类似。
traceroute不是简单地汇报说存在一条到给定主机的路由,而是会显示在整个通路上所经过的所有跃点的详细信息,包括每级路由的时间。
随着时间的变化,路由也可能会发生变化,这可能是因为Internet中的动态变化,也可能是由于在本地对路由进行了修改。
不过在给定时间,traceroute可以显示实际允许的路径。
清单2.traceroute显示实际的通路
$ traceroute
traceroute:
Warning:
has multiple addresses;
using 64.233.187.99
traceroute to (64.233.187.99), 30 hops max, 38 byte packets
1 ev1s-66-98-216- (66.98.216.1) 0.466 ms 0.424 ms 0.323 ms
2 ivhou-207-218-245- (207.218.245.3) 0.650 ms 0.452 ms 0.491 ms
3 ivhou-207-218-223- (207.218.223.9) 0.497 ms 0.467 ms 0.490 ms
4 (216.200.251.25) 36.487 ms 1.277 ms 1.156 ms
5 so-5-0- (64.125.29.65) 13.824 ms 14.073 ms 13.826 ms
6 (64.124.229.173) 13.786 ms 13.940 ms 14.019 ms
7 72.14.236.175 (72.14.236.175) 14.783 ms 14.749 ms 14.476 ms
8 216.239.49.226 (216.239.49.226) 16.651 ms 16.421 ms 17.648 ms
9 64.233.187.99 (64.233.187.99) 14.816 ms 14.913 ms 14.775 ms
host、nslookup和dig
host、nslookup和dig这三个工具都是用来查询DNS项的;
它们的功能在很大程度上有所重叠。
一般而言,nslookup对host进行了增强,dig对nslookup进行了增强(不过这三个工具都可以很好地向后兼容和向前兼容)。
这三个工具都依赖于相同的底层内核机制,因此它们所报告的结果在所有情况下都应该是一致的(除了详细的级别不同)。
例如,这三个工具都可以用来查询:
清单3.使用host、nslookup和dig来查询Google
$ host
has address 64.233.187.99
has address 64.233.167.99
has address 72.14.207.99
$ nslookup
Server:
207.218.192.39
Address:
207.218.192.39#53
Non-authoritative answer:
Name:
64.233.167.99
72.14.207.99
64.233.187.99
$ dig
;
<
<
>
DiG 9.2.4 <
;
global options:
printcmd
Got answer:
->
HEADER<
- opcode:
QUERY, status:
NOERROR, id:
46137
flags:
qr rd ra;
QUERY:
1, ANSWER:
3, AUTHORITY:
0, ADDITIONAL:
0
QUESTION SECTION:
. IN A
ANSWER SECTION:
. 295 IN A 64.233.167.99
. 295 IN A 72.14.207.99
. 295 IN A 64.233.187.99
Query time:
16 msec
SERVER:
207.218.192.39#53(207.218.192.39)
WHEN:
Mon Apr 17 01:
08:
42 2006
MSG SIZE rcvd:
76
网络配置文件
/etc/network/和/etc/sysconfig/network-scripts/
在很多Linux发行版本中,/etc/network/目录中都包含有关当前网络的一些数据,在/etc/network/interfaces文件中更为集中。
各种工具,尤其是ifup和ifdown(或用于无线接口的iwup和iwdown),在很多发行版上都包含在/etc/sysconfig/network-scripts/目录中(但是在您的发行版上,这些脚本可能保存在其他地方)。
/var/log/syslog和/var/log/messages
内核或syslogd工具所记录的消息都保存在日志文件/var/log/syslog和/var/log/messages中。
LPI考试201准备(主题211):
系统维护对系统日志详细进行了讨论。
dmesg工具通常用来查看这些日志。
/etc/resolv.conf
LPI考试202准备(主题207):
域名系统详细对/etc/resolv.conf进行了讨论。
通常,这个文件只包含查找域名服务器所需要的信息。
可以手工配置该文件,也可以通过诸如RIP、DHCP或NIS之类的动态方法配置它。
/etc/hosts
文件/etc/hosts通常是Linux系统试图解析符号主机名时需要首先查看的地方。
我们可以向这个文件中添加一些项来绕过DNS查询(有时是YP或NIS查询),或者在这里给出通过DNS无法找到的主机,通常它们都是本地网络上的一些主机名。
参见清单4中的例子。
清单4./etc/hosts,解析符号主机名的地方
$ cat /etc/hosts
# Set some local addresses
127.0.0.1 localhost
255.255.255.255 broadcasthost
192.168.2.1 artemis.gnosis.lan
192.168.2.2 bacchus.gnosis.lan
# Set undesirable site patterns to loopback
127.0.0.1 *
/etc/hostname和/etc/HOSTNAME
文件/etc/HOSTNAME(在某些系统上可能不是大写)有时被用作网络上已知localhost的名称。
然而,在不同的发行版之间,这个文件的使用是不同的;
通常,在现代发行版上,我们只使用/etc/hosts。
/etc/hosts.allow和/etc/hosts.deny
LPI考试201准备(主题209):
文件和服务共享和LPI考试202准备(主题212):
系统安全性对/etc/hosts.allow和/etc/hosts.deny文件详细进行了讨论。
这些配置文件用来限制或允许各种网络工具访问网络。
有关通配符、范围和应该授予或禁止的具体权限的信息,请参阅这些配置文件的手册。
当某个连接“似乎”应该正常工作但却出现故障时,除了检查增强系统安全的初始设置之外,我们通常还会希望查看一下这些文件的内容。
通常,在调试中做完基本接口和路由信息的检查之后,才开始检查访问控制问题。
也就是说,如果我们无法到达某台特定的主机(或者这台主机无法到达我们的机器),那么我们就应该检查这台主机是否有权使用我们提供的服务。
但是连接和服务利用(serviceutilization)中的选择性故障通常都是因为访问控制问题造成的。
结束语
利用每一点资源
对于本教程所涉及的主题来说,获得进一步信息的最好的参考资料可能是本系列教程的其余部分。
在前面的教程中已经详细介绍了本教程所涉及的所有主题。
有些人为修复Linux网络问题编写了详细的指南。
其中不错的一篇是“SimpleNetworkTroubleshooting”。
Debian类似的快速指南是“HowToSetUpALinuxNetwork”。
自发表之后,随着发行版和命令的变化,这些教程也进行了几次更新,我们可以在Internet上进行搜索,以查找最新的版本。