Linux常用网络诊断工具整理

本文对Linux常用的网络命令进行整理和总结。

连通性测试

ping命令

最常用的网络诊断命令。

1
2
3
4
5
6
7
8
[kuring@localhost ~]$ ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_seq=1 ttl=128 time=25.5 ms
64 bytes from 61.135.169.125: icmp_seq=2 ttl=128 time=20.3 ms
64 bytes from 61.135.169.125: icmp_seq=3 ttl=128 time=25.0 ms
64 bytes from 61.135.169.125: icmp_seq=4 ttl=128 time=21.7 ms
64 bytes from 61.135.169.125: icmp_seq=5 ttl=128 time=23.4 ms
64 bytes from 61.135.169.125: icmp_seq=6 ttl=128 time=21.9 ms

通过上述输出可以看出,ping命令可得到DNS对应的IP信息、ping的数据包大小、网络延迟信息。

另外,可以通过-s参数指定ping的数据包大小。例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
kuring@ubuntu:~$ ping www.baidu.com -s 1024
PING www.a.shifen.com (61.135.169.125) 1024(1052) bytes of data.
1032 bytes from 61.135.169.125: icmp_req=1 ttl=55 time=22.6 ms
1032 bytes from 61.135.169.125: icmp_req=2 ttl=55 time=22.9 ms
1032 bytes from 61.135.169.125: icmp_req=3 ttl=55 time=53.0 ms
1032 bytes from 61.135.169.125: icmp_req=4 ttl=55 time=28.0 ms
1032 bytes from 61.135.169.125: icmp_req=5 ttl=55 time=54.7 ms
1032 bytes from 61.135.169.125: icmp_req=6 ttl=55 time=93.1 ms
1032 bytes from 61.135.169.125: icmp_req=7 ttl=55 time=26.9 ms
1032 bytes from 61.135.169.125: icmp_req=8 ttl=55 time=25.2 ms
1032 bytes from 61.135.169.125: icmp_req=9 ttl=55 time=25.4 ms
^C1032 bytes from 61.135.169.125: icmp_req=10 ttl=55 time=21.2 ms

--- www.a.shifen.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 45436ms
rtt min/avg/max/mdev = 21.225/37.350/93.149/21.966 ms

会发现ping命令的响应时间变长了,这正是由于ping发送数据包变大了。

traceroute

可以显示路由信息。

mtr

traceroute命令的升级版,可以动态刷新路由信息,可以显示路由上每个节点的丢包率和时间等信息,信息比较全面和直观。

arp相关

arping

可以通过该命令查看IP地址对应的mac地址。arping IP地址会立即发送一个arp广播,可以根据收到的arp回应的多少看局域网内是否中arp病毒、IP地址冲突等情况。

arp

跟arp协议相关,可以设置arp表、读取arp表等。

端口相关

telnet

可以利用该命令来测试某个端口是否打开。例如执行telnet localhost 881其中881为本机的未打开端口,会产生如下输出:

1
2
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

执行telnet localhost 22,其中22端口为本机的ssh服务端口且已经打开,会产生如下输出:

1
2
3
4
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3

则表示本机的22端口已经打开。

netstat

查看本机网络端口命令,常用netstat -aunp

#DNS相关

host

1
2
3
4
kuring@ubuntu:~$ host www.google.com.hk
www.google.com.hk is an alias for www-wide.l.google.com.
www-wide.l.google.com has address 74.125.128.199
www-wide.l.google.com has IPv6 address 2404:6800:4005:c00::c7

nslookup

1
2
3
4
5
6
7
8
kuring@ubuntu:~$ nslookup www.google.com.hk
Server:		127.0.0.1
Address:	127.0.0.1#53

Non-authoritative answer:
www.google.com.hk	canonical name = www-wide.l.google.com.
Name:	www-wide.l.google.com
Address: 74.125.128.199

dig

可以代替nslookup的命令,显示的域名信息更为详细。

其他

ab

Linux下的压力测试工具,可以模拟多个客户端发送多个请求。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
kuring@ubuntu:~$ ab -c 100 -n 100 https://kuring.github.io/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking kuring.github.io (be patient).....done


Server Software:        Tengine/2.0.0
Server Hostname:        kuring.github.io
Server Port:            80

Document Path:          /
Document Length:        707 bytes

Concurrency Level:      100
Time taken for tests:   1.547 seconds
Complete requests:      100
Failed requests:        10
   (Connect: 0, Receive: 0, Length: 10, Exceptions: 0)
Write errors:           0
Non-2xx responses:      90
Total transferred:      145330 bytes
HTML transferred:       126570 bytes
Requests per second:    64.64 [#/sec] (mean)
Time per request:       1546.990 [ms] (mean)
Time per request:       15.470 [ms] (mean, across all concurrent requests)
Transfer rate:          91.74 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      173  223  43.8    200     289
Processing:   167  340 301.5    236    1368
Waiting:      166  339 300.5    235    1364
Total:        345  563 295.4    438    1546

Percentage of the requests served within a certain time (ms)
  50%    438
  66%    555
  75%    562
  80%    597
  90%   1108
  95%   1474
  98%   1484
  99%   1546
 100%   1546 (longest request)

参考