UNIX TCP/IP配置与检测

来源:互联网 发布:网络相关知识 编辑:程序博客网 时间:2024/06/06 03:32
 
2.1  Unix TCP/IP配置

       Unix是最早的TCP/IP载体,以致一段时间人们认为TCP/IP和Unix是一回事。现在,几乎所有的Unix系统都内置有TCP/IP协议栈。

 

1)  配置网络接口:

ifconfig interface address netmask address broadcast address [up | down]

 

2)  标准网络配置文件:

/etc/hosts:机器名字和IP地址对应表

IP地址   正式名 别名

166.111.4.11 train www

 

/etc/protocols:定义协议名称与端口

协议名    端口号 协议别名

ip            0     IP

icmp       1     ICMP

tcp          6     TCP

 

/etc/services:网络服务文件,定义服务的端口号和协议。

服务名    端口号/协议 进程名

ftp          21/tcp

smtp       25/tcp     mail

name       42/udp    nameserver

 

/etc/inetd.conf:超级服务器配置文件,超级服务器inetd在倾听端口的请求时,如果接收到一个请求,它就根据inetd.conf中的信息去启动daemon。

service-name socket-type proto wait-status user server-pathname

ftp stream    tcp   nowait     root        /usr/etc/in.ftpd       in.ftpd -1

pop3 stream    tcp   nowait     root        /usr/sbin/popper     popper -s

 

/etc/networks:网络名文件

网络名    网络地址

loopback 127

pxb.cic.tsinghua.edu.cn 166.111.6

 

/etc/netmasks:网络(子网)掩码文件

网络地址(现在必须是真正的A、B、C类地址)   掩码

166.111.0.0     255.255.252.0

 

3)  SUN Solaris网络配置实例

²        /etc/hostname.le0

train

²        /etc/hosts

127.0.0.1       train        localhost loghost

166.111.4.11    train

²        /etc/netmasks

166.111.0.0     255.255.252.0

²        /etc/defaultrouter

166.111.4.1

²        /etc/resolv.conf

domain          pxb.cic.tsinghua.edu.cn

nameserver      127.0.0.1

nameserver      166.111.4.5

nameserver      166.111.8.11

²        /etc/nsswitch.conf

hosts:      files dns

2.2  TCP/IP诊断工具

1)  ping

      ping(Packet InterNet Groper)的意思是网际包探测器。它是一个TCP/IP应用程序,其作用是检测网络中的其它机器是否可到达。ping程序的原理很简单,它向指定机器发送一个ICMP(Internet Control Message Protocol) ECHO-REQUEST的请求包,以期获得一个从对方返回的ICMP ECHO-RESPONSE包。但是,Ping却是应用最为广泛的Internet程序之一,用户在测试、管理网络时,或者检测网络或远程主机时,最先使用的工具可能就是Ping。

       Ping的使用也很简单,指定主机名执行它,如果远程主机相应,则说明远程主机在网络上可达到,否则,说明两者间网络有故障。

       当我们配置好一台计算机的网络后,第一条命令可能就是:

       $ ping localhost

       localhost is alive

这表示网络功能配置好了,但这并不意味着网络就能正常工作了,因为localhost实际对应的是内部回送地址,它并不对应实际的硬件设备,因此当向localhost发送请求时,核心并不把报文发送到网络,而是直接处理。如果网络没有配置好,将有信息:

       $ ping localhost

       no answer from localhost

接下来ping自己的主机名,如ulrra1,如果正确,显示:

       $ ping ulrra1

       ulrra1 is alive

如果不可到达,则需检查接口配置,可用ifconfig检查。如果正常,再ping其它机器,如ncr3550:下面是Ping程序的执行时的显示结果:

/u/jdx>ping ncr3550

PING ncr3550.cic.tsinghua.edu.cn (166.111.4.3): 56 data bytes

64 bytes from 166.111.4.3: icmp_seq=0 ttl=255 time=2 ms

64 bytes from 166.111.4.3: icmp_seq=1 ttl=255 time=2 ms

64 bytes from 166.111.4.3: icmp_seq=2 ttl=255 time=2 ms

64 bytes from 166.111.4.3: icmp_seq=3 ttl=255 time=3 ms

^C

--- ncr3550.cic.tsinghua.edu.cn ping statistics ---

4 packets transmitted, 4 packets received, 0% packet loss

round-trip min/avg/max = 2/2/3 ms

       Ping程序可能提供一些选项,如指定连续包发送间隔时间,另外,它也可能接受指定的包长与数量,如命令:

/u/jdx>ping -i2 ncr3550 120 3

将以每隔2秒发送一个数据长度为120字节的包3个,其显示结果如下:

PING ncr3550.cic.tsinghua.edu.cn (166.111.4.3): 120 data bytes

128 bytes from 166.111.4.3: icmp_seq=0 ttl=255 time=3 ms

128 bytes from 166.111.4.3: icmp_seq=1 ttl=255 time=2 ms

128 bytes from 166.111.4.3: icmp_seq=2 ttl=255 time=3 ms

 

--- ncr3550.cic.tsinghua.edu.cn ping statistics ---

3 packets transmitted, 3 packets received, 0% packet loss

round-trip min/avg/max = 2/2/3 ms

 

2)  arp

       arp是TCP/IP实用程序,它用来获取指定计算机的MAC地址,如:

       $ arp rs6000

rs6000 (166.111.4.5) at 8:0:5a:c7:bd:3d

       另外,使用-a选项可查看本计算机缓冲的所用IP-MAC地址对捆扎。如:

       $ arp -a

Net to Media Table

Device   IP Address               Mask      Flags   Phys Addr

------ -------------------- --------------- ----- ---------------

le0    rs6000               255.255.255.255       08:00:5a:c7:bd:3d

le0    router.cic.tsinghua.edu.cn 255.255.255.255       08:00:02:0a:94:27

le0    sys2.cic.tsinghua.edu.cn 255.255.255.255       00:aa:00:b8:ed:3c

le0    ibmpc16.cic.tsinghua.edu.cn 255.255.255.255       00:aa:00:b8:49:59

le0    ibmpc14.cic.tsinghua.edu.cn 255.255.255.255       10:00:5a:ba:41:4f

le0    astpc129.cic.tsinghua.edu.cn 255.255.255.255       00:a0:24:19:ae:a9

       使用-d选项可删除本计算机缓冲的所用IP-MAC地址对捆扎

       $ arp -d hostname

      使用-s选项可设置本计算机缓冲的所用IP-MAC地址对捆扎

      $ arp -s ether hostname ether_addr [temp] [pub]

3)  ifconfig

       ifconfig是TCP/IP实用程序,它用来配置网络接口,为接口分配一个IP地址,或者定义网络子网掩码和广播地址,并可关闭或打开网络接口。请常见用法为:

ifconfig interface address netmask address broadcast address [up | down]

如:

       ifconfig le0 166.111.4.11 netmask 255.255.252.0 broadcast 166.111.7.255 up

如果要查看某个接口的当前配置,可用ifconfig后跟参数接口名称,如:

       $ ifconfig le0

le0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500

        inet 166.111.4.11 netmask fffffc00 broadcast 166.111.7.255

4)  netstat

       netstat是一个用来显示工作站网络接口统计量的实用程序。它显示的信息与命令选项有关,下面介绍几个常用选项。

       要得到计算机每个网络接口的一行摘要信息,可以使用-i选项,格式如下:

       $ netstat -i

Name  Mtu  Net/Dest    Address       Ipkts  Ierrs Opkts  Oerrs Collis Queue

lo0   8232 loopback    localhost      82     0     82     0     0      0

le0   1500 tunet.tsinghua.edu.cn ulrra1         7497   0     371    1     0

如果Queue不为零,则不能发送报文,这是网络线路有问题的症状。Ierrs和Oerrs不必一定为零,但必须很低,大于100,就表示有问题,比如网络太拥挤。

       要获得本计算机的路由信息,可以使用-rn选项,如下所示:

       $ netstat -rn

Routing Table:

  Destination           Gateway           Flags  Ref   Use   Interface

-------------------- -------------------- ----- ----- ------ ---------

127.0.0.1            127.0.0.1             UH       0      4  lo0

166.111.4.0          166.111.4.11          U        3     10  le0

224.0.0.0            166.111.4.11          U        3      0  le0

default              166.111.4.1           UG       0     12

       要获得详细的有关计算机网络通信的信息,可以使用-s选项:

       $ netstat -s

UDP

        udpInDatagrams      =    12     udpInErrors         =     0

        udpOutDatagrams     =    20

 

TCP     tcpRtoAlgorithm     =     4     tcpRtoMin           =   200

IP      ipForwarding        =     2     ipDefaultTTL        =   255

        ipInReceives        =   113     ipInHdrErrors       =     0

        ipInAddrErrors      =     0     ipInCksumErrs       =     0

ICMP    icmpInMsgs          =     4     icmpInErrors        =     0

        icmpInCksumErrs     =     0     icmpInUnknowns      =     0

5)  route

usage: route [-n] [-f] [ cmd [ net | host ] args ]

 

       route cmd dst-addr gateway hop

       分配静态路由

route add 166.111.4.0 166.111.4.11 1

配置默认路由

route add default 166.111.4.1 1

6)  nslookup

       nslookup是一个从域名服务器中查询域名信息的Internet工具,许多TCP/IP软件包中都包含该程序。最通常的一个用法是由机器的IP地址获取其主机名,或者相反。如果用户所在的系统不能解析Internet上某些机器的名字,使用nslookup将有助于查找错误。

       nslookup的语法为:

nslookup  [ -Option ... ]  [ Host ]  [ -NameServer ]

其中,Option表示查询选项,用来设置查询信息的类型、查询方式、缺省域名、超时间隔等;Host表示待查主机的IP地址或主机名;NameServer表示要从哪个域名服务器上进行查找。Host和NameServer称为nslookup命令的参数。

       使用nslookup有两种方式:交互方式和非交互方式。当nslookup后没有参数,或者第一个参数为一个“-”,第二个参数为域名服务器的主机名或IP地址时,进入交互方式;否则进入非交互方式。交互方式给用户以更多的自由度,可以查询机器的各种信息,或者列出属于某个域的所有主机;而非交互方式只能从缺省域名服务器中查询给定主机的名字或IP地址。使用exit子命令或Ctrl-d组合键可以退出交互会话。

       上面的语法和下面的例子是在Unix操作系统中的情况。不同的操作系统下该命令的具体使用方法或支持的子命令可能会有所区别,甚至完成同样功能的命令名也可能不叫nslookup。在交互会话中,随时可以使用Ctrl-C键终止相应子命令的执行。

    例1:

% nslookup  hpc.sp.net.edu.cn

Server:  cw.sp.net.edu.cn

Address:  202.112.32.254

 

Name:    hpc.sp.net.edu.cn

Address:  202.112.32.3

%

命令行中hpc.sp.net.edu.cn是用户登录到CERNET高性能计算中心的大型机时使用的主机名。该命令显示缺省的域名服务器和给定主机的IP地址后退出。

 

    例2:

% nslookup

Default Server:  cw.sp.net.edu.cn

Address:  202.112.32.254

 

> hpc.sp.net.edu.cn

Server:  cw.sp.net.edu.cn

Address:  202.112.32.254

 

Name:    hpc.sp.net.edu.cn

Address:  202.112.32.3

 

> help

Commands:      (identifiers are shown in uppercase, [] means optional)

NAME          - print info about the host/domain NAME using default server

NAME1 NAME2  - as above, but use NAME2 as server

help or ?         - print info on common commands; see nslookup(1) for details

set OPTION         - set an option

    all             - print options, current server and host

    [no]debug       - print debugging information

    [no]d2          - print exhaustive debugging information

    [no]defname     - append domain name to each query

    [no]recurse      - ask for recursive answer to query

    [no]vc          - always use a virtual circuit

    domain=NAME   - set default domain name to NAME

    srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.

    root=NAME      - set root server to NAME

    retry=X          - set number of retries to X

    timeout=X        - set initial time-out interval to X seconds

        querytype=X                  - set query type, e.g., A, ANY, CNAME, HINFO, MX, NS, PTR, SOA, WKS

    type=X           - synonym for querytype

    class=X           - set query class to one of IN (Internet), CHAOS, HESIOD or ANY

server NAME          - set default server to NAME, using current default server

lserver NAME          - set default server to NAME, using initial server

finger [USER]          - finger the optional USER at the current default host

root                  - set current default server to the root

ls [-t TYPE]            - list records of the given type (e.g., A, CNAME, MX)

view FILE             - sort an 'ls' output file and view it with more

 

> set all

Default Server:  cw.sp.net.edu.cn

Address:  202.112.32.254

 

Set options:

   nodebug   defname   search   recurse   nod2   novc  noignorec
 query=HINFO     class=IN        timeout=5       retry=4

 root=ns.nic.ddn.mil.

   domain=sp.net.edu.cn    srchlist=sp.net.edu.cn/net.edu.cn/edu.cn

 

> set type=ANY

> www.mhpcc.edu

Server:  cw.sp.net.edu.cn

Address:  202.112.32.254

 

Non-authoritative answer:

www.mhpcc.edu   canonical name = wailea.mhpcc.edu

 

Authoritative answers can be found from:

MHPCC.EDU       nameserver = MAUI.MHPCC.edu

MHPCC.EDU       nameserver = NIS.ANS.NET

MHPCC.EDU       nameserver = NS.ANS.NET

MAUI.MHPCC.edu  inet address = 164.122.7.32

NIS.ANS.NET     inet address = 147.225.1.2

NS.ANS.NET      inet address = 192.103.63.100

 

> server 202.112.0.34

Default Server:  ns1.net.edu.cn

Address:  202.112.0.34

 

> sp.net.edu.cn

Server:  ns1.net.edu.cn

Address:  202.112.0.34

 

Non-authoritative answer:

sp.net.edu.cn   nameserver = CWS.sp.net.edu.cn

sp.net.edu.cn   canonical name = cw.sp.net.edu.cn

 

Authoritative answers can be found from:

sp.net.edu.cn   nameserver = CWS.sp.net.edu.cn

CWS.sp.net.edu.cn       inet address = 202.112.32.254

 

> exit

%

 

例2中使用不带参数的nslookup命令进入交互方式。首先显示出的是缺省域名服务器cw.sp.net.edu.cn,当前域为sp.net.edu.cn。然后我们仍旧输入hpc.sp.net.edu.cn,nslookup将返回它的IP地址。使用help或?子命令可以获取帮助信息。set all子命令可以列出当前所有选项的设置情况,可以看出query(也称为querytype或type)的值为HINFO,例中使用set type=ANY子命令将该选项的值改为ANY,表示查询某主机的所有信息,包括IP地址、主机名、域名服务器、域名、Mail Exchanger、SOA记录等。接着我们在该状态下查询美国MAUI的某个主机www.mhpcc.edu,由于当前缺省域名服务器cw.sp.net.edu.cn上并不直接包含www.mhpcc.edu信息,因而返回的是Non-authoritative 答案,同时列出了包含www.mhpcc.edu权威信息的所有域名服务器。最后我们将缺省域名服务器改为CERNET的最高域名服务器202.112.0.34,并查询sp.net.edu.cn域的信息后退出nslookup会话。

7)  traceroute

       traceroute是一个通用的TCP/IP工具,它能显示出数据包从本地机到达目标机时经过的所有路由器。由于traceroute会人为地给网络造成一些通信负担,所有它主要被系统或网络管理员,作为一个简单而有效的网络手工查错工具使用,普通用户最好少用。尽管如此,traceroute对于用户了解Internet的结构,了解自身的网络故障会有很大帮助。

       下面给出的语法和例子都是在Unix操作系统下的情况,在其它操作系统中,该命令可能有不同的使用方法或表示,例如在Windows NT和Windows 95下,类似的命令叫tracert。

       traceroute的语法为:

traceroute  [-m Max_ttl]  [-n ]  [-p Port]  [-q Nqueries]  [-r]  [-s SRC_Addr]
[-t TypeOfService]  [-v]  [-w WaitTime]  Host  [PacketSize]

       其中,

-m Max_ttl:指定最大生存期(Maximum Time-to-live)。也就是数据包从本地机到达目标机所经过的最大跳步(hop),即最多经过这么多路由器。缺省值为30步。

-n:只显示途径路由器的IP地址,不再显示其名字。

-p:指定包传输时使用的UDP端口号。

-q:指定每次跳步发送的探询包的数目,缺省值为3。

-v:列出详细信息。

-w WaitTime:指定每次跳步等待接收响应包的最长时间,缺省值为3秒。

Host:目标机的IP地址或机器名。

PacketSize:指定每个跳步传输的数据包的大小,缺省值为38个字节。

 

       traceroute实际上是通过给目标机的一个非法UDP端口号发送一系列UDP数据包来工作的。使用缺省设置时,本地机给每个路由器发送3个数据包,最多可经过30个路由器。如果已经经过了30个路由器,但还未到达目标机,那么traceroute将终止。每个数据包都对应一个Max_ttl值,同一跳步的数据包该值一样,不同跳步的数据包的值从1开始,每经过一个跳步值加1。当本地机发出的数据包到达路由器时,路由器就响应一个ICMP Time Exceed消息,于是traceroute就显示出当前跳步数,路由器的IP地址或名字,3个数据包分别对应的周转时间(以ms为单位)。如果本地机在WaitTime内未收到响应包,那么在数据包的周转时间栏就显示出一个星号。当一个跳步结束时,本地机根据当前路由器的路由信息,给下一个路由器又发出3个数据包,周而复始,直到收到一个ICMP  PORT_UNREACHABLE的消息,意味着已到达目标机,或者已达到指定的最大跳步数。

% traceroute www.cnc.ac.cn

traceroute to www.cnc.ac.cn (159.226.1.17), 30 hops max, 40 byte packets

 1  router1.sp.net.edu.cn (202.112.35.254)  2 ms  2 ms  2 ms

 2  202.112.1.210 (202.112.1.210)  4 ms  2 ms  2 ms

 3  202.38.96.1 (202.38.96.1)  3 ms  2 ms  2 ms

 4  159.226.1.17 (159.226.1.17)  3 ms  2 ms  2 ms

例中www.cnc.ac.cn是中科院的WWW服务器,本地机是CERNET高性能计算中心SP2的一个节点机。首先从SP2连到CERNET的HUB(202.112.35.254)出去,然后经过CERNET和CASnet的路由器到达目标服务器。可以看到,数据包的平均周转时间为2ms,这是相当快的速度了。

% traceroute www.mhpcc.edu

traceroute to wailea.mhpcc.edu (164.122.9.37), 30 hops max, 40 byte packets

 1  router1.sp.net.edu.cn (202.112.35.254)  2 ms  2 ms  2 ms

 2  202.112.1.198 (202.112.1.198)  7 ms  11 ms  4 ms

 3  us-igw.net.edu.cn (202.112.1.206)  45 ms  54 ms *

 4  gsl-stock-3-Serial10/4.gsl.net (204.59.160.245)  554 ms  552 ms  575 ms

 5  gsl-sl-stock-fddi.gsl.net (204.59.128.198)  559 ms  553 ms  551 ms

 6  sl-mae-w-H3/0-T3.sprintlink.net (144.228.10.110)  562 ms  557 ms  564 ms

 7  mae-west.dren.net (198.32.136.81)  571 ms  622 ms  587 ms

 8  wahiawa-nctams.dren.net (138.18.232.2)  677 ms  617 ms  621 ms

 9  maui.dren.net (138.18.236.1)  611 ms  649 ms  629 ms

10  bcn77-f11-7.mhpcc.edu (164.122.7.7)  613 ms  608 ms  610 ms

11  wailea.mhpcc.edu (164.122.9.37)  622 ms  617 ms *

       要到达MHPCC的WWW服务器,在第3跳步到达CERNET通往美国的路由器,然后经过Sprint公司的其它路由器在第8跳步到达Hawaii,最后经过Maui的路由器到达目标节点。可以看出,从本地机发往国内几个路由器的周转时间为几十ms,到达美国后猛增到500多ms。