10.计算机网络---tcpdump抓包工具
假如你现在是一个网站的维护人员,维护着某台服务器,那么你如何知道客户端的人访问到你的服务器了呢?1.查看日志。我们可以查看某个服务对应的日志,那么便知道是否有人访问了,比如说nginx,那么我们可以查看nginx的access日志2.netstat查看State列的状态。ESTABLISHED就是建立连接,web服务采用的是http协议,传输层采用的是tcp协议,那么就会建立三次握手,所以可以通过
假如你现在是一个网站的维护人员,维护着某台服务器,那么你如何知道客户端的人访问到你的服务器了呢?
1. 查看日志。我们可以查看某个服务对应的日志,那么便知道是否有人访问了,比如说nginx,那么我们可以查看nginx的access日志
2. netstat查看State列的状态。ESTABLISHED就是建立连接,web服务采用的是http协议,传输层采用的是tcp协议,那么就会建立三次握手,所以可以通过查看状态来确认是否有建立连接
3. 可以通过抓包工具来分析。例如服务器某个服务对应的端口是80,协议是tcp协议,那么我们可以使用抓包工具抓去特定端口和协议的包
在网络中抓包,我们可以使用Windows的Ciso Packet、wireshark等工具,也可以使用Linux中特有的tcpdump来抓包分析。
tcpdump抓包工具
参数详解
- -i 指定需要监听的接口
- -n 不把IP转换成域名,直接显示IP,避免了域名解析的过程,速度会快很多
- -nn 不进行端口和IP地址名称的转换,直接以数字的形式显示,速度会快很多
- -vv 输出详细的报文信息
- -w 将捕获到的信息保存到文件中,并且不会打印在屏幕上
- -r 从文件中读取数据
- -D 显示系统中所有可以用的tcpdump截包的网络接口
- -t 在每行的输出中不输出时间
- -tt 在每行的输出中会输出一个时间戳
- -Q 选择是入方向还是出方向的数据包,可选项有:in, out, inout
常见的过滤规则
- 指定IP
src host -->source host
dst host -->destination host
host —> 不区分源或者目的IP - 指定端口
src port -->source port
dst port --> destination port
port - 指定协议
tcp
udp
arp
icmp - 指定mac地址
ether src - net 指定网络地址,可以是一个网段
注意:多个条件结合的时候,要使用运算符和连接,例如and、or、not、!
一些举例
抓取访问本机的22号端口的数据包
tcpdump -i ens33 port 22
抓取访问本机的icmp报文或者arp报文
tcpdump -nn -i ens33 icmp or arp
抓取源IP是从192.168.0.0网段来的,访问本机22号端口的数据包
tcpdump -i ens33 port 22 and src net 192.168.0.0/24
抓取源ip地址是192.168.0.1访问本机的tcp协议的80端口的数据包
tcpdump -i ens33 src host 192.168.0.1 and dst port 80 and tcp
抓取源ip是192.168.0.189,目的端口是80,目的ip地址是192.168.0.204的数据包
tcpdump -i ens33 src host 192.168.0.189 and dst port 80 and dst host 192.168.0.204
抓取源ip是192.168.0.123,目的ip地址是114.114.114.114的udp的53号端口的数据包
tcpdump -nn -i ens33 src host 192.168.0.123 and dst host 114.114.114.114 and dst port 53 and udp
-i指定网卡,tcp是协议,src host是源IP(如果通过浏览器访问的话,就是真实机器的IP),dst port目的端口,-nn是指以数字的方式展示出来,不同的选项之间要使用and连接
tcpdump -i ens33 tcp and src host 192.168.2.105 and dst port 80 -nn
将抓取到的数据存入文件中,并且再打开
[root@xieshan lianxi]# tcpdump -i ens33 tcp and src host 192.168.2.105 and dst port 80 -nn -w web.data #-w将抓包到的数据存入文件中,但是查看会有一些乱码,必须在Windows中通过字符界面的抓包工具wireshark打开
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^C6 packets captured
6 packets received by filter
0 packets dropped by kernel
[root@xieshan lianxi]# cat web.data
NN??k?be>
){?`0??E@@@????i??+?P?Ob???ʹ?
BBQn?k?b?N
){?`0??E4@@????i??+?P?Ocb}?l?
?w
??Qr1???k?bVO
){?`0??E?@@?q??i??+?P?Ocb}?l?
?r
dRQr1??GET / HTTP/1.1
Host: 192.168.2.43
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.3 Safari/605.1.15
Accept-Language: zh-CN,zh-Hans;q=0.9
Accept-Encoding: gzip, deflate
Connection: keep-alive
[root@xieshan lianxi]# tcpdump -r web.data #tcpdump 的-r选项也可以很直观的看到
reading from file web.data, link-type EN10MB (Ethernet)
21:29:52.867941 IP 192.168.2.105.50691 > xieshan.http: Flags [S], seq 401362786, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 1683116398 ecr 0,sackOK,eol], length 0
21:29:52.872067 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 1652406636, win 2058, options [nop,nop,TS val 1683116402 ecr 36827091], length 0
21:29:52.872278 IP 192.168.2.105.50691 > xieshan.http: Flags [P.], seq 0:366, ack 1, win 2058, options [nop,nop,TS val 1683116402 ecr 36827091], length 366: HTTP: GET / HTTP/1.1
21:29:52.876385 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 743, win 2047, options [nop,nop,TS val 1683116407 ecr 36827096], length 0
21:29:53.965394 IP 192.168.2.105.50691 > xieshan.http: Flags [P.], seq 366:732, ack 743, win 2048, options [nop,nop,TS val 1683117496 ecr 36827096], length 366: HTTP: GET / HTTP/1.1
21:29:53.969304 IP 192.168.2.105.50691 > xieshan.http: Flags [.], ack 1485, win 2036, options [nop,nop,TS val 1683117500 ecr 36828189], length 0
关于tcpdump更加详细的解析,推荐看这篇博客:全网最详细的tcpdump使用指南
更多推荐
所有评论(0)