tcpdump wireshark 网络抓包
转自:https://www.cnblogs.com/daofaziran/p/18412311
网络协议及抓包
1. TCP/UDP 区别
1.1 概述与总结 ⭐⭐⭐⭐⭐
4层协议 |
概述 |
TCP |
传输控制协议: 基于3次握手四次挥手,可靠连接. |
UDP |
用户数据报协议: 不可靠连接. |
TCP 与 UDP区别 ⭐ ⭐ ⭐ ⭐ ⭐
传输控制协议(TCP) |
数据报协议(UDP) |
面向连接(3次握手4次挥手,建立,断开连接 |
无连接 |
可靠传输 |
不可靠传输 |
流控(检查数据是否丢失,丢失重新发送) |
尽力而为,尽力传递 |
使用TCP应用:WEB浏览器;电子邮件;文件传输程序 |
使用UDP的应用:域名系统(DNS);视频流;IP语音(VoIP) |
1.2 TCP数据包结构
1.3 UDP数据包结构
1.4 UDP演示-了解
连接测试udp端口请使用nc命令. telnet仅仅连接tcp端口.
#2台 linux
都要安装nc命令 .
#1台: 创建 udp 12306端口
[root@Kylin-V10-sp3 ~]# nc -ul 12306
# 另外开个窗口查看12306端口
[root@Kylin-V10-sp3 ~]# ss -lntup | grep 12306
udp UNCONN 0 0 0.0.0.0:12306 0.0.0.0:* users:(("nc",pid=2123,fd=4))
udp UNCONN 0 0 [::]:12306 [::]:* users:(("nc",pid=2123,fd=3))
[root@Kylin-V10-sp3 ~]#
[root@Kylin-V10-sp3 ~]#
#另一台: 连接 udp 12306端口,发消息如hello
[root@ubuntu2204 ~]# nc -u 10.0.0.36 12306
hello
wireshark虚拟机选VMnet8
wireshark 过滤规则udp.port == 12306
2. 常见网络协议
- DNS 域名解析服务/协议: 域名--->ip地址 ⭐ ⭐ ⭐ ⭐ ⭐
- ARP
- ICMP(ping)
- HTTP/HTTPS(第2阶段)
2.1 DNS
- 域名: baidu.com jd.com taobao.com
- DNS 域名解析服务/协议: 域名--->ip地址 ⭐ ⭐ ⭐ ⭐ ⭐
- 公共DNS服务器地址:223.5.5.5 , 114.114.114.114 网卡配置文件里面写的.
- 目标:
- 域名结构
- 给已有的域名配置DNS解析. 如 qq.com--->ip
- DNS解析原理(域名-->ip)
2.1.1 域名结构
域名结构
域名: 网站名字,网址
www.aliyun.com
jd.com
taobao.com
2.1.2 如何配置域名解析
购买域名:
https://wanwang.aliyun.com/newdomain/1yuan?_v_=47edc66742fe36fc0a839ea5700b8cd5
流程 |
说明 |
购买域名 |
xxx.xxx.cn |
云服务器 |
xxx.xxx.xxx.xxx(ip) |
备案(域名-->云服务器) |
如果不备案,dns解析可以使用. http/https访问提示需要备案.云服务器不在大陆. |
2.1.3 记录类型
2.1.4 网站备案流程
2.1.5 DNS解析详细流程⭐⭐⭐⭐⭐
域名解析流程: 域名--过程?-->ip地址
-
客户端发起查询:当用户在浏览器中输入一个域名(如
www.example.com
)并尝试访问时,浏览器首先会检查本地缓存中是否已存在该域名的IP地址。如果不存在,浏览器会向本地DNS服务器发起查询请求。 -
本地DNS服务器查询:本地DNS服务器收到查询请求后,会首先查看自身缓存中是否存在已有结果。如果缓存中有记录,直接返回给客户端浏览器;如果没有,则代替客户端向根服务器发起请求。
-
全球递归查询:本地DNS服务器向根域名服务器发起请求。如果根域名服务器不能给出最终结果,就会告知本地DNS服务器下一步向哪个顶级域名服务器发起查询。本地DNS服务器再向顶级域名服务器发起请求,顶级服务器不能直接解析出IP地址,就会告知本地DNS服务器下一级权威域名服务器的地址。
-
返回解析结果:当找到能够解析出IP地址的权威服务器后,权威服务器会将IP地址返回给本地DNS服务器,本地DNS服务器再将结果返回给客户端。客户端获得IP地址后,即可与对应的主机建立连接。
-
缓存更新:本地DNS服务器会将查询到的IP地址缓存一段时间,以便后续查询能够更快地得到响应。
此外,DNS解析的过程还涉及到浏览器的缓存检查、操作系统的缓存检查以及hosts文件的解析等步骤,这些步骤在客户端发起查询之前进行,以确保能够快速响应用户的访问请求
2.1.6 DNS解析的命令
DNS缓存通过命令查看DNS解析详细流程
2.1.7 DNS故障
- Linux无法上网.
- 通过域名访问: ping域名 dig解析域名 报错. yum安装软件失败
- ping 公网ip可以访问的.
- 此时需要检测与配置下DNS(网卡配置文件中.)
#排查 是否DNS有问题
1. ping 域名
2. ping 公网ip
[root@Kylin-V10-sp3 ~]# ping baidu.com
ping: baidu.com: Name or service not known
[root@Kylin-V10-sp3 ~]#
[root@Kylin-V10-sp3 ~]# ping 223.5.5.5
PING 223.5.5.5 (223.5.5.5) 56(84) bytes of data.
64 bytes from 223.5.5.5: icmp_seq=1 ttl=128 time=18.4 ms
64 bytes from 223.5.5.5: icmp_seq=2 ttl=128 time=20.4 ms
64 bytes from 223.5.5.5: icmp_seq=3 ttl=128 time=18.8 ms
64 bytes from 223.5.5.5: icmp_seq=4 ttl=128 time=19.2 ms
64 bytes from 223.5.5.5: icmp_seq=5 ttl=128 time=18.8 ms
^C
--- 223.5.5.5 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 18.442/19.121/20.364/0.665 ms
[root@Kylin-V10-sp3 ~]# ^C
[root@Kylin-V10-sp3 ~]#
2.1.8 DNS小结
- 理解什么是DNS.
- 理解域名:根域名,顶级域,二级域,三级域.
- 核心掌握DNS解析流程,配合dig +trace 查看.
- DNS解析故障.
2.2 ARP协议
- ARP: 地址解析协议
- DNS协议:域名---->ip
- ARP协议: IP ---> MAC地址
- ARP地址解析协议: ip地址转换为网卡物理地址(MAC地址)
⚠ ARP协议是3层协议,工作在2层.
解析流程简单: 一问(广播)一答(单播)
10.0.0.200---> 10.0.0.2
- 发出arp请求,发送广播找人 谁知道10.0.0.2的mac地址,请告诉10.0.0.200
- 单播:所有局域网的设备都收到广播,只有10.0.0.2这个机器进行响应(回复): 我是10.0.0.2 我的mac地址是xx:xx:xxxxxxxx
- 缓存mac地址.
抓包查看过程
#10.0.0.200(都在这台机器操作)
arp -n #查看当前系统arp缓存表
ping 10.0.0.201
arp -d 10.0.0.201 #删除arp缓存
#10.0.0.201
注意: arp缓存是双刃剑,也会造成病毒危害系统.
预防:记录每个主机的mac地址. ip与mac地址绑定.
解决:抓包查看找出异常mac地址.
2.3 ICMP协议
Internet控制报文协议
ping 使用的就是icmp协议
2.3.1 禁ping
#内核参数:
临时禁止ping,重启后恢复
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#准许ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#永久生效
echo 'net.ipv4.icmp_echo_ignore_all =1 ' >>/etc/sysctl.conf
sysctl -p #生效
2.4 网络协议小结
协议 |
名字 |
特点 |
DNS |
域名解析系统/服务 |
域名--->ip地址 |
ARP |
地址解析协议 |
IP地址---->mac地址 |
ICMP |
因特网控制报文协议 |
ping背后使用的协议 |
DHCP原理 |
自动分配IP地址 |
可以扩展研究下. |
HTTP/HTTPS |
超文本传输协议/加密 |
第2个阶段 网站服务讲解 |
3. 用户访问www.baidu.com 整个过程 ⭐⭐⭐⭐⭐
适用于打开app,打开网站,打开小程序...
3.1 过程图解
3.2 过程详解
# 大致步骤:
1.DNS解析,xxx.cn解析得到ip
2.tcp3次握手:通过ip+端口,与服务器建立连接
3.用户-->服务器:发出请求(http),请求报文;
4.网站处理用户的请求;
5.服务器-->用户:发出响应(http),响应报文;
6. tcp4次挥手:断开连接
# 细致步骤:
1.DNS解析,xxx.cn解析得到ip
1.1 访问本地dns缓存,hosts文件
1.2 访问本地DNS服务器
1.3 访问根域名解析服务器,得到顶级域
1.4 访问顶级域DNS,得到二级域
1.5 访问二级域DNS,得到三级域名的ip
1.6 返回本地DNS,缓存,再给用户
2.tcp3次握手:通过ip+端口,与服务器建立连接
2.1 客户端-->服务端:发出SYN建立连接请求,seq随机数
2.2 服务端-->客户端:发出ACK确认,SYN建立连接,ack=seq+1 ,seq随机
2.3 客户端-->服务端:发出ACK确认,ack=seq+1,seq
2.4 连接建立
3.用户-->服务器:发出请求(http),请求报文;
4.网站处理用户的请求;
5.服务器-->用户:发出响应(http),响应报文;
6. tcp4次挥手:断开连接
6.1 服务端-->客户端:断开连接请求FIN,ack,seq
6.2 客户端-->服务端:发出ACK确认,ack,seq
6.3 客户端-->服务端:发出FIN断开连接请求,ack,seq
6.4 服务端-->客户端:发出ACK确认,ack,seq
6.5 连接断开
3.3 抓包详解
https://www.processon.com/view/link/62466f935653bb072bd2771d
3.3.1 dns解析
3.3.2 三次握手
3.3.3 http请求
3.3.4 http响应
3.3.5 四次挥手
4. 抓包 ⭐⭐⭐⭐⭐
4.1 概述
目标:
- 抓出指定协议的数据包.
- 抓出指定端口.
- 抓出指定ip.
抓包工具 |
|
特点. |
wireshark |
|
可视化抓包工具. win/mac/linux ⭕ |
fiddler |
|
代理,所有流量走fiddler,然后出去. |
科来 |
|
|
tcpdump |
|
linux自带,yum安装. 抓4层 ⭕ |
burpsuite |
|
抓包,修改数据包.安全去使用 |
4.2 wireshark过滤器规则
4.2.1 抓出指定协议 ⭐⭐⭐⭐⭐
icmp #ping 数据包
tcp
udp
http
arp
过滤https数据包: tls
icmp协议
# 虚拟机 ping ip 如:
[root@Kylin-V10-sp3 ~]# ping 39.106.44.157
PING 39.106.44.157 (39.106.44.157) 56(84) bytes of data.
64 bytes from 39.106.44.157: icmp_seq=1 ttl=128 time=7.35 ms
64 bytes from 39.106.44.157: icmp_seq=2 ttl=128 time=7.61 ms
64 bytes from 39.106.44.157: icmp_seq=3 ttl=128 time=7.37 ms
^C
--- 39.106.44.157 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2008ms
rtt min/avg/max/mdev = 7.352/7.443/7.614/0.120 ms
[root@Kylin-V10-sp3 ~]# ^C
[root@Kylin-V10-sp3 ~]#
dns协议
# 虚拟机 dig
[root@Kylin-V10-sp3 ~]# dig baidu.com
; <<>> DiG 9.11.21-9.11.21-18.ky10 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22231
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;baidu.com. IN A
;; ANSWER SECTION:
baidu.com. 499 IN A 39.156.66.10
baidu.com. 499 IN A 110.242.68.66
;; Query time: 43 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 三 9月 18 15:21:23 CST 2024
;; MSG SIZE rcvd: 70
[root@Kylin-V10-sp3 ~]#
4.2.2 抓住指定端口⭐⭐⭐⭐⭐
port 端口
tcp/udp
tcp.port
udp.port
tcp.port == 80 #过滤出源端口或目标端口是80的数据包.
如果是udp数据包
udp.port == 53
#src source 源
tcp.srcport == 80 #过滤出源端口80
#dst destitation 目标
tcp.dstport == 80 #过滤目标端口80
#src source 源
udp.srcport == 53
#dst destitation 目标
udp.dstport == 53
4.2.3 抓出指定ip的数据包 ⭐⭐⭐⭐⭐
#过滤源ip或目标ip为百度的数据包
ping baidu.com
ip.addr == 39.156.66.10 #过滤出源ip或目标ip是 10.0.0.200 数据包
#ip.src表示源ip
ip.src == 10.0.0.200 #过滤出源ip10.0.0.200 数据包
#ip.dst表示目标ip
ip.dst == 10.0.0.200 #过滤出目标ip10.0.0.200 数据包
4.2.4 不固定内容的过滤-比较大小
'''
过滤出端口小于等于1024的数据包.
tcp.dstport <= 1024
等于 ==
小于等于 <=
小于 <
大于等于 >=1
大于 >
不等于 !=
'''
4.2.5 与或非 ⭐⭐
#过滤端口号大于等于20 小于等于1024
tcp.port >=20 && tcp.port <=1024
tcp.port >=20 and tcp.port <=1024
#组合 过滤出 端口是80 并且 ip地址是虚拟机ip
or #或者 ||
! #取反
tcp.port == 80 && ip.addr == 10.0.0.200 #并且
tcp.port == 80 || ip.addr == 10.0.0.200 #或者
#过滤出udp协议 53端口数据表
udp && udp.port == 53
测试语句: dig www.baidu.com
#过滤源IP是虚拟机(10.0.0.200) 并且目标端口是80的数据包
测试语句:curl www.baidu.com
ip.addr == 10.0.0.200 && tcp.dstport == 80
4.3 tcpdump 过滤
# 安装:yum install -y tcpdump
tcpdump linux抓包并保存.通过wireshark查看与分析
过滤条件 |
wireshark |
tcpdump |
抓出指定协议 |
icmp/tcp/http |
icmp/tcp/udp(不支持7层协议) 需要通过指定端口法 |
抓住指定端口 |
tcp.port == 80 |
port 80 |
过滤出源端口 |
tcp.srcport ==80 |
[tcp或udp] src port 80 #tcp或udp |
过滤目标端口 |
tcp.dstport ==80 |
[tcp或udp] dst port 80 |
抓出指定ip的数据包 |
ip.addr ==10.0.0.200 |
host 10.0.0.200 |
过滤出源ip |
ip.src ==10.0.0.200 |
src host 10.0.0.200 |
过滤出目标ip |
ip.dst ==10.0.0.200 |
dst host 10.0.0.200 |
tcpdump抓包案例
#指定网卡 如果有多块网卡的时候需要指定。
[root@Kylin-V10-sp3 ~]# tcpdump -i ens33
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
15:37:17.804285 IP Kylin-V10-sp3.ssh > 10.0.0.1.54674: Flags [P.], seq 2281664028:2281664240, ack 1923919184, win 501, length 212
15:37:17.804789 IP Kylin-V10-sp3.50330 > dns.google.domain: 28584+ PTR? 1.0.0.10.in-addr.arpa. (39)
15:37:17.805072 IP 10.0.0.1.54674 > Kylin-V10-sp3.ssh: Flags [.], ack 212, win 4106, length 0
15:37:17.849287 IP dns.google.domain > Kylin-V10-sp3.50330: 28584 NXDomain 0/0/0 (39)
#过滤协议
'''
tcpdump icmp
一台服务器ping另一台服务器 ,被ping的服务器收集数据
'''
[root@ubuntu2204 ~]# ping 10.0.0.36
PING 10.0.0.36 (10.0.0.36) 56(84) bytes of data.
64 bytes from 10.0.0.36: icmp_seq=1 ttl=64 time=0.828 ms
64 bytes from 10.0.0.36: icmp_seq=2 ttl=64 time=0.352 ms
64 bytes from 10.0.0.36: icmp_seq=3 ttl=64 time=0.553 ms
[root@Kylin-V10-sp3 ~]# tcpdump -nnn -vvv icmp
dropped privs to tcpdump
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
15:40:11.140528 IP (tos 0x0, ttl 64, id 47500, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.0.37 > 10.0.0.36: ICMP echo request, id 1, seq 1, length 64
15:40:11.140642 IP (tos 0x0, ttl 64, id 47827, offset 0, flags [none], proto ICMP (1), length 84)
10.0.0.36 > 10.0.0.37: ICMP echo reply, id 1, seq 1, length 64
15:40:12.224828 IP (tos 0x0, ttl 64, id 47682, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.0.37 > 10.0.0.36: ICMP echo request, id 1, seq 2, length 64
15:40:12.224862 IP (tos 0x0, ttl 64, id 48186, offset 0, flags [none], proto ICMP (1), length 84)
10.0.0.36 > 10.0.0.37: ICMP echo reply, id 1, seq 2, length 64
#过滤指定端口号 80端口
'''
先访问服务 ,再收集数据
'''
[root@Kylin-V10-sp3 ~]# curl http://39.106.44.157
root@iZ2zei5cw2j6q770mgp5kvZ:~# tcpdump -nnn port 80
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
17:42:16.646024 IP 100.100.30.26.80 > 172.28.157.228.42796: Flags [P.], seq 1027664183:1027664193, ack 1573035204, win 12299, length 10: HTTP
17:42:16.648549 IP 172.28.157.228.42796 > 100.100.30.26.80: Flags [P.], seq 1:7, ack 10, win 5731, length 6: HTTP
17:42:16.686744 IP 100.100.30.26.80 > 172.28.157.228.42796: Flags [.], ack 7, win 12299, length 0
# 收集数据开始
17:42:21.859425 IP 221.218.208.28.58295 > 172.28.157.228.80: Flags [S], seq 1898797584, win 64240, options [mss 1452,nop,wscale 8,nop,nop,sackOK], length 0
17:42:21.859452 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [S.], seq 2053911007, ack 1898797585, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
17:42:21.868360 IP 221.218.208.28.58295 > 172.28.157.228.80: Flags [.], ack 1, win 516, length 0
17:42:21.868528 IP 221.218.208.28.58295 > 172.28.157.228.80: Flags [P.], seq 1:78, ack 1, win 516, length 77: HTTP: GET / HTTP/1.1
17:42:21.868546 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [.], ack 78, win 502, length 0
17:42:22.210726 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [P.], seq 1:2905, ack 78, win 502, length 2904: HTTP: HTTP/1.1 200 OK
17:42:22.210736 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [P.], seq 2905:5809, ack 78, win 502, length 2904: HTTP
17:42:22.210757 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [P.], seq 5809:8321, ack 78, win 502, length 2512: HTTP
17:42:22.211127 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [P.], seq 8321:11225, ack 78, win 502, length 2904: HTTP
17:42:22.211131 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [P.], seq 11225:14129, ack 78, win 502, length 2904: HTTP
17:42:22.217552 IP 221.218.208.28.58295 > 172.28.157.228.80: Flags [.], ack 2905, win 516, length 0
17:42:22.217567 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [P.], seq 14129:17033, ack 78, win 502, length 2904: HTTP
17:42:22.217572 IP 172.28.157.228.80 > 221.218.208.28.58295: Flags [P.], seq 17033:19937, ack 78, win 502, length 2904: HTTP
17:42:22.217578 IP 221.218.208.28.58295 > 172.28.157.228.80: Flags [.], ack 5809, win 516, length 0
17:42:22.241780 IP 221.218.208.28.58295 > 172.28.157.228.80: Flags [.], ack 84132, win 516, options [nop,nop,sack 1 {70757:72209}], length 0
17:42:22.243574 IP 221.218.208.28.58295 > 172.28.157.228.80: Flags [.], ack 84133, win 516, length 0
17:42:36.027787 IP 172.28.157.228.42796 > 100.100.30.26.80: Flags [P.], seq 7:1145, ack 10, win 5731, length 1138: HTTP
17:42:36.066020 IP 100.100.30.26.80 > 172.28.157.228.42796: Flags [.], ack 1145, win 12299, length 0
^C
87 packets captured
87 packets received by filter
0 packets dropped by kernel
^C^C^Croot@iZ2zei5cw2j6q770mgp5kvZ:~#
[root@Kylin-V10-sp3 ~]# curl http://39.106.44.157
root@iZ2zei5cw2j6q770mgp5kvZ:~# tcpdump -nnn src port 80
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
17:46:57.199628 IP 100.100.30.26.80 > 172.28.157.228.42796: Flags [.], ack 1573043684, win 12299, options [nop,nop,sack 1 {4294966683:1}], length 0
17:47:03.115635 IP 100.100.18.120.80 > 172.28.157.228.58166: Flags [S.], seq 2915614551, ack 2526669515, win 29200, options [mss 1440,nop,nop,sackOK,nop,wscale 7], length 0
17:47:03.117962 IP 100.100.18.120.80 > 172.28.157.228.58166: Flags [.], ack 321, win 237, length 0
17:47:03.121967 IP 100.100.18.120.80 > 172.28.157.228.58166: Flags [P.], seq 1:332, ack 321, win 237, length 331: HTTP: HTTP/1.1 200 OK
17:47:03.121996 IP 100.100.18.120.80 > 172.28.157.228.58166: Flags [P.], seq 332:337, ack 321, win 237, length 5: HTTP
17:47:03.124314 IP 100.100.18.120.80 > 172.28.157.228.58166: Flags [F.], seq 337, ack 322, win 237, length 0
# 收集数据开始
17:47:11.774412 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [S.], seq 2034058171, ack 2583741922, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
17:47:11.781524 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [.], ack 78, win 502, length 0
17:47:12.155478 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 1:4357, ack 78, win 502, length 4356: HTTP: HTTP/1.1 200 OK
17:47:12.155489 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 4357:8321, ack 78, win 502, length 3964: HTTP
17:47:12.155768 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 8321:12677, ack 78, win 502, length 4356: HTTP
17:47:12.157020 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [.], seq 12677:14129, ack 78, win 502, length 1452: HTTP
17:47:12.162116 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 14129:19937, ack 78, win 502, length 5808: HTTP
17:47:12.162126 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 19937:25745, ack 78, win 502, length 5808: HTTP
17:47:12.162156 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 25745:31553, ack 78, win 502, length 5808: HTTP
17:47:12.162167 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 31553:40265, ack 78, win 502, length 8712: HTTP
17:47:12.162191 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 40265:43169, ack 78, win 502, length 2904: HTTP
17:47:12.168363 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 43169:53333, ack 78, win 502, length 10164: HTTP
17:47:12.168378 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 53333:64949, ack 78, win 502, length 11616: HTTP
17:47:12.169274 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 64949:78017, ack 78, win 502, length 13068: HTTP
17:47:12.170150 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [P.], seq 78017:84132, ack 78, win 502, length 6115: HTTP
17:47:12.177341 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [.], seq 64949:66401, ack 78, win 502, length 1452: HTTP
17:47:12.177353 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [.], seq 66401:67853, ack 78, win 502, length 1452: HTTP
17:47:12.178238 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [.], seq 67853:69305, ack 78, win 502, length 1452: HTTP
17:47:12.178244 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [.], seq 69305:70757, ack 78, win 502, length 1452: HTTP
17:47:12.178249 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [.], seq 70757:72209, ack 78, win 502, length 1452: HTTP
17:47:12.187360 IP 172.28.157.228.80 > 221.218.208.28.58702: Flags [F.], seq 84132, ack 79, win 502, length 0
^C
27 packets captured
27 packets received by filter
0 packets dropped by kernel
^Croot@iZ2zei5cw2j6q770mgp5kvZ:~#
tcpdump -nnn dst port 80
#抓住指定主机
tcpdump -nnn host 10.0.0.200
#抓取指定ip和端口的数据包
tcpdump -nnn src host 10.0.0.200 and port 80
tcpdump -nnn dst host 10.0.0.200 and port 80
#组合 过滤出 端口是80 并且 ip地址是10.0.0.200
and #并且
or #或者
! #取反
⚠ ❌ tcpdump无法过滤出7层的数据包 http 需要指定端口号过滤并保存,然后通过wireshark查看.
4.4 tcpdump + wireshark抓包流程. ⭐⭐
tcpdump linux抓包 并保存
下载
wireshark分析.
# tcpdump 抓包的时候 通过-w保存
#下载windows,通过wireshark分析即可.
root@iZ2zei5cw2j6q770mgp5kvZ:~/packages# tcpdump -vvv -nn -i eth0 port 80 or port 53 -w http-dns.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
^C83 packets captured
83 packets received by filter
0 packets dropped by kernel
^C^C^Croot@iZ2zei5cw2j6q770mgp5kvZ:~/packages#
root@iZ2zei5cw2j6q770mgp5kvZ:~/packages#
root@iZ2zei5cw2j6q770mgp5kvZ:~/packages# ll
total 112
drwxr-xr-x 2 root root 4096 Sep 18 17:58 ./
drwx------ 9 root root 4096 Sep 18 17:57 ../
-rw-r--r-- 1 tcpdump tcpdump 104744 Sep 18 17:58 http-dns.pcap
root@iZ2zei5cw2j6q770mgp5kvZ:~/packages#
root@iZ2zei5cw2j6q770mgp5kvZ:~/packages# sz http-dns.pcap
找到http-dns.pcap包直接打开如下图所示,可以对数据进行分析。(阿里云服务器抓包显示的是内网ip地址)
4.5 远程连接失败与抓包分析
远程连接云服务器失败了。
1. 关闭公有云安全组的远程连接端口规则
2. wireshark抓取本地网卡数据包 并过滤云服务器公网IP的数据表 ip.addr == ip
3. 发现失败
4. 去云服务器上tcpdump -vvv -nnn port 22抓包 发现没有任何数据包
5. 安全组放行22端口,重新2-4过程
4.6 抓包小结:
过滤条件 |
wireshark |
tcpdump |
抓出指定协议 |
icmp/tcp/http |
icmp/tcp/udp |
抓住指定端口 |
tcp.port == 80 或 udp.port == 53 |
port 80 tcp或 udp port 53 |
过滤出源端口 |
tcp.srcport == 80 |
src port 80 |
过滤目标端口 |
tcp.dstport == 80 |
dst port 80 |
抓出指定ip的数据包 |
ip.addr == 10.0.0.200 |
host 10.0.0.200 |
过滤出源ip |
ip.src == 10.0.0.200 |
src host 10.0.0.200 |
正则 |
字段(指标)字符串 ~或matches匹配正则,"正则" |
无 |
与 |
&& 或 and |
and |
或 |
|| 或 or |
or |
非 |
! |
! |
选项 |
无 |
-w保存数据包 -i指定网卡 -vvv -nnn |
4.6.1 抓包应用场景(排错)
4.6.2 抓包与网卡