- 在网络的世界中,最常听到的一句话就是:『高手求救!我的 Linux 不能上网络!』我的天吶!不能上网络的原因多的很!而要完全搞懂也不是一件简单的事情呢!而很多的网络侦测指令其实在 Linux 里头已经都预设存在了,只要您好好的学一学基本的侦测指令,那么一些朋友在告诉您如何侦错的时候,您应该就立刻可以知道如何来搞定他啰!好了,底下我们就简单的来谈一谈几个很基本的网络常用的侦错指令啦!要好好学习呦!
- icmp:指的是 这个协定啰!
- ttl:指的是 time to live 啦!当经过一个节点, ttl 就会减少一!而预设有 255 个!以上面为例,我的 Linux 主机连接到 tw.yahoo.com 共经过 10 个 gateway ,所以 ttl 剩下 245 !
- 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 』!无论如何,这个指令一定要记得的啦!
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 应该有点问题吶!得赶紧向上头报告去维修喔!
- 在我们主机上面,您可晓得目前有多少联机被建立了?而您的主机名称是否能够在 Internet 上面被查询到呢?这些都需要动用到某些网络观察的指令。我们底下就谈一谈几个简单的观察指令:
- netstat -a | more
- netstat -an | more
- Proto:指的是封包或者是通讯协议啦! tcp , udp 是常见的呦!
- Local Address:本地端的 IP 与 Port 号,如果 /etc/services 存在对应服务名称,就以服务名称显示;
- Foreign Address :监听哪一个地区与 port ;
- state:状态列就很多啦!基本的有:
- LISTEN :亦即监听状态中的 port !
- ESTABLISHED:已建立联机的联机情况
- TIME_WAIT:该联机在目前已经是等待的状态了!随时有可能会断线呦!
- 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 有哪些!所以一定得学会才行呀!如果您分别下达:
一定会发现有点奇怪?怎么有的 port 会以服务名称(例如上面例子里的 pop3 ...)有的会以 port 号码来显示呢!?嘿嘿!那就是 /etc/services 以及 -n 这个参数的用途啦!您可以发现的是,如果 netstat -a 时,显示出来的 port 号码在 /etc/services 存在对应的服务名称的时候,那么预设他就会显示出该服务名称啦!但是若在 /etc/services 找不到档案的话,那么自然就还是以 port 号码来显示的!那么加上了 -n 参数后,不论如何,他都会以 port 及 IP 来显示啦!
另外,那个 -p 也很有用呦!尤其是在一些莫名其妙的联机出现时,可以用 -p 这个参数查到 PID ,然后再以利用 来杀掉他呦!
善用 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 的内容来查询的!详细的说明请参考 一节喔!
- 用来作为远程联机操控自己主机的方法是什么呢?呵呵!简单,就是利用 telnet 啰!当然啦!这并不是很安全的方式,我们未来在后头提到的时候,会再跟大家报告 ssh 及 sftp 的用法啰!另外, telnet 用来连上 BBS 也是挺好用的哩!呵呵!那么远程传送 DATA 自然就是使用 ftp 啰!而由于目前很多的匿名网站耶,每次都要输入 anonymous 真的很烦!那么就使用 ncftp 吧!很简单使用呦!
- telnet :用来联机远程主机,当然, BBS 主机也可以联机
- ftp :远程传送数据当中,速度最快的协议之一
- ncftp :登入匿名主机最好用的文字接口 FTP 软件!
- 帮助您连接上去 BBS 查询数据;
- 帮助您测试主机端某个 端口口 的联机情况!
底下我们就谈一谈怎么样来用这些指令吧!
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 最好用的地方就是在于:
以上面的例子来说,我们使用 telnet 就可以立刻连上 SayYa 这个专门探讨 Linux 的 BBS 站台的欢迎画面!嘿嘿!很棒吧!另外,如果您要确认本机端的 110 这个埠口是否正常时,也可以使用『 telnet + IP + port 』来侦测看看呦!很好用的工具吧! ^_^!不过,不幸的是,如果您在 Linux 终端机接口下,应该是看不到中文的啦!怎么办?!没关系,我们可以加上安装 这个中文套件来显示喔!这个在本章节后面继续说明咯。