• 【tcpdump命令使用总结】


    1.tcpdump说明

    linux系统的tcpdump命令用来分析数据包分析工具,相似的工具有wireshark等,wireshark使用见【wireshark报文解析ping baidu.com】
    执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。
    如果不是root账户运行会出现

    [potato@localhost ~]$ tcpdump
    tcpdump:
    
    • 1
    • 2

    2.语法及参数说明

    2.1语法

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

    2.2参数说明

    -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<数据包文件> 把数据包数据写入指定的文件。

    3.使用样例说明

    只用root账户使用tcptump命令的话,获得的数据包超级多,不方便进行排查问题,因此得需要进行过滤
    准备工作

    #查看linux系统网卡信息
    ifconfig
    
    • 1
    • 2

    获取到的网卡信息如下,一般虚拟机的以太网网卡都是ens,这里ens33就是我们测试的网卡,ether就是网卡对应的mac地址

    [root@localhost potato]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.198.145  netmask 255.255.255.0  broadcast 192.168.198.255
            inet6 fe80::1d:eebe:25e1:8e7d  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:a4:6e:7a  txqueuelen 1000  (Ethernet)
            RX packets 1326  bytes 126506 (123.5 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 1118  bytes 132303 (129.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 11  bytes 1001 (1001.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 11  bytes 1001 (1001.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:7f:f3:44  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3.1根据ip地址过滤请求信息(host,src,dst)

    #ping baidu.com获取百度的ip地址,得到baidu的ip为:39.156.66.10;
    [root@localhost potato]# ping baidu.com
    PING baidu.com (39.156.66.10) 56(84) bytes of data.
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=128 time=67.6 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=128 time=66.1 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=128 time=76.1 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=4 ttl=128 time=78.9 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=5 ttl=128 time=70.1 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=6 ttl=128 time=78.9 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=7 ttl=128 time=72.5 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=8 ttl=128 time=76.5 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=9 ttl=128 time=78.0 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=10 ttl=128 time=60.7 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=11 ttl=128 time=67.5 ms
    64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=12 ttl=128 time=65.6 ms
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    #开另外一个窗口获取跟百度相关的数据包
    
    #监听ens33与所有主机相关的数据包
    tcpdump -i ens33 host 39.156.66.10
    #监听ens33与源地址主机相关的数据包
    tcpdump -i ens33 scr 39.156.66.10
    #监听ens33与目的主机相关的数据包
    tcpdump -i ens33 dst 39.156.66.10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    获取到相关数据包从左到右分别为:

    请求时间源ip地址目的ip地址协议类型请求类型请求序列号标志长度
    01:46:47.718943localhost.localdomain39.156.66.10ICMPrequest(请求)330510464
    [root@localhost potato]# tcpdump -i ens33 | grep 39.156.66.10
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    01:46:47.718943 IP localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 104, length 64
    01:46:47.777747 IP 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 104, length 64
    01:46:48.721386 IP localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 105, length 64
    01:46:48.782127 IP 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 105, length 64
    01:46:49.723747 IP localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 106, length 64
    01:46:49.792391 IP 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 106, length 64
    01:46:50.726134 IP localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 107, length 64
    01:46:50.790149 IP 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 107, length 64
    01:46:51.727692 IP localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 108, length 64
    01:46:51.786456 IP 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 108, length 64
    01:46:52.730669 IP localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 109, length 64
    01:46:52.791169 IP 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 109, length 64
    01:46:53.733012 IP localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 110, length 64
    01:46:53.795976 IP 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 110, length 64
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3.2查看数据链路层数据(mac地址)信息(-e)

    通过-e命令可以查看,报文解析内容如下:

    请求时间源mac地址目的mac地址协议类型长度源ip地址目的ip地址协议类型请求类型请求序列号标志长度
    01:48:09.89193600:0c:29:a4:6e:7a00:50:56:fb:7a:30ethertype IPv498localhost.localdomain39.156.66.1064localhost.localdomain39.156.66.10ICMPrequest
    #tcpdump -i ens33 -e | grep 39.156.66.10获取百度相关通信的包,并展示在每列倾倒资料上显示连接层级的文件头。
    [root@localhost potato]# tcpdump -i ens33 -e host 39.156.66.10
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    01:48:09.891936 00:0c:29:a4:6e:7a (oui Unknown) > 00:50:56:fb:7a:30 (oui Unknown), ethertype IPv4 (0x0800), length 98: localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 186, length 64
    01:48:09.965766 00:50:56:fb:7a:30 (oui Unknown) > 00:0c:29:a4:6e:7a (oui Unknown), ethertype IPv4 (0x0800), length 98: 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 186, length 64
    01:48:10.893545 00:0c:29:a4:6e:7a (oui Unknown) > 00:50:56:fb:7a:30 (oui Unknown), ethertype IPv4 (0x0800), length 98: localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 187, length 64
    01:48:10.951369 00:50:56:fb:7a:30 (oui Unknown) > 00:0c:29:a4:6e:7a (oui Unknown), ethertype IPv4 (0x0800), length 98: 39.156.66.10 > localhost.localdomain: ICMP echo reply, id 3305, seq 187, length 64
    01:48:11.895483 00:0c:29:a4:6e:7a (oui Unknown) > 00:50:56:fb:7a:30 (oui Unknown), ethertype IPv4 (0x0800), length 98: localhost.localdomain > 39.156.66.10: ICMP echo request, id 3305, seq 188, length 64
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.3监听端口

    #对本机的UDP端口(123)进行监听
    tcpdump udp port 123
    
    • 1
    • 2

    3.4 ARP监听

    [root@localhost potato]# tcpdump -i ens33 arp
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    02:14:57.335964 ARP, Request who-has gateway tell localhost.localdomain, length 28
    02:14:57.336343 ARP, Reply gateway is-at 00:50:56:fb:7a:30 (oui Unknown), length 46
    02:14:58.499764 ARP, Request who-has localhost.localdomain (00:0c:29:a4:6e:7a (oui Unknown)) tell 192.168.198.1, length 46
    02:14:58.499805 ARP, Reply localhost.localdomain is-at 00:0c:29:a4:6e:7a (oui Unknown), length 28
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Air780E模块休眠控制应用指南
    排序算法:计数排序
    2022年,软件测试自学指南(持续更新)
    OpenHarmony如何控制屏幕亮度
    【Python】排序指北
    go语言基础学习(一起学习go语言)
    苹果证书在线制作
    Perl-->Telnet的使用
    idea+docker+jenkins+git构建自动化部署java项目
    CSC关于进一步优化国家公派出国留学服务管理工作的通知
  • 原文地址:https://blog.csdn.net/qq_39187538/article/details/126504950