Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1223213
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: LINUX

2010-04-05 10:05:26

一些网络侦错指令
    在网络的世界中,最常听到的一句话就是:『高手求救!我的 Linux 不能上网络!』我的天吶!不能上网络的原因多的很!而要完全搞懂也不是一件简单的事情呢!而很多的网络侦测指令其实在 Linux 里头已经都预设存在了,只要您好好的学一学基本的侦测指令,那么一些朋友在告诉您如何侦错的时候,您应该就立刻可以知道如何来搞定他啰!好了,底下我们就简单的来谈一谈几个很基本的网络常用的侦错指令啦!要好好学习呦!
     
      ping       :送一个 ICMP 的封包给某部主机
      traceroute :调查连接到某部主机时,每个节点的联机速度
       
      底下分别来谈一谈先!
       
      ping
      传送一个 ICMP 封包给某部主机
      语法
      [size=-1][test@test test]# ping [-b broadcast]
      [size=-1][test@test test]# ping [-c number] host
      [size=-1]参数说明:
      [size=-1]-b broadcast :当要 ping 一个网段时,可以使用这个方式来『广播』!
      [size=-1]-c number    :后面加上 number (数字)可以限制 ping 几次!
      [size=-1]范例:
      [size=-1][test@test test]# ping -c 5 tw.yahoo.com <==除了IP也可以 ping domain name
      [size=-1]PING tw.yahoo.com (202.1.237.21) from 61.28.113.1 : 56(84) bytes of data.
      [size=-1]64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=0 ttl=245 time=7.133 msec
      [size=-1]64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=1 ttl=245 time=7.497 msec
      [size=-1]64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=2 ttl=245 time=6.625 msec
      [size=-1]64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=3 ttl=245 time=6.457 msec
      [size=-1]64 bytes from tw.yahoo.com (202.1.237.21): icmp_seq=4 ttl=245 time=6.434 msec
      [size=-1] 
      [size=-1]--- tw.yahoo.com ping statistics ---
      [size=-1]5 packets transmitted, 5 packets received, 0% packet loss
      [size=-1]round-trip min/avg/max/mdev = 6.434/6.829/7.497/0.421 ms
      [size=-1] 
      [size=-1][test@test test]# ping -b 192.168.1.255 -c 2 <==这里必须是广播地址
      [size=-1]WARNING: pinging broadcast address
      [size=-1]PING 192.168.1.255 (192.168.1.255) from 192.168.1.254 : 56(84) bytes of data.
      [size=-1]64 bytes from 192.168.1.36: icmp_seq=0 ttl=255 time=191 usec
      [size=-1]64 bytes from 192.168.1.45: icmp_seq=0 ttl=255 time=492 usec (DUP!)
      [size=-1]64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=531 usec (DUP!)
      [size=-1] 
      [size=-1]--- 140.116.44.255 ping statistics ---
      [size=-1]2 packets transmitted, 2 packets received, +6 duplicates, 0% packet loss
      [size=-1]round-trip min/avg/max/mdev = 0.134/0.811/2.094/0.647 ms
      说明:
      这个东西好用的很!不论在哪一个操作系统当中,他都是相当有用的网络侦错指令!例如您要侦测一下您的网络卡是否正确的备执行了,可以使用『ping your.NIC.IP.address 』来查阅!当然啰!加上次数更好:『ping -c 5 your.NIC.IP.address 』!无论如何,这个指令一定要记得的啦!
       
      • icmp:指的是 这个协定啰!
      • ttl:指的是 time to live 啦!当经过一个节点, ttl 就会减少一!而预设有 255 个!以上面为例,我的 Linux 主机连接到 tw.yahoo.com 共经过 10 个 gateway ,所以 ttl 剩下 245 !
         
        traceroute
        调查连接到某部主机时,每个节点的联机速度
        语法
        [size=-1][root@test root]# traceroute [-i interface] [-g gateway] [host|IP]
        [size=-1]参数说明:
        [size=-1]-i :使用这个 interface 来连出去!例如 eth0, ppp0 等!
        [size=-1]-g :使用这个 gateway 来连出去!例如 192.168.1.2, 140.116.141.29 等!
        [size=-1]范例:
        [size=-1][root@test root]# traceroute tw.yahoo.com
        [size=-1]traceroute to tw.yahoo.com (202.1.237.21), 30 hops max, 38 byte packets
        [size=-1] 1  140.116.141.253 (140.116.141.253)  123.958 ms  96.357 ms  97.810 ms
        [size=-1] 2  140.116.140.253 (140.116.140.253)  103.548 ms  87.607 ms  78.227 ms
        [size=-1] 3  163.28.112.253 (163.28.112.253)  99.522 ms  84.379 ms  79.858 ms
        [size=-1] 4  210.242.251.246 (210.242.251.246)  104.429 ms  86.622 ms  79.857 ms
        [size=-1] 5  211.22.226.50 (211.22.226.50)  97.897 ms  86.031 ms  87.177 ms
        [size=-1] 6  TaiPei-TANET-P1.BR.HiNet.NET (168.95.207.242)  101.981 ms  58.149 ms  60.231 ms
        [size=-1] 7  168.95.17.162 (168.95.17.162)  69.198 ms  63.294 ms  58.594 ms
        [size=-1] 8  210.65.200.10 (210.65.200.10)  65.950 ms  67.336 ms  63.503 ms
        [size=-1] 9  211.22.35.169 (211.22.35.169)  67.572 ms  92.535 ms  83.105 ms
        [size=-1]10  211.22.41.89 (211.22.41.89)  106.855 ms  92.540 ms  87.201 ms
        [size=-1]11  alteon6.tpe.yahoo.com (202.1.237.253)  122.347 ms  92.235 ms  91.266 ms
        说明:
        这个指令相当的有用途,他可以用来判断当一部远程主机无法联机时候,到底封包是停顿在哪一个节点上!因为很多时候,您常常会发现『咦!网络速度怎么变慢了?』然后自己的主机似乎没有问题呀!这个时候就可以使用这个指令查检查一下,是否在联机的过程当中,有些节点被挡下来了呢?!很好用的啦!不过,万一如果出现了 *** 在 traceroute 的输出结果中,那就表示该 router 应该有点问题吶!得赶紧向上头报告去维修喔!
        [size=+1]网络观察与查询
          在我们主机上面,您可晓得目前有多少联机被建立了?而您的主机名称是否能够在 Internet 上面被查询到呢?这些都需要动用到某些网络观察的指令。我们底下就谈一谈几个简单的观察指令:
           
            netstat    :查阅网络信息的指令
            host       :显示主机名称( domain name )
            nslookup   :调查主机名称对应的 IP !
             
            netstat
            查阅网络信息的指令
            语法
            [size=-1][root@test root]# netstat [-r] [-i interface]
            [size=-1][root@test root]# netstat [-antulp]
            [size=-1]参数说明:
            [size=-1]-r  :显示出 route 的意思;
            [size=-1]-i  :显示出 interface 的内容,跟 ifconfig 类似啦!
            [size=-1]-a  :显示出目前所有的网络联机状态!
            [size=-1]-n  :预设情况中,显示出的 host 会以 host name 来显现,若为 n 则可以使 port 与 host 都以数字显示
            [size=-1]-t  :仅显示 tcp 封包的联机行为
            [size=-1]-u  :仅显示 udp 的封包联机状态
            [size=-1]-l  :仅显示 LISTEN 的内容
            [size=-1]-p  :同时显示此一联机的 PID 喔!(注意:只有 root 才能行使此功能!)
            [size=-1]范例:
            [size=-1][root@test root]# netstat -r
            [size=-1]# 嘿嘿!显示出目前的路由表!与 指令的功能相同。
            [size=-1]Kernel IP routing table
            [size=-1]Destination     Gateway         Genmask         Flags MSS Window irtt Iface
            [size=-1]140.116.141.253 *               255.255.255.255 UH     40 0         0 ppp0
            [size=-1]192.168.1.0     *               255.255.255.0   U      40 0         0 eth0
            [size=-1]192.168.0.0     *               255.255.255.0   U      40 0         0 eth0
            [size=-1]127.0.0.0       *               255.0.0.0       U      40 0         0 lo
            [size=-1]default         140.116.141.253 0.0.0.0         UG     40 0         0 ppp0
            [size=-1] 
            [size=-1][root@test root]# netstat -i eth0
            [size=-1]# 看看底下显示出的内容,是否跟 ifconfig eth0 类似呀!?
            [size=-1]Kernel Interface table
            [size=-1]Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
            [size=-1]eth0   1500   077199373      0      0      169616342      0      0      0 BMRU
            [size=-1]lo    16436   0 1130485      0      0      0 1130485      0      0      0 LRU
            [size=-1] 
            [size=-1][root@test root]# netstat -an<==显示所有的联机状态,并且以数字型态显示
            [size=-1][root@test root]# netstat -tul <==显示 LISTEN 的及 tcp 与 udp 的联机状态,如下:
            [size=-1]Active Internet connections (only servers)
            [size=-1]Proto Recv-Q Send-Q Local Address           Foreign Address         State
            [size=-1]tcp        0      0 *:mysql                 *:*                     LISTEN
            [size=-1]tcp        0      0 *:netbios-ssn           *:*                     LISTEN
            [size=-1]tcp        0      0 *:pop3                  *:*                     LISTEN
            [size=-1]tcp        0      0 *:http                  *:*                     LISTEN
            [size=-1]tcp        0      0 *:ftp                   *:*                     LISTEN
            [size=-1]tcp        0      0 *:ssh                   *:*                     LISTEN
            [size=-1]tcp        0      0 *:smtp                  *:*                     LISTEN
            [size=-1]udp        0      0 *:netbios-ns            *:*
            [size=-1]注意:上面的 LISTEN 表示该 port 是已经在 监听 网络服务啦!而左边的 tcp 指的是 tcp 封包!
            [size=-1] 
            [size=-1][root@test root]# netstat -anp | more <==这个指令很常下达!请记得呦!
            说明:
            netstat 可是很了不起的指令,一定要学会的!尤其他可以让我们了解目前的您的主机的联机状态!与开启的 port 有哪些!所以一定得学会才行呀!如果您分别下达:
             
            • netstat -a  | more
            • netstat -an | more
               
              一定会发现有点奇怪?怎么有的 port 会以服务名称(例如上面例子里的 pop3 ...)有的会以 port 号码来显示呢!?嘿嘿!那就是 /etc/services 以及 -n 这个参数的用途啦!您可以发现的是,如果 netstat -a 时,显示出来的 port 号码在 /etc/services 存在对应的服务名称的时候,那么预设他就会显示出该服务名称啦!但是若在 /etc/services 找不到档案的话,那么自然就还是以 port 号码来显示的!那么加上了 -n 参数后,不论如何,他都会以 port 及 IP 来显示啦!
               
              另外,那个 -p 也很有用呦!尤其是在一些莫名其妙的联机出现时,可以用 -p 这个参数查到 PID ,然后再以利用 来杀掉他呦!
               
              • Proto:指的是封包或者是通讯协议啦! tcp , udp 是常见的呦!
              • Local Address:本地端的 IP 与 Port 号,如果 /etc/services 存在对应服务名称,就以服务名称显示;
              • Foreign Address :监听哪一个地区与 port ;
              • state:状态列就很多啦!基本的有:
                • LISTEN :亦即监听状态中的 port !
                • ESTABLISHED:已建立联机的联机情况
                • TIME_WAIT:该联机在目前已经是等待的状态了!随时有可能会断线呦!
                   
                  善用 netstat 可以查得相当多的网络信息!尤其在关闭本机的 port 时!
                   
                  host
                  显示主机名称( domain name )
                  语法
                  [size=-1][root@test root]# host [-a] domain_name
                  [size=-1]参数说明:
                  [size=-1]-a :显示出所有的信息
                  [size=-1]范例:
                  [size=-1][root@test root]# host tw.yahoo.com  <==仅显示出主机的 IP
                  [size=-1]tw.yahoo.com. has address 202.1.237.21
                  [size=-1] 
                  [size=-1][root@test root]# host -a tw.yahoo.com <==所有的主机信息显示!
                  [size=-1]Trying "tw.yahoo.com."
                  [size=-1];; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59138
                  [size=-1];; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5 [size=-1];; QUESTION SECTION:
                  [size=-1];tw.yahoo.com.                  IN      ANY
                  [size=-1];; ANSWER SECTION:
                  [size=-1]tw.yahoo.com.           370     IN      A       202.1.237.21
                  [size=-1];; AUTHORITY SECTION:
                  [size=-1]yahoo.com.              213     IN      NS      NS1.yahoo.com.
                  [size=-1]yahoo.com.              213     IN      NS      NS2.yahoo.com.
                  [size=-1]yahoo.com.              213     IN      NS      NS3.yahoo.com.
                  [size=-1]yahoo.com.              213     IN      NS      NS4.yahoo.com.
                  [size=-1]yahoo.com.              213     IN      NS      NS5.yahoo.com.
                  [size=-1];; ADDITIONAL SECTION:
                  [size=-1]NS1.yahoo.com.          88153   IN      A       66.218.71.63
                  [size=-1]NS2.yahoo.com.          42259   IN      A       209.132.1.28
                  [size=-1]NS3.yahoo.com.          51730   IN      A       217.12.4.104
                  [size=-1]NS4.yahoo.com.          38291   IN      A       63.250.206.138
                  [size=-1]NS5.yahoo.com.          67985   IN      A       64.58.77.85
                  [size=-1]Received 216 bytes from 163.28.112.1#53 in 10 ms
                  说明:
                  这个功能跟 nslookup 几乎是相同的!但是 nslookup 多了较多的功能就是了!我们使用这个指令时,系统会自动去找 底下设定的 DNS 的 IP,然后根据该 IP 来侦测我们所想要知道的主机对应的 IP 咯!那么多了 -a 之后显示出来的讯息是什么?嘿嘿!别担心,在我们后续的 当中就会提到啦!有点耐心的往下看呦!
                   
                  nslookup
                  查询主机名称与 IP 的对应
                  语法
                  [size=-1][root@test root]# nslookup [domain_name|IP]
                  [size=-1]参数说明:
                  [size=-1]范例:
                  [size=-1][root@test root]# nslookup tw.yahoo.com <==由  domain name 查询 IP!
                  [size=-1]Note:  nslookup is deprecated and may be removed from future releases.
                  [size=-1]Consider using the `dig' or `host' programs instead.  Run nslookup with
                  [size=-1]the `-sil[ent]' option to prevent this message from appearing.
                  [size=-1]Server:         163.28.112.1
                  [size=-1]Address:        163.28.112.1#53 [size=-1]Non-authoritative answer:
                  [size=-1]Name:   tw.yahoo.com
                  [size=-1]Address: 202.1.237.21
                  [size=-1][root@test root]# nslookup 202.1.237.21 <==由 IP 查询 domain name
                  [size=-1]Note:  nslookup is deprecated and may be removed from future releases.
                  [size=-1]Consider using the `dig' or `host' programs instead.  Run nslookup with
                  [size=-1]the `-sil[ent]' option to prevent this message from appearing.
                  [size=-1]Server:         163.28.112.1
                  [size=-1]Address:        163.28.112.1#53
                  [size=-1]Non-authoritative answer:
                  [size=-1]21.237.1.202.in-addr.arpa       name = tw.yahoo.com.
                  [size=-1]Authoritative answers can be found from:
                  [size=-1]237.1.202.in-addr.arpa  nameserver = ns1.yahoo.com.
                  [size=-1]237.1.202.in-addr.arpa  nameserver = ns2.yahoo.com.
                  [size=-1]237.1.202.in-addr.arpa  nameserver = ns3.yahoo.com.
                  [size=-1]237.1.202.in-addr.arpa  nameserver = ns4.yahoo.com.
                  [size=-1]237.1.202.in-addr.arpa  nameserver = ns5.yahoo.com.
                  [size=-1]ns1.yahoo.com   internet address = 66.218.71.63
                  [size=-1]ns2.yahoo.com   internet address = 209.132.1.28
                  [size=-1]ns3.yahoo.com   internet address = 217.12.4.104
                  [size=-1]ns4.yahoo.com   internet address = 63.250.206.138
                  [size=-1]ns5.yahoo.com   internet address = 64.58.77.85
                  说明:
                  这个指令就如同前面的 提到的,就是正查反查的的指令啦!也是利用 /etc/resolv.conf 的内容来查询的!详细的说明请参考 一节喔!
                  [size=+1]远程联机使用指令: , , ,
                    用来作为远程联机操控自己主机的方法是什么呢?呵呵!简单,就是利用 telnet 啰!当然啦!这并不是很安全的方式,我们未来在后头提到的时候,会再跟大家报告 ssh 及 sftp 的用法啰!另外, telnet 用来连上 BBS 也是挺好用的哩!呵呵!那么远程传送 DATA 自然就是使用 ftp 啰!而由于目前很多的匿名网站耶,每次都要输入 anonymous 真的很烦!那么就使用 ncftp 吧!很简单使用呦!
                     
                    • telnet :用来联机远程主机,当然, BBS 主机也可以联机
                    • ftp    :远程传送数据当中,速度最快的协议之一
                    • ncftp  :登入匿名主机最好用的文字接口 FTP 软件!
                       
                      底下我们就谈一谈怎么样来用这些指令吧!
                       
                      telnet
                      用来联机远程主机,当然, BBS 主机也可以联机
                      语法
                      [size=-1][root@test root]# telnet [-8] [host|IP] [port]
                      [size=-1]参数说明:
                      [size=-1]-8  :可以减少乱码的情况
                      [size=-1]port:服务的埠口!例如 POP3 的 110 ,SMTP 的 25 port 等等!telnet 可以用来侦测!
                      [size=-1]范例:
                      [size=-1][root@test root]# telnet -8 bbs.sayya.org
                      [size=-1]bbs.sayya.org ? SayYA Linux 信息站 ? 140.113.22.98
                      [size=-1]欢迎光临【 SayYA 信息站 】目前在线人数 [41] 人 [size=-1]                    【  SayYa Linux's BBS 站台  】
                      [size=-1]          一个以 Linux 消息、知识、互动服务之专业 BBS 站
                        
                      [size=-1]参观用账号:guest,申请新账号:new
                      [size=-1]请输入代号:guest
                      [size=-1]# 这个是台湾最有名气的专业 Linux BBS 站,有空多来瞧一瞧!
                      [size=-1] 
                      [size=-1][root@test root]# telnet localhost 110
                      [size=-1]# 侦测本机端的 110 这个 port 是否有启动
                      [size=-1]Trying 127.0.0.1...
                      [size=-1]telnet: connect to address 127.0.0.1: Connection refused
                      [size=-1]上面是没有开启 port 110 的情况!所以显示联机不成功! refused
                      [size=-1][root@test root]# telnet localhost 110
                      [size=-1]Trying 127.0.0.1...
                      [size=-1]Connected to 127.0.0.1.
                      [size=-1]Escape character is '^]'.
                      [size=-1]+OK POP3 test v2000.70rh server ready
                      [size=-1]quit<==这里输入离开的指令为 quit 呦!
                      [size=-1]+OK Sayonara <==哈哈!还告诉您日本话『纱呦那哪』
                      [size=-1]Connection closed by foreign host.
                      说明:
                      除了联机到主机以进行远程操控之外, telnet 最好用的地方就是在于:
                       
                      • 帮助您连接上去 BBS 查询数据;
                      • 帮助您测试主机端某个 端口口 的联机情况!
                         
                        以上面的例子来说,我们使用 telnet 就可以立刻连上 SayYa 这个专门探讨 Linux 的 BBS 站台的欢迎画面!嘿嘿!很棒吧!另外,如果您要确认本机端的 110 这个埠口是否正常时,也可以使用『 telnet + IP + port 』来侦测看看呦!很好用的工具吧! ^_^!不过,不幸的是,如果您在 Linux 终端机接口下,应该是看不到中文的啦!怎么办?!没关系,我们可以加上安装 这个中文套件来显示喔!这个在本章节后面继续说明咯。
                        阅读(796) | 评论(0) | 转发(0) |
                        给主人留下些什么吧!~~