专栏首页DBA随笔Linux命令之tcpdump

Linux命令之tcpdump

//

Linux命令之tcpdump

//

基于MHA+consul的高可用方案上线已经一段时间了,目前比较稳定,之前线上环境使用的是VIP+MHA的高可用方案,这种方案在跨机房之间进行故障切换存在问题,所以现在要将服务器上的VIP(virtual IP address)给摘除掉,要摘除VIP,需要查看当前VIP是否有应用服务进行连接,这里利用到了tcpdump这个Linux命令来查看。

首先我们来看VIP的绑定效果:

[dba_mysql ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:50:56:b7:08:40 brd ff:ff:ff:ff:ff:ff
    inet 10.xx.xx.47/24 brd 10.30.124.255 scope global eth0
    inet 10.xx.xx.227/24 scope global secondary eth0

可以看到,eth0上有两个绑定IP,其中,第二个IP地址即为VIP。

01

tcpdump命令

tcpdump命令翻译过来就是dump the traffic on a network,也就是对网络上的tcp数据包进行截取分析。它支持针对网络层、协议、主机、网络或端口的过滤。该命令经常被用来进行网络分析和问题排查。它的语法比较友好,支持and、or、not等逻辑语句来帮助我们过滤掉无效的信息。不带参数的tcpdump会收集网络中所有的信息包头,数据量巨大,必须过滤

tcpdump命令的参数有很多,我们这里只看比较常用的用法,其他的可以通过man tcpdump的方法去查看操作手册。

在tcpdump的表达式中,主要包含以下关键字:

1、关于类型的

例如host(主机)、net(网络地址)、port(端口),如果没有指定类型,则缺省的类型是host

2、确定传输方向的关键字

包括src(源端),dst(目标端),dst or src,dst and src,这些关键字指明了传输的方向

3、关于协议的关键字

主要包含tcp,udp,ip,arp,rarp,如果没有知名监听的包的协议内容,tcpdump将会监听所有的包内容。

4、比较分析类关键字

例如,gateway (网关),broadcast(广播),less,greater,not,and,or等等

02

常用命令

过滤指定IP

抓取所有经过eth0,目的或源地址是192.168.1.1的网络数据

tcpdump -i eth0 host 192.168.1.1

指定源地址

tcpdump -i eth0 src host 192.168.1.1

指定目的地址

tcpdump -i eth0 dst host 192.168.1.1

过滤指定端口

抓取所有经过eth0,目的或源端口是25的网络数据

tcpdump -i eth0 port 4306

指定源端口

tcpdump -i eth0 src port 4306

指定目的端口

tcpdump -i eth0 dst port 4306

协议过滤

过滤4306端口的tcp协议

tcpdump tcp port 4306

组合过滤

过滤协议、端口、主机名称

tcpdump tcp port 3306 and host 10.30.xxx.xxx

条件过滤

抓取所有经过eth0,目的地址是192.168.1.1或192.168.1.2端口是80的TCP数据

tcpdump -i eth0 '((tcp) and (port 80) and ((dst host 192.168.1.1) or (dst host 192.168.1.2)))'

抓取所有经过eth0,目标MAC地址是00:01:02:03:04:05的ICMP数据

tcpdump -i eth0 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

抓取所有经过eth0,目的网络是192.168,但目的主机不是192.168.1.2的TCP数据

tcpdump -i eth0 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.2)))'

03

如何查询VIP的地址是否有访问?

命令如下:

tcpdump -nnn host 10.xx.xxx.xxx and port 4306

我们可以看到输出结果:

18:08:25.247002 IP 10.xx.xxx.64.54248 > 10.xx.xxx.228.4xx6: Flags [P.], seq 3167226600:3167226621, ack 3751788535, win 65535, length 21
18:08:25.247123 IP 10.xx.xxx.228.4xx6 > 10.xx.xxx.64.54248: Flags [P.], seq 1:12, ack 21, win 65535, length 11
18:08:25.247246 IP 10.xx.xxx.64.54248 > 10.xx.xxx.228.4xx6: Flags [.], ack 12, win 65535, length 0
18:08:25.247365 IP 10.xx.xxx.64.54248 > 10.xx.xxx.228.4xx6: Flags [P.], seq 21:48, ack 12, win 65535, length 27
18:08:25.247441 IP 10.xx.xxx.228.4xx6 > 10.xx.xxx.64.54248: Flags [P.], seq 12:23, ack 48, win 65535, length 11
18:08:25.247593 IP 10.xx.xxx.64.54248 > 10.xx.xxx.228.4xx6: Flags [P.], seq 48:369, ack 23, win 65535, length 321
18:08:25.248232 IP 10.xx.xxx.228.4xx6 > 10.xx.xxx.64.54248: Flags [P.], seq 23:401, ack 369, win 65535, length 378
18:08:25.248407 IP 10.xx.xxx.64.54248 > 10.xx.xxx.228.4xx6: Flags [P.], seq 369:380, ack 401, win 65535, length 11

如果这个命令有输出,则说明这块网卡上有数据访问,有三次握手情况。

如果持续一段时间没有输出,则可以判断这个IP上面没有网络数据包,就可以直接摘掉了。

本文分享自微信公众号 - DBA随笔(gh_acc2bbc0d447),作者:AsiaYe

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 大表Online-DDL操作问题初探

    今天下午在执行一个表结构变更的时候,出现了一个问题,拿着分析了分析,对于online-ddl又有了新的认识,这里写篇文章记录下。

    AsiaYe
  • mysql中的字符集和校验规则

    在MySQL中,最常见的字符集有ASCII字符集、latin字符集、GB2312字符集、GBK字符集、UTF8字符集等,下面我们简单介绍下这些字符集:

    AsiaYe
  • 一条SQL的心路历程

    今天在极客时间上学习丁奇大佬的《MySQL 45讲》的时候,看到了一条高质量的评论,结合我自己的理解,将它分享出来。喜欢的同学可以购买原版课程进行学习,里面的内...

    AsiaYe
  • 时序数据库InfluxDB之备份和恢复策略

    首先创建一个数据库 yhhblog, 里面包含两个measurement,对应的数据如下

    小灰灰
  • Web前端性能基础指标&计算方式

    从用户角度而言,打开一个页面想要的就是页面可以尽快有响应,加载完并且可以允许交互;因此前端的性能可以用白屏时间,首屏时间,可交互时间来衡量。

    腾讯移动品质中心TMQ
  • MySQL 在查询结果中记录行号

    在其他的关系型数据库中,都有rownum这类型的内置函数来提供查询结果的行号,但是MySQL没有,阿福也一直觉得奇怪。

    用户2353021
  • 节点插入

    对于早期的w3c浏览器,并没有实现ie的私有方法insertAdjacentHTML(目前已是HTML5标准),可以用appendChild模拟该方法的实现: ...

    欲休
  • 性能知识点二

    之前讲到重排,布局的时候使用flex时,比使用inline-block和float时重排更快,所以在布局时可以优先考虑Flex。

    wade
  • Ledger Nano S开箱实测2 -- 添加数字资产

    熊市买了一个Ledger Nano S硬钱包进行定投囤币,昨天文章《Ledger Nano S开箱实测1 -- 初始化设备》介绍了如何初始化设备,注意备份好助记...

    申龙斌
  • 告别单一,日本厂商推出集触觉、嗅觉及温度于一体的VR体验柜

    VRPinea

扫码关注云+社区

领取腾讯云代金券