Ifstat is a little tool to report interface activity,
just like iostat/vmstat do for other system statistics.
andrew@andrew-Thurley:~$ ifstat
enp4s0 wlp3s0b1
KB/s in KB/s out KB/s in KB/s out
0.00 0.00 2.29 28.13
0.00 0.00 0.64 0.00
0.00 0.00 0.77 0.00
0.00 0.00 0.64 0.09
ifstat 默认不监测环回接口的数据,监测所有网络接口的时候使用:ifstat -a
andrew@andrew-Thurley:~$ ifstat -a
lo enp4s0 wlp3s0b1
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
0.00 0.00 0.00 0.00 0.56 1.31
0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.00 0.00
ifstat -l
监听含有环回地址的网卡活跃流量
andrew@andrew-Thurley:~$ ifstat -l
lo enp4s0 wlp3s0b1
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
0.00 0.00 0.00 0.00 0.29 0.45
0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.00 0.09
0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.00 0.09
ifstat -z
忽略网卡up
但是没有流量的网卡
andrew@andrew-Thurley:~$ ifstat -z
wlp3s0b1
KB/s in KB/s out
0.00 0.00
0.00 0.00
0.00 0.00
ifstat -i
指定监听的网卡
Specifies the list of interfaces to monitor, separated by commas (if an interface name has a comma, it can be escaped with '\'). Multiple instances of the options are added together.
andrew@andrew-Thurley:~$ ifstat -i lo
lo
KB/s in KB/s out
0.00 0.00
0.00 0.00
0.00 0.00
ifstat -s/d
Specifies a driver to use to gather stats and an eventual option for this driver separated of the driver name by a colon.
andrew@andrew-Thurley:~$ sudo ifstat -d proc
enp4s0 wlp3s0b1
KB/s in KB/s out KB/s in KB/s out
0.00 0.00 0.04 0.09
0.00 0.00 0.06 0.08
0.00 0.00 0.15 0.00
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
ifstat -t `增加时间戳
andrew@andrew-Thurley:~$ ifstat -t
Time enp4s0 wlp3s0b1
HH:MM:SS KB/s in KB/s out KB/s in KB/s out
21:54:23 0.00 0.00 0.00 0.00
21:54:24 0.00 0.00 0.15 0.00
21:54:25 0.00 0.00 0.00 0.28
21:54:26 0.00 0.00 0.00 0.10
21:54:27 0.00 0.00 0.12 0.09
ifstat -T
报告所有网卡的网络吞吐量的和
andrew@andrew-Thurley:~$ ifstat -T
enp4s0 wlp3s0b1 Total
KB/s in KB/s out KB/s in KB/s out KB/s in KB/s out
0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.04 0.06 0.04 0.06
-h Displays a short help message.
-n Turns off displaying the header periodically.
-A Disables use of interface indexes: by default, when polling mechanism is index based (snmp, ifmib), ifstat remembers
indexes of monitored interfaces to poll only them. However, if interfaces indexes change often (new interfaces added, etc),
you might loose some stats, hence this flag. Note that if you ask ifstat to monitor a non existent interface, it will poll
all interfaces until it finds the requested one (regardless of this flag) so you can poll for an interface that goes up and
down.
-w Uses fixed width columns, instead of enlarging them if needed for interfaces names to fit.
-W Wrap lines that are larger than the terminal width (implies -w). Wrapped lines are prefixed with a cycling letter to ease
reading.
-S Keep stats updated on the same line if possible (no scrolling nor wrapping).
-b Reports bandwith in kbits/sec instead of kbytes/sec.
-q Quiet mode, warnings are not printed.
-v Displays version and the compiled-in drivers.
`iftop`是一款实时流量监测工具,监测tcp/ip的连接
`iftop - display bandwidth usage on an interface by host`
参数
iftop -h | [-nNpblBP] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6]
直接显示IP不进行DNS反解析
sudo iftop -n -i wlp3s0b1
不对网络端口号进行解析
sudo iftop -N -i wlp3s0b1
监测指定网段
sudo iftop -F 192.168.0.0/255.255.255.0 -i wlp3s0b1
-p Run in promiscuous mode, so that traffic which does not pass directly through the specified interface is also counted.
-P Turn on port display.
-l Display and count datagrams addressed to or from link-local IPv6 addresses. The default is not to display that address
category.
-b Don't display bar graphs of traffic.
-m limit
Set the upper limit for the bandwidth scale. Specified as a number with a 'K', 'M' or 'G' suffix.
-B Display bandwidth rates in bytes/sec rather than bits/sec.
-i interface
Listen to packets on interface.
-f filter code
Use filter code to select the packets to count. Only IP packets are ever counted, so the specified code is evaluated as
(filter code) and ip.
-F net/mask
Specifies an IPv4 network for traffic analysis. If specified, iftop will only include packets flowing in to or out of
the given network, and packet direction is determined relative to the network boundary, rather than to the interface.
You may specify mask as a dotted quad, such as /255.255.255.0, or as a single number specifying the number of bits set
in the netmask, such as /24.
-G net6/mask6
Specifies an IPv6 network for traffic analysis. The value of mask6 can be given as a prefix length or as a numerical
address string for more compound bitmasking.
-c config file
Specifies an alternate config file. If not specified, iftop will use ~/.iftoprc if it exists. See below for a
description of config files
-t text output mode
Use text interface without ncurses and print the output to STDOUT.
DISPLAY
When running, iftop uses the whole screen to display network usage. At the top of the display is a logarithmic scale for the
bar graph which gives a visual indication of traffic.
The main part of the display lists, for each pair of hosts, the rate at which data has been sent and received over the preced‐
ing 2, 10 and 40 second intervals. The direction of data flow is indicated by arrows, <= and =>. For instance,
foo.example.com => bar.example.com 1Kb 500b 100b
<= 2Mb 2Mb 2Mb
shows, on the first line, traffic from foo.example.com to bar.example.com; in the preceding 2 seconds, this averaged 1Kbit/s,
around half that amount over the preceding 10s, and a fifth of that over the whole of the last 40s. During each of those
intervals, the data sent in the other direction was about 2Mbit/s. On the actual display, part of each line is inverted to
give a visual indication of the 10s average of traffic. You might expect to see something like this where host foo is making
repeated HTTP requests to bar, which is sending data back which saturates a 2Mbit/s link.
By default, the pairs of hosts responsible for the most traffic (10 second average) are displayed at the top of the list.
At the bottom of the display, various totals are shown, including peak traffic over the last 40s, total traffic transferred
(after filtering), and total transfer rates averaged over 2s, 10s and 40s.
SOURCE / DEST AGGREGATION
By pressing s or d while iftop is running, all traffic for each source or destination will be aggregated together. This is
most useful when iftop is run in promiscuous mode, or is run on a gateway machine.
PORT DISPLAY
S or D toggle the display of source and destination ports respectively. p will toggle port display on/off.
DISPLAY TYPE
t cycles through the four line display modes; the default 2-line display, with sent and received traffic on separate lines,
and 3 1-line displays, with sent, received, or total traffic shown.
DISPLAY ORDER
By default, the display is ordered according to the 10s average (2nd column). By pressing 1, 2 or 3 it is possible to sort by
the 1st, 2nd or 3rd column. By pressing < or > the display will be sorted by source or destination hostname respectively.
DISPLAY FILTERING
l allows you to enter a POSIX extended regular expression that will be used to filter hostnames shown in the display. This is
a good way to quickly limit what is shown on the display. Note that this happens at a much later stage than filter code, and
does not affect what is actually captured. Display filters DO NOT affect the totals at the bottom of the screen.
PAUSE DISPLAY / FREEZE ORDER
P will pause the current display.
o will freeze the current screen order. This has the side effect that traffic between hosts not shown on the screen at the
time will not be shown at all, although it will be included in the totals at the bottom of the screen.
SCROLL DISPLAY
j and k will scroll the display of hosts. This feature is most useful when the display order is frozen (see above).
FILTER CODE
f allows you to edit the filter code whilst iftop running. This can lead to some unexpected behaviour.
CONFIG FILE
iftop can read its configuration from a config file. If the -c option is not specified, iftop will attempt to read its con‐
figuration from ~/.iftoprc, if it exists. Any command line options specified will override settings in the config file.
The config file consists of one configuration directive per line. Each directive is a name value pair, for example:
interface: eth0
sets the network interface. The following config directives are supported:
interface: if
Sets the network interface to if.
dns-resolution: (yes|no)
Controls reverse lookup of IP addresses.
port-resolution: (yes|no)
Controls conversion of port numbers to service names.
filter-code: bpf
Sets the filter code to bpf.
show-bars: (yes|no)
Controls display of bar graphs.
promiscuous: (yes|no)
Puts the interface into promiscuous mode.
port-display: (off|source-only|destination-only|on)
Controls display of port numbers.
link-local: (yes|no)
Determines displaying of link-local IPv6 addresses.
hide-source: (yes|no)
Hides source host names.
hide-destination: (yes|no)
Hides destination host names.
use-bytes: (yes|no)
Use bytes for bandwidth display, rather than bits.
sort: (2s|10s|40s|source|destination)
Sets which column is used to sort the display.
line-display: (two-line|one-line-both|one-line-sent|one-line-received)
Controls the appearance of each item in the display.
show-totals: (yes|no)
Shows cumulative total for each item.
log-scale: (yes|no)
Use a logarithmic scale for bar graphs.
max-bandwidth: bw
Fixes the maximum for the bar graph scale to bw, e.g. "10M". Note that the value has to always be in bits, regardless
if the option to display in bytes has been chosen.
net-filter: net/mask
Defines an IP network boundary for determining packet direction.
net-filter6: net6/mask6
Defines an IPv6 network boundary for determining packet direction.
screen-filter: regexp
Sets a regular expression to filter screen output.
QUIRKS (aka they're features, not bugs)
There are some circumstances in which iftop may not do what you expect. In most cases what it is doing is logical, and we
believe it is correct behaviour, although I'm happy to hear reasoned arguments for alternative behaviour.
Totals don't add up
There are several reasons why the totals may not appear to add up. The most obvious is having a screen filter in effect, or
screen ordering frozen. In this case some captured information is not being shown to you, but is included in the totals.
A more subtle explanation comes about when running in promiscuous mode without specifying a -F option. In this case there is
no easy way to assign the direction of traffic between two third parties. For the purposes of the main display this is done
in an arbitrary fashion (by ordering of IP addresses), but for the sake of totals all traffic between other hosts is accounted
as incoming, because that's what it is from the point of view of your interface. The -F option allows you to specify an arbi‐
trary network boundary, and to show traffic flowing across it.
Peak totals don't add up
Again, this is a feature. The peak sent and peak received didn't necessarily happen at the same time. The peak total is the
maximum of sent plus received in each captured time division.
Changing the filter code doesn't seem to work
Give it time. Changing the filter code affects what is captured from the time that you entered it, but most of what is on the
display is based on some fraction of the last 40s window of capturing. After changing the filter there may be entries on the
display that are disallowed by the current filter for up to 40s. DISPLAY FILTERING has immediate effect and does not affect
what is captured.
FILES
~/.iftoprc
Configuration file for iftop.
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。