540 likes | 688 Views
第 13 章 TCP/IP 网络管理. 13.1 网络概述 13.2 网络配置 13.3 定为基本的网络故障和收集网络状态信息 13.4 基本网络服务的介绍 13.5 小结 习题. 主机系统的网络管理涵盖很多方面的内容,包括网络设备的安装、网络故障的检测、网络流量的统计以及状态信息的收集,本章将通过一些基本网络操作命令的介绍和对网络配置文件的分析,帮助读者更好地理解网络的工作原理,提高管理技能。. 13.1 网络概述
E N D
第13章 TCP/IP网络管理 13.1 网络概述 13.2 网络配置 13.3 定为基本的网络故障和收集网络状态信息 13.4 基本网络服务的介绍 13.5 小结 习题
主机系统的网络管理涵盖很多方面的内容,包括网络设备的安装、网络故障的检测、网络流量的统计以及状态信息的收集,本章将通过一些基本网络操作命令的介绍和对网络配置文件的分析,帮助读者更好地理解网络的工作原理,提高管理技能。主机系统的网络管理涵盖很多方面的内容,包括网络设备的安装、网络故障的检测、网络流量的统计以及状态信息的收集,本章将通过一些基本网络操作命令的介绍和对网络配置文件的分析,帮助读者更好地理解网络的工作原理,提高管理技能。
13.1网络概述 Linux是一个网络操作系统,系统管理的很大一部分工作与网络有关。和传统的Unix一样,Linux中,也同时支持TCP/IP网络和UUCP网络。UUCP(Unix-to-Unix Copy)是由美国贝尔实验室开发的、供UNIX工作站之间进行通信的一套协议簇,它主要是通过拨号电话线路进行通信,尽管UUCP网络仍然广泛地应用于各种场合,而且费用低廉,但它有限的传输带宽将制约它的发展。随着TCP/IP网络的迅速发展,可以预见UUCP的应用范围将不断地被削减。本章主要介绍TCP/IP网络的管理,不再对UUCP进行过多的讨论。有兴趣的读者可以通过其他途径深入了解。下面将结合TCP/IP网络在Linux中的实现介绍一些基本概念。
TCP/IP被称为一种事实上的Internet互联标准,因为它并不完全遵从ISO/OSI标准,但是因为Internet是从TCP/IP协议基础上发展起来的,在标准委员会制定出标准时,TCP/IP已经得到了广泛的应用和厂商支持。人们最终抛弃了政府行为,而选择了在市场需求中茁壮成长起来的TCP/IP标准,这一点在计算机界常常得到印证。TCP/IP被称为一种事实上的Internet互联标准,因为它并不完全遵从ISO/OSI标准,但是因为Internet是从TCP/IP协议基础上发展起来的,在标准委员会制定出标准时,TCP/IP已经得到了广泛的应用和厂商支持。人们最终抛弃了政府行为,而选择了在市场需求中茁壮成长起来的TCP/IP标准,这一点在计算机界常常得到印证。 图13.1是TCP/IP协议簇的原理结构图,它反映了网络系统的工作原理。
TCP/IP协议簇的核心部分包括传输层协议(TCP和UDP)、网络层协议(IP)和硬件接口层,这三层在操作系统内核中实现。而应用层如FTP、WWW等应用程序则通过网络编程接口(socket、Windows Sockets)与核心协议打交道。整个协议簇是一种分层结构的,下层为上层提供服务,不同层次之间通过一些接口通信,比如应用层通过socket接口与TCP层通信。 将通信功能分层可以简化各层的实现,优化每一层的功能,达到代码重用、最小修改和易于维护的目的。模块化在软件设计与实现中无论是面向对象技术还是分布式处理都有其不可替代的优越性,是软件工程的理想目标。采用这种层次性的结构还可以
灵活地配置网络,可以通过为硬件驱动规定统一的接口,将硬件的运作和处理交给不同的生产厂商去做。最终的好处是无论采用什么样的硬件环境,都可以通过TCP/IP网络达到互联的要求。下面将结合最为常见的以太网进行分析。灵活地配置网络,可以通过为硬件驱动规定统一的接口,将硬件的运作和处理交给不同的生产厂商去做。最终的好处是无论采用什么样的硬件环境,都可以通过TCP/IP网络达到互联的要求。下面将结合最为常见的以太网进行分析。
13.2 网络配置 13.2.1 以太网卡的安装 我们常用的网卡有两种总线模式,一种是ISA卡,一种是PCI卡。PCI卡比ISA有许多优点,除了提供很高的总线带宽来达到更快更好的性能外,它对系统资源的申请是动态的,而ISA必须固定分配。典型的情况就是装载ISA卡时,Linux需要给它分配一个中断号和I/O资源的地址,以便驱动程序知道在何处可以找到该卡。 系统加载网卡也有两种模式,一种是直接编译进内核,一种是动态加载模块。若设备驱动以模块方式动态加载进内核,对于PCI设备,模块将自动检测到所有已经安装到系统上的设备;对于ISA卡,则
需要向模块提供I/O地址,这些信息应在/etc/conf.modules中提供(有的系统为modules.conf)。比如有一块ISA总线的3c509卡,编辑conf.modules文件如下:alias eth0 3c509 options 3c509 io=0x300这样驱动程序就知道到内存的哪一段去寻找网卡,其中0x表示16进制。对于PCI卡,仅仅需要alias命令来使设备名(以太网设备为ethN)和适当的驱动模块名关联即可,PCI卡的I/O地址将会被自动检测到。对于PCI卡,编辑conf.modules文件如下:alias eth0 3c509注: 加载模块的命令格式如下:# insmod 模块名(本例中为3c509)若驱动程序直接被编译进了内核,系统启动时的PCI检测程序将会自动找到所有相关的网卡。ISA卡一般也能够被自动检测到,但是在某些情况
下,ISA卡仍然需要做下面的配置工作,在/etc/lilo.conf中增加配置信息,其方法是通过LILO程序将启动参数信息传递给内核。对于ISA卡,编辑lilo.conf文件,增加如下内容:append=″ether=3,0x300,eth0″下,ISA卡仍然需要做下面的配置工作,在/etc/lilo.conf中增加配置信息,其方法是通过LILO程序将启动参数信息传递给内核。对于ISA卡,编辑lilo.conf文件,增加如下内容:append=″ether=3,0x300,eth0″ 注: 先不要在“lilo.conf”中加入启动参数,测试一下你的ISA卡,若失败再使用启动参数,有些旧的ISA网卡,必须使用其驱动盘设置中断号与I/O地址或者采用硬跳线改变中断号,在系统中配置的参数无效。PCI卡会被自动查找到,所以没有必要这样做。
13.2.2 TCP/IP网络相关的概念 前面提到了TCP/IP网络的结构以及如何加载硬件驱动程序,剩下的工作就是如何在系统中配置TCP/IP,以使其能正常工作。在开始讲配置之前,必须澄清一些基本概念,以让读者理解为什么要这样配置。 1. IP地址 TCP/IP网络要进行通讯,必须有一个标识主机的方法。在以太网中,可以通过网卡的硬件地址来标识主机,但是这种地址格式复杂,不便于阅读和记忆,也不便于管理。所以TCP/IP网络中定义了一种地址格式,用来惟一确定每个网络接口。它具有如下格式:
X.Y.Z.W 其中X、Y、Z、W是0到255之间的整数,如果按照二进制的书写格式,它是一个32位的数字,对于TCP/IP协议簇来说,它所认识的IP地址与上面的格式有点不同,它以如下格式阅读: 网络地址+主机地址其中网络地址是大于1位的二进制数,主机地址也是大于1位的二进制数。比如,计算中心网关地址166.111.4.1分解成协议所能认识的地址就是: 网络地址=1010011001101111 主机地址=0000010000000001
后面将介绍为什么这样分解。需要注意的是,在IP地址中,全0主机地址代表的是网络,全1主机地址代表的是广播。比如对IP地址166.111.4.1而言,它所在的网络用166.111.4.0来表示,而166.111.4.255则代表向整个166.111.4网络广播的地址。后面将介绍为什么这样分解。需要注意的是,在IP地址中,全0主机地址代表的是网络,全1主机地址代表的是广播。比如对IP地址166.111.4.1而言,它所在的网络用166.111.4.0来表示,而166.111.4.255则代表向整个166.111.4网络广播的地址。 以上的设计贯彻了灵活的原则,给IP地址带来了很好的实用性。我们可以根据某个机器的数目给不同的单位分配不同的网段,于是就诞生了IP地址分类的问题。举个例子来说,像166.111网段可以拥有的主机数可以用16位主机地址表示,即可以达到65536台主机,所以像清华大学这样的单位,拥有一个像166.111这样的网段是合适的。而对于大型
的跨国公司如IBM,则可能拥有上十万台的主机,16位主机地址是不能满足要求的,可以分配一个24位的主机地址。而对一些小公司而言,可能分配一个拥有255台主机数的8位主机地址的网段就可以满足要求了。的跨国公司如IBM,则可能拥有上十万台的主机,16位主机地址是不能满足要求的,可以分配一个24位的主机地址。而对一些小公司而言,可能分配一个拥有255台主机数的8位主机地址的网段就可以满足要求了。 最大主机数[]16777214[]65543[]254[]N/A[]N/A最大主机数比理论数目少2个,是因为网络地址和广播地址是保留地址。另外,有一些地址是保留用于特定的内部网络的,这些网络没有直接连接到Internet,它们可能放在防火墙后面,这些地址规定如下:
A类: 10.0.0.0 B类: 172.16.0.0到172.31.0.0 C类: 192.168.0.0到192.168.255.0 IP地址经过分类,确实方便了记忆和管理,但是也造成了地址的浪费,许多地址即使空着,但归属某个单位或部门,别人没有办法使用,从而造成了地址空间的紧张,当然这也在很大程度上是因为32的地址空间限制。所以Ipv6(目前的IP协议版本为Ipv4)技术的一部分工作就是解决地址空间不足的问题。
2. MAC地址 MAC地址在以太网中是网卡的硬件地址,以太网中机器之间通过这个地址通信,它是一个6字节48位的数字,其常见格式以十六进制数字表示如下:xx:xx:xx:xx:xx:xx可以通过ifconfig命令来查看它。在IBM的令牌环网中也有硬件地址的概念,但两者有很大的区别,在同一本地网络中,如果要让这种硬件地址格式不同的网络互连,必须通过专用的设备,如网桥等。我们所说的TCP/IP网络是由许多小的网络构成,这些网络可能是以太网也可能是令牌环网,TCP/IP协议通过一个地址转换协议ARP来映射IP地址与硬件地址的对应关系。同一本地网络中,硬件地址必须惟一,因为它是区分不同主机
的惟一标准。以太网中通过ARP地址广播包来收集其他主机的地址。的惟一标准。以太网中通过ARP地址广播包来收集其他主机的地址。 3. 子网掩码 操作系统中,TCP/IP协议簇在工作时,将IP地址看作是网络地址与主机地址的聚合体,其中网络地址是用来确定数据包的传输路径的,比如如何将一个数据包从美国UC-berkely大学的校园网发送到清华大学的校园网。在这个发送过程中,路由协议根据网络地址确定数据包从哪个路由器发送到下一个网络。而对于子网掩码而言,它是用来确定这个网络地址的,将子网掩码值与主机的IP地址做按位“与”运算,就得到了网络地址,从而也就决定了该机器上的数据包按照什么样的路径发送给别人,按
行话说,就是影响了主机的静态路由。举例说,主机A:192.168.2.4与B:192.168.2.5的子网掩码都为255.255.255.0,192.168.2.1为网关,如果主机A要发送信息给B,它通过子网掩码发现B与它处在同一网络,于是就将数据包直接发送给该机器,但是如果将主机B放在网关以外,因为以太网的ARP广播包不能通过路由器,得不到对方的MAC地址,从而主机A无法知道B不在本网段这一信息,所以不会去寻找网关转发该数据包,通信也就无法进行。这可以解释对于将子网掩码设大了或设小了所导致的种种问题。行话说,就是影响了主机的静态路由。举例说,主机A:192.168.2.4与B:192.168.2.5的子网掩码都为255.255.255.0,192.168.2.1为网关,如果主机A要发送信息给B,它通过子网掩码发现B与它处在同一网络,于是就将数据包直接发送给该机器,但是如果将主机B放在网关以外,因为以太网的ARP广播包不能通过路由器,得不到对方的MAC地址,从而主机A无法知道B不在本网段这一信息,所以不会去寻找网关转发该数据包,通信也就无法进行。这可以解释对于将子网掩码设大了或设小了所导致的种种问题。
所以遇到这种问题,一定要明白,子网掩码将决定你机器上的信息是怎么传送给别人的,如果在同一网段,它绝对不会主动找网关,只有不同网段的机器才会通过网关路由。所以遇到这种问题,一定要明白,子网掩码将决定你机器上的信息是怎么传送给别人的,如果在同一网段,它绝对不会主动找网关,只有不同网段的机器才会通过网关路由。 根据子网掩码的工作原理,还可以设计可变长度子网掩码VLSM,从而可以将大的网段划分成小的网段,也可以用小的网段构建大的网段(超网),不同的单位可以根据需要自行决定采用什么方式工作。
13.2.3 和网络相关的一些配置文件 在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,了解这些配置文件对于理解一些配置命令和界面配置工具大有好处。你可以通过编辑这些文件来完成联网工作。下面将介绍基本的TCP/IP配置文件。 1. /etc/HOSTNAME文件 该文件包含了系统的主机名称和完全的域名,如:linux.cic.tsinghua.edu.cn(Linux为主机名,cic.tinsghua.edu.cn为域名)
2. /etc/sysconfig/network-scripts/ifcfg-ethN文件 在RedHat中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eht1包含第二块网卡的配置信息。 下面是/etc/sysconfig/network-scripts/ifcfg-eth0文件的示例:DEVICE=″eth0″表示物理设备的名字 IPADDR=″192.168.2.1″表示赋给该卡的IP地址 NETMASK=″255.255.255.0″表示网络掩码 NETWORK=″192.168.2.0″表示网络地址 BROADCAST=″192.168.2.255″表示广播地址
ONBOOT=″yes″启动时是否激活该卡,值为yes/no BOOTPROTO=″none″proto取值可以是: (1) none: 无须启动协议 (2) bootp: 使用bootp协议 (3) dhcp: 使用dhcp协议 USERCTL=″no″是否允许非root用户控制该设备,值为yes/no 若希望手工修改网络地址或在新的接口上增加新的网络界面,可以通过创建新的文件,文件名为ifcfg-ethN,N为0、1等数字。
3. /etc/resolv.conf文件 该文件是由DNS客户端解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下: search cic.tsinghua.edu.cn nameserver 166.111.4.5 nameserver 166.111.8.28 “search域名”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加域名后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。
4. /etc/host.conf文件 该文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。示例如下: order bind,hosts multi on nospoof on “order bind,hosts”指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件。 “multi on”表示“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为具有多个网络接口。
“nospoof on”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其他计算机的信任。 5. /etc/sysconfig/network文件 该文件用来指定服务器上的网络配置信息,下面是一个示例: NETWORK=yes/no网络是否被配置 FORWARD-IPV4=yes/no是否开启IP转发功能 HOSTNAME=Air表示服务器的主机名 DOMAINNAME=cic.tsinghua.edu.cn分配给该机器的域名,这个字段基本不用 GATEWAY=166.111.4.1表示网络网关的IP地址 GATEWAYDEV=eth0表示网关的设备名
注意,因为不同版本的系统或者不同的应用软件会从不同的地方去取主机名,为了保证同一个系统的所有应用程序采用的是相同的主机名,应保持HOSTNAME文件与该文件中的主机名一致。注意,因为不同版本的系统或者不同的应用软件会从不同的地方去取主机名,为了保证同一个系统的所有应用程序采用的是相同的主机名,应保持HOSTNAME文件与该文件中的主机名一致。 6. /etc/hosts文件 当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。
下面是/etc/hosts文件的示例: 127.0.0.1 localhost localhost.localdomain 202.112.58.200 smthbbs 166.111.4.6 rs6000 rs6000.cic.tsinghua.edu.cn 最左边一列是主机IP信息,中间一列是主机名,任何后面的列都是该主机的别名。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效。使用下面的命令来重新启动网#/etc/rc.d/init.d/network restart Stopping network: [OK] Starting network: [OK] 注意,Linux/UNIX中,因为有权限限制,所以路径不是对所有用户都开放的,所以许多路径在用户
的环境变量中是找不到的。任何用户都有自己的PATH环境变量,不同用户可能设置得不一样,从而有“路径不是对所有用户都开放”的假象。另外,超级用户的PATH环境变量中不应该有当前路径“.”,这是从安全方面考虑的要求,因此超级用户执行当前目录下某个命令时,可能要在命令名前加上“./”。试想一下,某个捣蛋的用户编写了一个恶意的程序,并将它命名为rm,放置在自己的命令下,然后告诉管理员说自己目录下有一个文件(譬如说文件名为“ls -l”,注意中间有一空格)怎么也删不掉,粗心大意的管理员进入这个目录后,使用命令rm ″ls -l″一下子就删掉了,还对那位用户大谈UNIX中各种引号的作用,而那位用户却在那儿窃笑呢,因
为管理员执行的是他编写的同名程序,而该程序表 面上完成/bin/rm程序的功能,实际上却留下一个后门,比如拷贝一个root的shell并加上粘贴位,他以后就可以随心所欲地取得超级用户特权。所以在执行命令时,最好给出绝对路径,如在在当前目录中,则应该加上“./”,如当前目录/etc/rc.d/init.d下执行上述命令的格式应该为:# ./network restart不过在此处提醒读者,涉及到网络配置文件的修改有时仅仅靠重新运行network脚本是不够的,最好同时运行rc.local脚本。
7. /etc/inetd. conf文件 inetd被称做因特网“超级服务器”,根据网络请求装入相应的网络程序,inetd.conf文件告诉inetd应该监听哪些端口,为每个端口启动哪些服务。因为这个配置文件决定了系统的服务内容,所以也存在潜在的安全威胁,最好的办法就是禁止所有不用的服务。注意,任何对该配置文件的改动都必须让inetd重新读入配置文件,这可以通过kill命令给inetd进程发送一个挂起信号(HUP)达到目的,因为许多系统守护进程接收到这个信号后会重新读入自己的配置文件。命令的格式如下: # kill-HUP `cat/var/run/inetd.pid`
注意:HUP信号为1,inetd的PID在Linux中存放在“/var/run/inetd.pid”文件中。注意:HUP信号为1,inetd的PID在Linux中存放在“/var/run/inetd.pid”文件中。 不过不建议初学者改动这个配置文件,如果有不用的服务,删除相应的软件包更为可靠。 13.2.4用命令行方式配置TCP/IP网络 1. ifconfig命令 ifconfig是用来设置和配置网卡的命令行工具,为了手工配置网络你需要熟悉这个命令。同Windows相比,Linux/UNIX下配置工作的好处是无须重新启动机器。下面将通过示例的形式讲解。
例: 为eth0配置IP地址,命令格式如下: # ifconfig eth0 192.168.2.4 netmask 255.255.255.0 这条命令自动指定了广播地址,网络地址可以通过IP地址与子网掩码按位“与”获得,主机地址全为“1”,所以得到广播地址为192.168.2.255。也可直接写出广播地址: # ifconfig eth0 192.168.2.4 netmask 255.255.255.0 broadcast 192.168.2.255 若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活的接口的信息,例如: # ifconfig这个命令的输出如表13.2所示。
表13.2不带参数的ifconfig命令的输出结果(Alpha工作站)表13.2不带参数的ifconfig命令的输出结果(Alpha工作站) 注意: 用ifconfig命令配置的网络设备参数,在重新启动以后,这些参数设置将会丢失
表中数据的含义如下: eth0: 当前网卡的名称 Link encap:表明网卡被设置为以太网卡,有些系统还能给出带宽参数 Hwaddr: 网卡的硬件地址(MAC地址) Inet addr: 为该网卡配置的IP地址 Bcast: 广播地址 Mask: 子网掩码地址 第3行: 表明已经应用到网卡上的ifconfig命令的可选选项,有些是默认值。 第4、5行: RX、TX分别表示接收和发送的数据包的信息。
Lo: 回送设备,一般用于设备的自测。 带有-a参数的该命令则显示所有的接口的信息,包括没有激活的接口(但是有些老版本的系统可能不能显示没有激活的接口),命令格式如下,输出内容和上面的相似。 # ifconfig-a ifconfig命令除了可以配置IP地址外,还可以配置硬件地址,如以太网卡的MAC地址,其他种类的硬件需要系统能够支持,比如要修改第一块网卡“eth0”的MAC地址,其实现方法是在文件“/etc/rc.d/init.d/network”中添加下面一行命令:ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
其中hw表示硬件地址,ether为网络类型,然后使用下面的命令重新激活网卡即可:#/etc/rc.d/init.d/network restart 注: 虽然用ifconfig命令设置的参数会在机器重新启动时丢失,我们也可以通过在启动网络的脚本文件中添加上这些命令,这样每次重启机器时系统都会执行到这些脚本文件,可以达到永久改变的目的。如果要永久改变IP地址,可改变“/etc/sysconfig/network-scripts/ifcfg-ethN”文件中IPADDR项的内容,如: IPADDR=“192.168.2.254”
2. route命令 route命令影响的是主机静态路由表,由管理员手工维护。对于一般主机而言,它可以告诉一台主机如何发送数据给其他主机。如果主机充当路由器,它还要负责在不同网络间转发数据。路由是在IP层进行的,当收到一个目的地为其他主机的报文后,本主机将其网络地址与路由表中的内容进行比较,如果目的地为直接相连的网络,则直接将报文发送至该网络;如果没有直接匹配的网络地址,则将报文发送给某个默认路由器,由它进一步路由报文;如果没有默认路由,将返回给发送端一个网络不可到达的错误信息。
13.3 定位基本的网络故障和收集网络状态信息 ping命令 检查主机的连通性可以用ping命令,如果主机网络不通我们怎么办呢?在局域网内,我们可以先用该命令测试与相邻主机是否连通,如果否,则需要检查本机的网络配置和网线是否损坏。如果可以连通,则本机的网络没有问题,需要继续判断故障所在,可能是本地网络设备故障,也可能是外网引起的,需要和其他网络管理员协调。ping命令的格式如下: # ping 可选参数 目标主机的IP地址
这里的可选参数有很多,包括利用缓冲区溢出攻击用的“-l”选项,不过现在的操作系统已经弥补了这个漏洞。图13.1表明ping是利用ICMP工作的,ICMP定义了许多描述远方主机或者网络状态的信息,当远方主机或者路由器接收到ICMP请求包时,即用ICMP响应包返回这些信息。例如从“192.168.2.4”ping“192.168.2.1”,部分结果如下:这里的可选参数有很多,包括利用缓冲区溢出攻击用的“-l”选项,不过现在的操作系统已经弥补了这个漏洞。图13.1表明ping是利用ICMP工作的,ICMP定义了许多描述远方主机或者网络状态的信息,当远方主机或者路由器接收到ICMP请求包时,即用ICMP响应包返回这些信息。例如从“192.168.2.4”ping“192.168.2.1”,部分结果如下:
# ping 192.168.2.1 PING 192.168.2.1(192.168.2.1) from 192.168.2.4 : 56(84) bytes of data. 64 bytes from 192.168.2.1: icmp-seq=0 ttl=30 time=2.1 ms 64 bytes from 192.168.2.1: icmp-seq=1 ttl=30 time=1.3 ms 64 bytes from 192.168.2.1: icmp-seq=2 ttl=30 time=0.6 ms 64 bytes from 192.168.2.1: icmp-seq=3 ttl=30 time=0.5 ms 64 bytes from 192.168.2.1: icmp-seq=4 ttl=30 time=0.7 ms 64 bytes from 192.168.2.1: icmp-seq=5 ttl=30 time=1.2 ms--- ---192.168.2.1 ping statistics ----- 6 packets transmitted,6 packets received,0% packet loss round-trip min/avg/max = 0.5/1.0/2.1 ms
2. traceroute命令 为了判断外网的工作情况,可以使用另一个非常有用的命令traceroute,以确定到远方主机的路由,也就是数据包发送到远方主机需要经过哪些路由器。有时候ping某个远方主机不通是因为某个路由器引起的,则可以通过该命令发现故障。我们可以用此命令验证前面关于“子网掩码影响主机路由”的说法,如果同在一个子网,则不需要经过网关,数据包直接发往该机器,如果是子网以外的机器,则第一步数据包发送给网关,然后由网关转发。如有以下网络拓扑,子网掩码均为255.255.255.0
B网段主机b:192.168.3.4 网关192.168.2.1 A网段主c:192.168.2.5 A网段主机a:192.168.2.4 从a到c只须一步即可,如: #/usr/sbin/traceroute 192.168.2.5 traceroute to c(192.168.2.5),30 hops max,46 byte packets 1 c(166.111.4.5) 0.372 ms 0.153 ms 0.187 ms
从a到b则需要经过网关,如: #/usr/sbin/traceroute 192.168.3.4 traceroute to b(192.168.3.4),30 hops max,46 byte packets 1 192.168.2.1(192.168.2.1) 3.596 ms 0.690 ms 0.947 ms 2 b(192.168.3.4) 2.489 ms * 2.823 ms 如果判断结果为本地网络工作正常,故障存在于本机的话,可以从网线到网卡逐步进行检测,另外要观察网卡信号灯的状态,信号灯的含义一般包括网线是否正常连接(绿灯)和是否有数据传输(红灯),如果信号灯有错,则硬件很可能有问题。一般来说,硬件的错误相对较少,而软件驱动的安装错误会多一些,所以安装系统时要对机器内部安装的硬件比较清楚。引起到本地主机网络故障的原因很多,
笔者的经验也绝对不能一一囊括,以上只是从总体上给出一个判断与解决的顺序,读者则需要从实践中积累经验,并与其他人多交流。笔者的经验也绝对不能一一囊括,以上只是从总体上给出一个判断与解决的顺序,读者则需要从实践中积累经验,并与其他人多交流。 3. netstat命令 为了快速检查网络接口的状态信息,可以使用“netstat-i”命令 如果TX-ERR或RX-ERR数量过大,则往往表示网线有问题,TX-DROP和RX-DROP过大则表示网络负载较重,主机来不及处理,而TX-OVR和RX-OVR则可能因为速率不匹配引起。
另外“netstat-a-n”也可以显示主机的路由表,其作用相当于“route-n”。为了显示所有的TCP和UDP端口状态,包括活动的端口和不活动的等待连接的服务器端口(监听端口)。可以使用“netstat-a”命令。另外“netstat-a-n”也可以显示主机的路由表,其作用相当于“route-n”。为了显示所有的TCP和UDP端口状态,包括活动的端口和不活动的等待连接的服务器端口(监听端口)。可以使用“netstat-a”命令。 netstat命令的另外一个有用处的选项是-t,它只显示所有的激活的TCP连接,从而过滤了所有UNIX domain sockets(本机通信协议)的连接,命令格式如下: # netstat-t 如果要显示所有的活动的和被监听的TCP连接,使用命令: # netstat-vat
13.4 基本网络服务的介绍 Unix/Linux系统自出世以来就是贵族出身,在很大程度上都是用于提供系统服务的,而且也因为它们出色的表现赢得了业界的赞许,尽管Linux现在还不能尽如人意,但是它自由开放的特征吸引了无数优秀的程序员和系统管理人员,正是这些勤劳无私的人们的不懈努力,Linux才得以普及和不断完善。 Linux在Web、DNS、Mail等等网络服务方面都有杰出的表现。它还可以做防火墙、路由器、代理服务器等,而且它还可以作为嵌入式系统应用于IA(信息家电)领域,可以作为VPN网关等。本书后续的教材中将对这些服务的架构、配置等进行详细的分析,在这里就算是抛转引玉,让读者对这些服务有一个基本的了解。
13.4.1 Web服务器 谈起Web服务器,最著名的就是Apache了,它可以说是目前市场上最流行的运行于Linux上的Web服务器,而且在NT上也有了它的身影,不过性能明显不能跟它在Linux上的表现那样让人乐道。 Web服务器是构建于HTTP协议上的应用程序,市场上有很多家的产品,除了Apache,还有如Webmin自带的miniserver等。他们在协议上都是兼容的,但是配置、功能乃至版本更新都是有很大差异的。一般Linux上的Web服务器提供虚拟主机的支持、代理的支持、还有PHP支持,一些外加的软件包还支持Linux上的ASP。正是随着Web服务器功能的不断强大,现在的网站才日趋规模,才能
结合大型数据库进行管理,才有丰富的内容展现给大家。要追踪Web的发展,Linux是一个非常好的平台。结合大型数据库进行管理,才有丰富的内容展现给大家。要追踪Web的发展,Linux是一个非常好的平台。 13.4.2 邮件系统 自Eric Allman在Berkeley完成sendmail的最初版本以来,sendmail受到了业界长久的重视,从1983年的V5版本一直到1993年Eric重新改写的V8版本,都受到了人们的尊重,虽然它复杂的配置工作给管理员带来了不少的麻烦,但人们不得不赞叹它的灵巧。
邮件系统由3部分组成,用户代理(UA)是供用户阅读和编写邮件的,邮件传输代理(MTA)在主机间完成邮件的转发,投递代理(DA)则负责将邮件放入用户的信箱内。邮件系统由3部分组成,用户代理(UA)是供用户阅读和编写邮件的,邮件传输代理(MTA)在主机间完成邮件的转发,投递代理(DA)则负责将邮件放入用户的信箱内。 除了sendmail外,还有一个POP系统。sendmail实际是邮件投递代理,它通过对信件头部信息的改写来控制在不同主机间的路由,而信件到用户信箱的投递工作则由POP服务器来完成。POP服务器还负责对用户进行身份认证以及信箱管理,它通过用户的邮件客户端与用户打交道。现在有许多可选的邮件系统,其中qmail在Linux上就有很好的名声,并且在同一个软件包里提供了对sendmail和POP的支持,读者可以进一步阅读相关资料获得更深入的了解。
13.4.3 域名服务器 当前应用最多的DNS服务器就是Bind版本,当前是Bind8版本。DNS提供了从名字到IP地址的映射关系,这种映射关系不必是一一映射,一个IP可以有多个域名,一个域名也可以对应多个IP。 DNS的诞生主要是为了解决NIS的不足,人们为了方便地记忆和标识主机,就给每个主机一个名字,早期的Internet规模较小,从名字到IP的映射关系通过一个集中的数据库管理,但随着Internet的迅速膨胀,重名的问题没办法解决,于是就诞生了域名系统,它通过分层管理与划分管理区域,保证每一个管理区域内部命名的惟一性,从而保证了整个Internet内主机名的惟一性。域名必须向专门的