Linux网络数据抓包

什么是网络数据抓包

        网络数据抓包是一种重要的网络故障排除和网络安全检测技术,它可以捕获和分析网络中传输的数据包,帮助网络管理员和安全专家诊断网络故障、优化网络性能和监视网络安全。以下是一些网络数据抓包的原因:

  1. 故障排除:网络数据抓包可以帮助定位网络故障,分析网络数据包的丢失、延迟、重复、错误等异常情况,找出故障原因并进行解决。
  2. 性能优化:网络数据抓包可以分析网络流量,统计网络数据包的大小、数量、传输时间等参数,帮助优化网络性能,提高网络的吞吐量和响应速度。
  3. 安全监测:网络数据抓包可以监视网络安全,检测网络攻击、恶意软件和其他安全威胁,及时发现和阻止安全事件,保护网络安全。
  4. 应用分析:网络数据抓包可以分析应用程序的数据流量、延迟和吞吐量,检测应用程序的性能问题和错误,帮助优化应用程序的设计和实现。

网络数据抓包是一种重要的网络管理技术,可以帮助网络管理员和安全专家更好地管理和保护网络,提高网络的可用性、性能和安全性。

如何网络数据抓包

        主要有几种方式,简单的就可以直接使用tcpdump的命令行,复杂点可以使用wireshark的方法进行抓包,这边不方便截图,还是就介绍简单的tcpdump把。

        tcpdump        

        tcpdump 是一个命令行工具,用于捕获和分析网络数据包。它可以在 Unix、Linux、Windows 等操作系统上使用。Tcpdump 通过在网络上捕获数据包,并使用特定的过滤器来筛选和分析这些数据包。这使得管理员可以监视网络流量,检测网络问题,分析网络性能,以及查找网络安全漏洞。

        使用tcpdump

1. 在使用tcpdump之前,我们要确定捕获的网络接口,我们以linux为例,使用命令ifconfig或者ip a来查看网络端口列表,如果运行这两个指令未找到的话需要先下载对应的库

//ubuntu运行ifconfig
apt-get install net-tools


//centos运行ip a
yum -y install initscripts
root@93da3b39d1f0:/# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 4650  bytes 6677565 (6.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3744  bytes 250267 (250.2 KB)
        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
        loop  txqueuelen 1000  (Local Loopback)
        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

2. 我们先使用help命令来看看都有哪些参数

root@93da3b39d1f0:/# tcpdump -h
tcpdump version 4.99.1
libpcap version 1.10.1 (with TPACKET_V3)
OpenSSL 3.0.2 15 Mar 2022
Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ --immediate-mode ] [ -j tstamptype ]
                [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
                [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
                [ --time-stamp-precision precision ] [ --micro ] [ --nano ]
                [ -z postrotate-command ] [ -Z user ] [ expression ]

简单的使用方式 

tcpdump -i interface -nn -w reputation.txt

//tcpdump -i eth0 -nn -w reputation.txt

        其中,-i interface 表示要捕获的网络接口,-nn 表示不将 IP 地址转换为主机名,-w    reputation.txt 表示将捕获的数据包保存到 reputation.txt 文件中。

3. 监听指定协议的数据

tcpdump -i eth0 -nn 'icmp'

来查看捕获的数据包的详细信息,监听icmp协议的数据,就是ping命令使用的协议。可以举一反三,如果要监听tcp或者udp协议的话,只需要修改icmp为tcp或者udp就行。

4. 监听指定的主机

tcpdump -i eth0 -nn 'host 192.168.1.2'

这样的话,192.168.1.2这台主机接收到的包和发送的包都会被抓取。

tcpdump -i eth0 -nn 'dst host 192.168.1.2'

如果加上dst,这边只目标为192.168.1.2,意思就是这台主机接收到的包才会被抓取。

$ tcpdump -i eth0 -nn 'src host 192.168.1.2'

如果这边是src,那么就是指的是这台主机发送的包才会抓取。

5. 监听指定的端口

tcpdump -i eth0 -nn -A 'port 80'

A 参数用于显示每个数据包的详细信息,包括数据包的源地址、目标地址、协议类型、数据包长度、序列号、确认号等等。使用 -A 参数可以更加详细地分析网络数据包,有助于发现潜在的网络问题和安全风险。

这边指定了port为80,那么就只能监听主机的80端口发送的所有数据包,用-A参数就可以查看详细信息更方便地进行查看信息。

当然,端口也可以和主机结合,比如

tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.2'

这样就可以监听80端口而且监听Ip为192.168.1.2发出的数据。

猜你喜欢

转载自blog.csdn.net/u013379032/article/details/131989639