Linux系统上的网络工具甚多,如何根据实际需要选择称手的工具呢?在此作一个简单介绍:
观察网络流量:
“sar -n DEV 1 5” 可以统计每个网卡上的网络流速:
# sar -n DEV 2 5
...
02:47:12PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:47:14PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:47:14PM eth0 2.51 0.00 0.17 0.00 0.00 0.00 0.00
...
ptraf 是观察网络流速的强力工具,它可以让你的观察逐步深入,从硬件层(网卡),到网络层(IPv4,IPv6),到传输层(TCP,UDP etc.),一直到每一对socket pair。
iptraf-d
观察网络连接的状态:
“netstat -a“
这是传统的工具,但是它无力处理海量的网络连接。所以在大规模网络连接的主机上,建议使用ss。
1
2
3
4
5
6
7 # netstat -a
Active Internet connections(servers andestablished)
Proto Recv-QSend-QLocal Address Foreign Address State
tcp 0 0*:mysql *:* LISTEN
tcp 0 0*:5901 *:* LISTEN
...
tcp 0 104bj71s060.chn.hp.com:ssh 16.169.16.67:52681 ESTABLISHED
“ss -a” 列出所有的网络连接。ss特别适合海量连接的主机。
如果加上”-p”选项,还可以显示对应的进程号。
# ss -a
State Recv-QSend-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:mysql *:*
LISTEN 0 5 *:5901 *:*
...
LISTEN 0 128 :::38246 :::*
ESTAB 0 184 16.187.252.58:ssh 16.169.16.67:52681
观察静态统计值:
“netstat -i“
# netstat -i
Kernel Interfacetable
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0572421962 0 0 016831237 0 0 0BMRU
lo 16436 0 556534 0 0 0 556534 0 0 0LRU
ifconfig 可以看到网卡层面的少量统计值,packet数量,collision,errors等:
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr00:19:BB:5B:07:34
inet addr:16.187.252.58 Bcast:16.187.255.255 Mask:255.255.252.0
inet6 addr:fe80::219:bbff:fe5b:734/64Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:572422657errors:0dropped:0overruns:0frame:0
TX packets:16831252errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:1000
RX bytes:50512945748(47.0GiB) TX bytes:11194760435(10.4GiB)
Interrupt:19Memory:f0500000-f0520000
“ip -s link” 看到的信息基本类似: