一、linux网络结构特点 由于linux是在internet上发展成熟的践作系统,因此,它具有与生俱来的网络功能,特别在internet和intranet的功能上有明显优势。但是由于linux的桌面应用和windows的差距,除了一些linux专门实验室之外大多数企业应用linux系统时:往往是linux和windows或unix等践作系统共存形成异构网络。掌握linux tcp/ip的网络模型(见图-1所示),掌握osi网络模型、tcp/ip模型及相关服务对应的层次对于linux网络故障分析与排除是非常重要的。据统计,linux网络故障有35%在物理层、25%在数据链路层、10%在网络层、10%在传输层、10%在对话、7%在表示层、3%在应用层。由此可以看出,网络故障通常发生在网络七层模型的下三层,即物理层、链路层和网络层。对应于实际网络也就是使用的网络线缆、连接模块、网卡、交换机、路由器等设备故障。这些故障可能因为硬件的质量或性能、磨损老化、人为误践作、不正确的网络协议设置、管理问题、linux软件的bug、系统受到黑客攻击和linux病毒等原因造成。osi的层次结构为网管员分析和排查故障提供了非常好的组织方式。由于各层相对独立,按层排查能够有效地发现和隔离故障,因而一般使用逐层分析和排查的方法。
图-1 linux tcp/ip四层模型和osi七层模型对应 把osi七层模型和linux tcp/ip四层网络模型对应,然后将各种网络协议也规档,这样有利于网络故障的排除。tcp/ip模型各个层次的功能和协议见表-1。 需要重点说明的是: tcp/ip与osi 大的不同在于osi是一个理论上的网络通信模型,而tcp/ip则是实际运行的网络协议。图2示出tcp/ip的主要协议分类情况。
图-2
图-3 linux网络拓扑图 丛图3中可以看出这是一个典型的中型linux异构以太网络。括各种服务器、防火墙。网络节点在300个左右,对于这个网络故障应当丛网络硬件传输问题开始,然后检查软件设定问题。 二、linux网络故障 1.网络硬件传输问题 网络硬件传输问题引起的故障主要指连通性故障。 (1)网络线缆 在图-3中可以发现,网络接口设备中使用 多的是网络线缆 。由于网络线缆 经常接在墙角和门缝处,有可能被压坏。所以,需要注意网线是否因被截断、网线过度扭曲变形、自制网络接头(如rj-45跳线头)品质不良造成讯号不良;网络接头与设备(如集线器、路由器、交换机)接触不良等。网络线缆的检测通常使用网络线缆测试仪。它主要用于测试目前大家常用的遮敝式双绞线、非遮敝式双绞线及同轴缆线等。一般来讲网络线缆测试仪都有侦测缆线错误状态功能,网线是否开路,是否短路以及相反、交叉、分离等即可就可辨别,同时在一定的范围内还可量测缆线的长度,更主要的是用它来核对双绞线末端到末端连接是否符合 eia/tia 568商业建筑电信布线标准。 (2)网卡、集线器、路由器、交换机、adsl调制解调器等网络硬件设备 1、网卡不稳定、品质不佳,或者与整体系统的兼容性不佳;各网络设备的接触不良,造成讯号衰减;网络设备使梅椒ú涣迹?斐缮璞腹δ芩??醯榷蓟嵩斐纱?湮侍狻m?ǖ募觳饪梢酝ü??ǖ腖ink灯代表网线的好坏或者与hub的连接是否正确,网卡的100m灯代表是否是100m连接。 2、高品质的路由器、交换机一般都有液晶显示菜单,实时显示运行状态,可以从中看出设备的故障情况。大部分网络设备的物理层的信息虽然标识一样,但在细节上很不相同,需要仔细研读产品说明书来了解。另外可以在交换机上观察各以太口上获得的mac地址来判断故障。链路层的信息一般和物理层的信息交织在一起,除非出现误码率高和设备运行状态不稳定等,都不需要对链路层进行排障。 3、adsl调制解调器:power:当adsl路由器接上电源后,电源led指示灯会亮起。如果led指示灯熄灭的话,请检查您的电源接线是否正确。status:当adsl modem与局端设备握手时会闪烁,连线后会常亮。line 当广域网线路联通时,指示灯会亮起;在线路有数据传送时会闪烁。pc 局域网联机led指示灯。当联机上以太网时,此灯会亮起;在未连接以太网时,此灯是熄灭的。以太网有数据传输时闪烁。 test 测试用,常灭。 (3)网络设备配置的规则 各个网络设备的配置都是有规则的。太长的网络线会造成讯号的衰减,导致网络联机的时间太长甚至无法联机。例如100兆以太网要遵守5-4-3-2-1网络标准:5- 多有5个网段且干线总长 大为2469m。4- 多连4个中继器。 3-其中2-3干线段上连工作站,一个干线 多100个工作站,中继器相当于一个工作站,干网的每一端均需50欧姆的端界器,其中一个必须接地。2-有两个网段只用来扩长而不连任何工作站,1-由此组成一个局域网,工作站到收发器 大距离50m,收发器 小间距2.5m。 (4)ups电源 ups电源是一个容易被忽视的环节。由于核心路由器、大型交换机、基带式“猫”等网络设备对电压和接地都非常敏感,因此,对于这些网络,应当使用性能优良的在线式ups作为供电电源,对于服务器10个以上,节点在300个以上的中型网络 好使用10000w功率以上的,从而可以将所有的网络设备都连接在同一电源,避免不同设备间的电压差别。此外,机房和机柜要有非常好的接地措施,并为所有设备建立一条地线保证接地电压相同,确保网络设备正常进行。 2.软件问题 (1)网卡的ip地址设定错误 网卡是linux网络中的 常用设备,通常linux服务器要安装两块以上网卡。网卡ip地址的设定不当是导致网络故障的 常见原因。例如,同一个ip在同一个网段中出现造成ip冲突、子屏蔽网络设定错误等。 (2)路由问题(router) 这方面的问题出在网关的设定错误,或者是路由设定不正确,导致资料封没有办法顺利地送出去。路由器是 (3)网络负荷问题(loading) 当黑客对网络实施拒绝服务攻击时,同时有大量的信息涌服务器或交换机和路由器,就有可能造成网络的停顿甚至挂起。许多linux网络故障是由于linux服务器遭到系统攻击引起的。 (4)nat问题 nat 无法正确的工作原因有很多,不过,如果您确定您的局域网络联机已经正常,而且主机可以正确的连上 internet,另外,客户端的 dns 设定也是正确的,那么可能发生的问题大概就是没有将转发功能打开,使用命令: /proc/sys/net/ipv4/ip_forward 如果使用采用iptables作为nat服务器接入网络,还要通过nat将内网ip转换为外网ip,隐藏内部网络 iptables -t nat -a postrouting -o eth0 -p tcp --dport 110 -j snat --to-source 202.112.133.119 iptables -t nat -a postrouting -o eth0 -p udp --dport 110 -j snat --to-source 202.112.133.119 其中:该入服务器的eth0接口连外网,ip地址为202.112.133.119。eth1接口连局域网,ip地址为192.168.0.1;局域网内部有一台web服务器,ip地址为192.168.0.100。 (5)其它 防火墙是linux网络安全的关键部件,能够探测和阻挡的攻击。以redhat linux为例安装时已经内至三种不同级别(标准、高、无防火墙)的防火墙。有时候选择 高级别防火墙会让一些通信端口被防火墙挡住了,造成无法执行某些网络资源。如果没有指定具体情况,系统应用默认的防火墙级别即高级别防火墙,是指系统指允许dhcp网络链接、技术消息服务(irc)和实时音频处理。中级别防火墙禁止运行远程会话、远程nfs 、ftp、ssh、http、telnet和端口好低于1023的如何连接。 对于如何选择你自己的安全级别,要从您的工作需求决定。如果你目前只是学习linux基础知识和编程,可以将级别降低一下,一旦你准备将企业应用或关键应用放到linux平台上时,则应提高安全级别。另外在**********(squid)、文件服务器(samba)等故障中也要考虑防火墙设定问题。 另外linux内核存在的漏洞问题;应用程序中bug;以及不同的践作系统的兼容性问题;设备驱动的缺少也是发生linux网络故障的原因。 三、linux网络故障的解决问题的思路 linux网络故障排除应当遵循先硬件后软件的方法。因为硬件如果出现物理损坏那么如何设定网络都不能解决故障。解决问题的方法可以从自身linux计算机的网卡查起,然后到服务器、集线器、路由器等硬件。如果确定硬件没有问题了,再来考虑软件的设定。 1、检查网卡工作状况 linux下的网卡不能工作可能是以下原因之一: 1.网卡没有被linux检测到; 2.没有与之相应的内核模块; 3.该模块没有被加载; 4. linux系统不支持你的网卡。 详细情况可以参考笔者的:linux服务器网卡驱动安装及故障排除需要补充一点是:调整自适应工网卡的作模式,现在的网卡大多是自适应工作模式,在配置网卡参数时我们很少考虑它的工作模式,但是在路由器、交换机、**********等通信量比较大的关键设备上,应该为它指定正确的工作模式,这样可以避免故障。在linux环境下,我们可以使用系统自带的工具mii-tool命令来配置网卡工作模式。 mii-tool [-vvrrwl] [-a media,... | -f media] [interface ...] media: 100basetx-fd, 100basetx-hd, 10baset-fd, 10baset-hd, 100basetx, 10baset 主要选项: -v 表示查看网卡现在的工作模。 -f 表示强行修改。 -r 恢复网卡的自适应工作模式。 -w 显示监测链路状态。 -a 使用高级修改模式。 -l 表示将修改记录写入syslog日志文件。 media可选的模式有100basetx-fd、100basetx-hd、10baset-fd、10baset-hd等。 interface代表所选择的网卡,如eth0、eth1等。 (1)强制网卡工作在100m双工模式下,输入命令: mii-tool -f 100basetx-fd eth0 (2)恢复网卡的自适应工作模式,输入命令: mii-tool -r eth0 2、确认局域网内网络连接情况 网卡设定确认没有问题之后,接下来要确认局域网内网络连接情况。根据图-2网络拓扑结构,对集线器1组成的局域网的要求有下面几点: (1)客户机ip的设定 假设子网为192.168.1.0/24,那么局域网内所有计算机的ip应该介于192.168.1.1~192.168.1.254,且所有的计算机子屏蔽网络均为255.255.255.0,ip在所有的计算机都不可以重复。 (2)网关 假设linux ip为192.168.1.2,那么局域网内所有客户机的网关是192.168.1.2 。 (3)windows端的通信协议 局域网内其它的windows系统的通信协议仅需要tcp/ip及netbuei即可,如果安装过多的通信协议可能会造成联机过慢。 (4)windows 端工作组与计算机名称 假如需要资源共享,那么就必须在windows系统中建立文件共享,并且所有的计算机工作组必须相同,但计算机名称不能相同。 3、dns故障排除 linux域名服务器使用的是bind9版本。域名服务器含数据库的部分段的信息,并可提供被称之为解析器的客户来访问。dns域名解析服务是网络的基础服务,承担着将域名翻译为计算机可以识别的ip地址,以及寻找ip地址对应的逆向翻译工作。一旦dns服务出现故障,用户就无法通过采用域名的方式进行互联网访问,同时相应的邮件服务器也会由于无法进行正常的域名解析而出现故障。由于dns服务对于网络非常重要,所以也成为网络故障排除的重要任务。如果在linux网络中无法进行域名解析,很可能是没有在本地指定有效的域名服务器,通常这种情况比较常见。大多数dns故障是因为配置文件的语法错误,或者是对计算机分配了错误的地址造成的。dns就是domain name system, dns服务器可以分为三种,高速存服务器(cache-only server)、主服务器(primary name server)、辅助服务器(second name server)。 linux 下主要dns配置文件:linux上的域名服务由named守护进程控制,该进程从主文件:/etc/named.conf中获取信息。 它括一族将主机名称映射为ip地址的各种文件:下面是named配置文件族详细内容。表-2 named配置文件族(请看附件) 当进行dns故障诊断时,可参照下面的步骤: (1)对全部记录检查和确认主机名称的拼写,记住绝对地址是以“.”结尾的. (2)如果在区文件中做了任何修改,务必修改soa记录中的序列号,这将保证服务器正确地重新上载文件。 (3)确定输入到主区的名称和ip地址匹配反向指针文件中的反向指针信息. (4)检查防火墙相关程序。 (5)使用命令检查。(ping、dig、nslookup、named-checkzone、named-checkconf) (6)使用dlint软件检查dns故障。dlint是一个专门检查dns配置文件开放源代码软件。 新版本:1.4.0,官方网址:http://www.domtools.com/dns/dlint.shtml (7)另外如果客户端无法进行域名解析, 可能原因是没有在本地指定有效的域名服务器,这种情况比较常见。解决办法:一般修改和域名服务相关的文件如/etc/hosts或 /etc/resolv.conf,在这些文件中添加有效的域名服务器的ip地址就可以解决。如果判断不是本地域名解析的问题,例如在本地可以解析公司域名,但外面的客户无法正常解析公司域名,则需要和域名注册服务提供商联系,一同解决问题。因为此种情况的发生,可能是公司系统中的ip地址和注册的域名不对应的原因造成的。 4、对于linux服务器攻击造成网络故障 对于linux服务器来说, 大的危险是黑客攻击。对linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏linux服务器安全的未授权行为。攻击的范围可以从服务拒绝直至完全危害和破坏linux服务器。 严重的是远程用户获得根权限。linux网络中超级用户拥有 高权限。一旦远程用户获得根权限你的网络随时可能被摧毁。所以部署ids是防止这类网络故障的选择。当然你还要采取其他措施:一个配置适当的防火墙不仅是系统有效应对外部攻击的第一道防线,也是 重要的一道防线。在新系统第一次连接上internet之前,防火墙就应该被安装并且配置好。防火墙配置成拒绝接收所有数据,然后再打开允许接收的数据,将有利于系统的安全。防火墙的具体设置方法请参见iptables使用方法。 5、linux病毒造成网络故障的排除 linux践作系统一直被认为是windows系统的劲敌,因为它不仅安全、稳定、成本低,而且很少发现有病毒传播。但是,随着越来越多的服务器、工作站和个人电脑使用linux软件,电脑病毒制造者也开始攻击这一系统。对于linux系统无论是服务器,还是工作站的安全性和权限控制都是比较强大的,这主要得力于其优秀的技术设计,不仅使它的作业系统难以宕机,而且也使其难以被滥用。unix经过20多年的发展和完善,已经变得非常坚固,而linux基本上继承了它的优点。在linux里,如果不是超级用户,那么恶意感染系统文件的程序将很难得逞。当然,这并不是说linux就无懈可击,病毒从本质上来说是一种二进制的可执行的程序。冲击波(blast)等恶性程序虽然不会损坏linux服务器,但是却会传播给访问它的windows系统平台的计算机。 linux平台下的病毒分类: 1.可执行文件型病毒。 2.蠕虫(worm)病毒。 3.脚本病毒。 4.****程序:在广义的病毒定义概念中,****也已经纳入了病毒的范畴。活跃在windows系统中的****这一入侵者的利器在linux平台下同样极为活跃。从增加系统超级用户账号的简单****,到利用系统服务加载,共享库文件注射,rootkit工具,甚至可装载内核模块(lkm),linux平台下的****技术发展非常成熟,隐蔽性强,难以清除。是linux系统管理员极为头疼的问题。 综合以上介绍,可以看到总体来说计算机病毒对linux系统存在较小的危险。但是由于各种原因在企业应用中往往是linux和windows践作系统共存形成异构网络。在服务器端大多使用linux和unix的,桌面端使用windows 。所以为linux的防范病毒策略分成两个部分: 1.针对linux本身(服务器和使用其作为桌面的计算机)防范策略。 可执行文件型病毒、蠕虫(worm)病毒、脚本病毒的防范通过安装gpl查杀病毒软件基本可以防范。服务器端可以使用antivir它是工作在命令行下的,运行时可以较少占用系统资源。桌面用户可以选择tkantivir)是用tcl/tk写的,可以运行在任何x-windows环境下面,比如kde或gnome等。 对于****程序防范可以采用lids和chkrootkit,lids是linux内核补丁和系统管理员工具(lidsadm),它加强了linus内核。可以保护dev/目录下的重要文件。而chkrootkit可以检测系统的日志和文件,查看是否有恶意程序侵入系统,并且寻找关联到不同恶意程序的信号。 新版本的chkrootkit0.45可以检测出sniffers、trojans、worms、rootkit等59种。 2.针对使用linux服务器后端的windows系统的病毒防范策略。 许多企业使用**********接入互联网,许多用户windows系统进行都是在进行http网页浏览和文件下载时感染病毒,所以可以在**********上加挂一个病毒过滤器,对用户浏览的http网页进行病毒检测,发现有用户浏览网页感染病毒的状况即由**********进行阻断,丢弃带有病毒的请求,将不安全的进程阻止在**********内,禁止带有病毒的数据向客户端计算机传播。squid是一款非常优秀的**********软件,但是并没有专门的病毒过滤功能。可以考虑使用德国开放源码爱好者开发的一款基于linux的病毒过滤**********——havp(http://www.server-side.de/)。havp病毒过滤**********软件既可以独立使用,也可以与squid串联使用,增强squid**********的病毒过滤功能。 提供邮件服务是linux服务器中重要应用。可以使用clamav,clamav 全名是 clam antivirus,它跟liunx一样强调公开程序代码、免费授权等观念,clamav 目前可以侦测超过40,000 种病毒、蠕虫、木马程序,并且随时更新数据库,有一组分布在世界各地的病毒专家,24小时更新及维护病毒数据库,任何人发现可疑病毒也可以随时跟她们取得联系,立刻更新病毒码,在极短的时间内,网络上采用clamav的邮件服务器就完成 新的防护动作。 6、linux系统本身漏洞及其软件的bug造成网络故障 践作系统是计算机系统灵魂,维护着系统的底层,对内存、进程等子系统进行管理和调度。如果践作系统本身出现了漏洞,其影响将会是致命的。践作系统的内核,对于网络安全是至关重要的。目前,内核的维护主要分两种模式:对于私有践作系统,如windows/solaris等,由于个人用户不能直接接触其源代码,其代码由公司内部开发人员维护,其安全性由同样的团队保证,内核的修正与其他应用程序一样,以patch/sp的方式发布。对于linux这样的开放式系统,是一种开放的结构。应该说,开放的模式是双刃剑。从机制上讲,全世界的开发人员都能获得源代码,从而找出其中的纰漏,似乎安全性应该更好;但是同时,如果网络管理人员不能及时更新内核,也会留下安全隐患。linux服务器运行的软件主要括:samba,ftp,ssh,mysql,php,apache等,这些软件,大都是开源软件,而且都在不停升级,稳定版和测试版交替出现。在www.apache.org 上, 新的changelog中都写着:bug fix, security bug fix的字样。所以linux网管员要经常的关注相关网站的bug fix和升级,及时升级或添加补丁。 总结: 掌握osi模型、tcp/ip分层模型及相对应的相关协议和正确网络拓扑结构,对于linux网络故障分析与排除是非常重要的,另外linux网络往往比较复杂需要你对多种网络践作系统都比较熟悉,还需要采取多种措施。如果能够配合使用一些网络检测工具(例如网络测试仪、网络嗅探器等),对于网络故障分析与排除也是非常有用的。 



