当前位置: 首页 > 工具软件 > Ifstat > 使用案例 >

ifstat,iftop

商飞尘
2023-12-01

ifstat

Ifstat is a little tool to report interface activity, 
just like iostat/vmstat do for other system statistics.
  • ifstat 工具是个网络接口监测工具,比较简单看网络流量
    默认的使用方式:ifstat
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

`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退出监控。

相关阅读

相关文章

相关问答