目 录CONTENT

文章目录

网络管理

简中仙
2023-05-25 / 0 评论 / 0 点赞 / 64 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2023-10-07,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、iftop

1、简介

Linux 中查看网卡流量工具有 iptrafiftop 以及 nethogs 等,iftop 可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。

2、安装

CentOS yum 方式

# 安装依赖
yum install iftop -y

3、语法

iftop -h | [-npblNBP] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6]

参数
    -i 设定监测的网卡,如:iftop -i eth1,其中eth1是服务器的公网网卡,(网卡名称可以通过ifconfig查看)
    -F 显示特定网段的进出流量,如 `iftop -F 10.10.1.0/24` 或 `iftop -F 10.10.1.0/255.255.255.0`
    -B 以Byte为单位显示流量(默认是bits), 如:`iftop -i eth1 -B -F 182.92.*.20` 显示 182.92.*.20这个IP与服务器的网卡eth1交互的数据量,单位是Byte。
    -n 使host信息默认直接都显示IP,如:iftop -n
    -N 使端口信息默认直接都显示端口号,如: iftop -N
    -h(display this message),帮助,显示参数信息
    -p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
    -b 使流量图形条默认就显示;
    -f 这个暂时还不太会用,过滤计算包用的;
    -P 使host信息及端口信息默认就都显示;
    -m 设置界面最上边的刻度的最大值,刻度分五个大段显示,例:iftop -m 100M
  • 不使用ncurses 界面
    • -t 不使用 ncurses 界面
    • -s num 数秒后打印结果,和-t连用
    • -L num 打印数据行数,和-t连用

4、示例

# iftop
                    1.91Mb           3.81Mb           5.72Mb           7.63Mb	9.54Mb
mqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqq
bogon                         => 10.117.49.124                  103Kb  43.1Kb  43.5Kb
                              <=                                331Kb   150Kb   180Kb
bogon                         => bogon                         42.9Kb  8.58Kb  2.18Kb
                              <=                               1.84Kb   376b    131b
bogon                         => localhost                     42.7Kb  8.55Kb  2.17Kb
                              <=                               1.66Kb   339b    122b
bogon                         => BJ-DZ0101360.baidu.com   1.86Kb  2.88Kb  3.47Kb
                              <=                                184b    394b    599b
bogon                         => 10.117.49.125                 2.68Kb  1.15Kb  1.20Kb
                              <=                               1.01Kb  1.99Kb  2.54Kb
bogon                         => 10.117.49.123                 2.68Kb  1.15Kb  1.20Kb
                              <=                               1.01Kb  1.99Kb  2.54Kb
bogon                         => 10.117.49.128                 2.68Kb  1.15Kb  1.20Kb
                              <=                               1.01Kb  1.99Kb  2.54Kb
bogon                         => 10.117.49.126                 2.68Kb  1.15Kb  1.20Kb
                              <=                               1.01Kb  1.99Kb  2.54Kb
bogon                         => 10.117.49.127                 2.68Kb  1.15Kb  1.20Kb
                              <=                               1.01Kb  1.99Kb  2.54Kb
bogon                         => bogon                            0b	  0b	  0b
                              <=                                908b   1.13Kb   970b
bogon                         => 10.117.49.12                     0b	  0b	  0b
                              <=                                972b    972b    930b
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
TX:             cum:    771KB   peak:    204Kb        rates:    204Kb  69.3Kb  57.7Kb
RX:                    2.63MB           1.01Mb                  350Kb   172Kb   205Kb
TOTAL:                 3.39MB           1.18Mb                  554Kb   241Kb   263Kb

界面说明

  • <=与=>,表示的是流量的方向。
  • TX:从网卡发出的流量 。
  • RX:网卡接收流量。
  • TOTAL:网卡发送接收总流量。
  • cum:iftop开始运行到当前时间点的总流量。
  • peak:网卡流量峰值。
  • rates:分别表示最近2s、10s、40s 的平均流量。

5、ncurses界面按钮

进入ncurses界面后,按键盘对应按键,产生如下效果:

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

6、-t(不使用ncurses 界面)

说明:-t 不使用ncurses界面,-L 显示x条数据,-s x秒后显示x秒内统计结果

# iftop -t -L 10 -s 5
interface: eth0
IP address is: 10.10.239.101
MAC address is: 52:54:00:77:17:a2
Listening on eth0
   # Host name (port/service if enabled)            last 2s   last 10s   last 40s cumulative
--------------------------------------------------------------------------------------------
   1 DoM01                                    =>      943Kb      899Kb      899Kb      674KB
     DoN04                                    <=     9.53Mb     3.82Mb     3.82Mb     2.87MB
   2 10.10.239.100                            =>     9.10Mb     3.46Mb     3.46Mb     2.60MB
     10.10.239.64                             <=     88.3Kb     35.0Kb     35.0Kb     26.3KB
   3 10.10.239.100                            =>      431Kb      502Kb      502Kb      376KB
     DoN03                                    <=      853Kb      899Kb      899Kb      674KB
   4 DoM01                                    =>      600Kb      616Kb      616Kb      462KB
     DoN06                                    <=      296Kb      325Kb      325Kb      244KB
   5 DoM01                                    =>      604Kb      617Kb      617Kb      462KB
     DoN01                                    <=      300Kb      308Kb      308Kb      231KB
   6 DoM01                                    =>      115Kb      116Kb      116Kb     86.8KB
     DoM02                                    <=      719Kb      807Kb      807Kb      605KB
   7 DoM01                                    =>     36.7Kb     34.4Kb     34.4Kb     25.8KB
     DoM03                                    <=      672Kb      555Kb      555Kb      416KB
   8 10.10.239.100                            =>      577Kb      555Kb      555Kb      416KB
     DoM02                                    <=     14.2Kb     25.3Kb     25.3Kb     18.9KB
   9 DoM01                                    =>     35.8Kb     74.8Kb     74.8Kb     56.1KB
     DoN07                                    <=     69.0Kb     79.1Kb     79.1Kb     59.4KB
  10 10.10.239.100                            =>     38.5Kb     68.9Kb     68.9Kb     51.6KB
     DoN06                                    <=     61.3Kb     53.7Kb     53.7Kb     40.3KB
--------------------------------------------------------------------------------------------
Total send rate:                                     12.9Mb     7.22Mb     7.22Mb
Total receive rate:                                  12.9Mb     7.11Mb     7.11Mb
Total send and receive rate:                         25.8Mb     14.3Mb     14.3Mb
--------------------------------------------------------------------------------------------
Peak rate (sent/received/total):                     12.9Mb     12.9Mb     25.8Mb
Cumulative (sent/received/total):                    5.41MB     5.33MB     10.7MB
============================================================================================

二、tcpdump

Linux tcpdump命令用于抓包网络传输数据。

执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。

1、语法

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

参数说明

  • -a 尝试将网络和广播地址转换成名称。
  • -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
  • -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
  • -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
  • -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
  • -e 在每列倾倒资料上显示连接层级的文件头。
  • -f 用数字显示网际网络地址。
  • -F<表达文件> 指定内含表达方式的文件。
  • -i<网络界面> 使用指定的网络截面送出数据包。
  • -l 使用标准输出列的缓冲区。
  • -n 不把主机的网络地址转换成名字。
  • -N 不列出域名。
  • -O 不将数据包编码最佳化。
  • -p 不让网络界面进入混杂模式。
  • -q 快速输出,仅列出少数的传输协议信息。
  • -r<数据包文件> 从指定的文件读取数据包数据。
  • -s<数据包大小> 设置每个数据包的大小。
  • -S 用绝对而非相对数值列出TCP关联数。
  • -t 在每列倾倒资料上不显示时间戳记。
  • -tt 在每列倾倒资料上显示未经格式化的时间戳记。
  • -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
  • -v 详细显示指令执行过程。
  • -vv 更详细显示指令执行过程。
  • -x 用十六进制字码列出数据包资料。
  • -w<数据包文件> 把数据包数据写入指定的文件。

2、基本语法

1、过滤主机

- 抓取所有经过 eth1,目的或源地址是 192.168.1.1 的网络数据
# tcpdump -i eth1 host 192.168.1.1
- 源地址
# tcpdump -i eth1 src host 192.168.1.1
- 目的地址
# tcpdump -i eth1 dst host 192.168.1.1

2、过滤端口

- 抓取所有经过 eth1,目的或源端口是 25 的网络数据
# tcpdump -i eth1 port 25
- 源端口
# tcpdump -i eth1 src port 25
- 目的端口
# tcpdump -i eth1 dst port 25

3、网络过滤

# tcpdump -i eth1 net 192.168
# tcpdump -i eth1 src net 192.168
# tcpdump -i eth1 dst net 192.168

可以加入-X参数,查看包内容

4、协议过滤

# tcpdump -i eth1 arp
# tcpdump -i eth1 ip
# tcpdump -i eth1 tcp
# tcpdump -i eth1 udp
# tcpdump -i eth1 icmp

5、常用表达式

非 : ! or "not" (去掉双引号)
且 : && or "and"
或 : || or "or"

- 抓取所有经过 eth1,目的地址是 192.168.1.254 或 192.168.1.200 端口是 80 的 TCP 数据
# tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

- 抓取所有经过 eth1,目标 MAC 地址是 00:01:02:03:04:05 的 ICMP 数据
# tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

- 抓取所有经过 eth1,目的网络是 192.168,但目的主机不是 192.168.1.200 的 TCP 数据
# tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'

- 只抓 SYN 包
# tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'

- 抓 SYN, ACK
# tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'

抓 SMTP 数据
# tcpdump -i eth1 '((port 25) and (tcp[(tcp[12]>>2):4] = 0x4d41494c))'

- 抓 DNS 请求数据
# tcpdump -i eth1 udp dst port 53

-c 参数对于运维人员来说也比较常用,因为流量比较大的服务器,靠人工 CTRL+C 还是抓的太多,于是可以用-c 参数指定抓多少个包。

# time tcpdump -nn -i eth0 'tcp[tcpflags] = tcp-syn' -c 10000 > /dev/null
上面的命令计算抓 10000 个 SYN 包花费多少时间,可以判断访问量大概是多少。
# 实时抓取端口号8000的GET包,然后写入GET.log
tcpdump -i eth0 '((port 8000) and (tcp[(tcp[12]>>2):4]=0x47455420))' -nnAl -w /tmp/GET.log

3、实用tcpdump命令

查看本机与mysql的操作命令 注意 -i any表示监听所有网络接口,我们也根据自身情况选择网络接口

# tcpdump -i any -w - dst port 3306 |strings

查看本机58895上与mysql的命令 注意 -i any 表示监听所有网络接口,我们需要根据自身情况选择网络接口

# tcpdump -i any -w - dst port 3306 and src port 58895 |strings  

同理,也可以使用上面的命令,查看kafka,etcd,redis,mc等的命令情况,只要是明文协议都可以

看目前机器上有哪些网络接口

# tcpdump -D
0

评论区