Linux tcpdump命令使用方法与实用抓包示例
{ "position ":0, "title ": "简介 ", "layout ": "doc-fullscreen ", "text ": " 简介nn在本实验中,你将学习如何使用强大的 `tcpdump` 命令在 Linux 系统上捕获和分析网络流量。`tcpdump` 是一个广泛使用的网络数据包分析工具,它允许
{"position":0,"title":"简介","layout":"doc-fullscreen","text":"## 简介nn在本实验中,你将学习如何使用强大的 `tcpdump` 命令在 Linux 系统上捕获和分析网络流量。`tcpdump` 是一个广泛使用的网络数据包分析工具,它允许你实时监控和检查网络数据包,是网络故障排除、安全分析和理解网络行为的宝贵工具。本实验将涵盖 `tcpdump` 的基本用法,包括捕获网络流量以及过滤输出以专注于特定类型的网络活动。nn> [Linux 命令速查表](https://linux-commands.labex.io/)n","need_verify":false,"has_solution":false},{"position":1,"title":"tcpdump 命令简介","layout":"doc-workbench-split","text":"## tcpdump 命令简介nn在本步骤中,你将学习 `tcpdump` 命令,这是一个强大的网络数据包分析工具,用于在 Linux 系统上捕获和分析网络流量。nn`tcpdump` 命令允许你实时监控和检查网络数据包,是网络故障排除、安全分析和理解网络行为的宝贵工具。nn让我们从在 Ubuntu 22.04 Docker 容器中安装 `tcpdump` 包开始:nn```bashnsudo apt-get updatensudo apt-get install -y tcpdumpn```nn示例输出:nn```nHit:1 https://archive.ubuntu.com/ubuntu jammy InReleasenGet:2 https://security.ubuntu.com/ubuntu jammy-security InRelease [110 k系统开始获取软件源信息:从 jammy-updates 拉取 InRelease(114 kB),从 jammy-backports 拉取 InRelease(99.8 kB),同时下载 jammy-security/main 的 amd64 Packages(2,276 kB)、jammy-updates/main 的 amd64 Packages(2,644 kB)以及 jammy-backports/main 的 amd64 Packages(11.3 kB)。总计获取 5,255 kB,耗时 2 秒,平均速度为 2,627 kB/s。
随后,系统完成了软件包列表读取、依赖关系树构建以及状态信息读取。
接下来将额外安装以下软件包:libpcap-dev、libpcap0.8、tcpdump。
建议可选安装的软件包是:tcpdump-dbg。
本次操作中,将新安装 3 个软件包:libpcap-dev、libpcap0.8、tcpdump;没有软件包被升级,也没有软件包被移除,另外 0 个软件包保持不升级。Need to get 521 kB of archives.nAfter this operation, 1,455 kB of additional disk space will be used.nDo you want to continue? [Y/n] YnGet:1 https://archive.ubuntu.com/ubuntu jammy/main amd64 libpcap0.8 amd64 1.10.1-5ubuntu1 [146 kB]nGet:2 https://archive.ubuntu.com/ubuntu jammy/main amd64 libpcap-dev amd64 1.10.1-5ubuntu1 [185 kB]nGet:3 https://archive.ubuntu.com/ubuntu jammy/main amd64 tcpdump amd64 4.99.1-3ubuntu1 [190 kB]nFetched 521 kB in 0s (3,837 kB/s)nSelecting previously unselected package libpcap0.8:amd64.n(Reading database ... 14289 files and directories currently installed.)nPreparing to unpack .../libpcap0.8_1.10.1-5ubuntu1_amd64.deb ...nUnpacking libpcap0.8:amd64 (1.10.1-5ubuntu1) ...nSelecting previously unselected package libpcap-dev:amd64.nPreparing to unpack .../libpcap-dev_1.10.1-5ubuntu1_amd64.deb ...nUnpacking libpcap-dev:amd64 (1.10.1-5ubuntu1) ...nSelecting previously unselected package tcpdump.nPreparing to unpack .../tcpdump_4.99.1-3ubuntu1_amd64.deb ...nUnpacking tcpdump (4.99.1-3ubuntu1) ...nSetting up libpcap0.8:amd64 (1.10.1-5ubuntu1) ...nSetting up libpcap-dev:amd64 (1.10.1-5ubuntu1) ...nSetting up tcpdump (4.99.1-3ubuntu1) ...nProcessing triggers for man-db (2.10.2-1) ...nProcessing triggers for libc-bin (2.35-0ubuntu3.1) ...n```nn现在我们已经安装了 `tcpdump`,让我们探索一些基本用法:nn```bashnsudo tcpdump -i any -nn```nn示例输出:nn```ntcpdump: verbose output suppressed, use -v or -vv for full protocol decodenlistening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytesn16:25:32.792941 IP 172.17.0.2 > 172.17.0.1: ICMP echo request, id 1, seq 1, length 64n16:25:32.793005 IP 172.17.0.1 > 172.17.0.2: ICMP echo reply, id 1, seq 1, length 64n16:25:33.792998 IP 172.17.0.2 > 172.17.0.1: ICMP echo request, id 1, seq 2, length 64n16:25:33.793058 IP 172.17.0.1 > 172.17.0.2: ICMP echo reply, id 1, seq 2, length 64n^Cn4 packets capturedn4 packets received by filtern0 packets dropped by kerneln```nn`-i any` 选项告诉 `tcpdump` 捕获所有可用网络接口上的流量,而 `-n` 选项则禁止对 IP 地址进行 DNS 解析,这可能会减慢捕获过程。nn此命令将开始捕获网络流量并实时显示捕获的数据包。你可以按 `Ctrl+C` 停止捕获。n","need_verify":true,"has_solution":false},{"position":2,"title":"使用 tcpdump 捕获网络流量","layout":"doc-workbench-split","text":"## 使用 tcpdump 捕获网络流量nn在本步骤中,你将学习如何使用 `tcpdump` 命令捕获网络流量并分析捕获的数据包。nn让我们从捕获默认网络接口上的所有网络流量开始:nn```bashnsudo tcpdump -i any -c 10n```nn示例输出:nn```ntcpdump: verbose output suppressed, use -v or -vv for full protocol decodenlistening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytesn16:29:56.832591 IP 172.17.0.2 > 172.17.0.1: ICMP echo request, id 1, seq 3, length 64n16:29:56.832648 IP 172.17.0.1 > 172.17.0.2: ICMP echo reply, id 1, seq 3, length 64n16:29:57.832607 IP 172.17.0.2 > 172.17.0.1: ICMP echo request, id 1, seq 4, length 64n16:29:57.832663 IP 172.17.0.1 > 172.17.0.2: ICMP echo reply, id 1, seq 4, length 64n16:29:58.832617 IP 172.17.0.2 > 172.17.0.1: ICMP echo request, id 1, seq 5, length 64n16:29:58.832673 IP 172.17.0.1 > 172.17.0.2: ICMP echo reply, id 1, seq 5, length 64n16:29:59.832628 IP 172.17.0.2 > 172.17.0.1: ICMP echo request, id 1, seq 6, length 64n16:29:59.832684 IP 172.17.0.1 > 172.17.0.2: ICMP echo reply, id 1, seq 6, length 64n17:00:00.832638 IP 172.17.0.2 > 172`-c 10` 这个选项的作用很直接:告诉 `tcpdump` 最多只抓取 10 个数据包,抓满后自动退出。
除了直接查看,你还可以先把抓到的数据包保存到文件里,后面再慢慢分析:
```bash
sudo tcpdump -i any -w network_capture.pcap
```
这条命令会开始捕获网络流量,并把结果写入名为 `network_capture.pcap` 的文件。需要停止时,按 `Ctrl+C` 即可。
抓包完成后,可以用 Wireshark 这类网络协议分析工具来查看内容。当然,也可以继续用 `tcpdump` 直接读取这个文件:
```bash
sudo tcpdump -r network_capture.pcap
```
执行后,就会显示 `network_capture.pcap` 文件中的数据包内容。
## 使用 tcpdump 过滤网络流量
这一部分的重点,是学会让 `tcpdump` 按条件筛选流量,比如根据 IP 地址、端口或者协议来过滤。
先从最常见的 HTTP 流量抓取开始:
```bash
sudo tcpdump -i any -c 10 tcp port 80n```nn示例输出:nn```ntcpdump: verbose output suppressed, use -v or -vv for full protocol decodenlistening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytesn17:04:01.832648 IP 172.17.0.2.49154 > 172.17.0.1.80: Flags [S], seq 3569349168, win 64240, options [mss 1460,sackOK,TS val 1000 ecr 0,nop,wscale 7], length 0n17:04:01.832702 IP 172.17.0.1.80 > 172.17.0.2.49154: Flags [S.], seq 2662318800, ack 3569349169, win 65160, options [mss 1460,sackOK,TS val 1000 ecr 1000,nop,wscale 7], length 0n17:04:01.832736 IP 172.17.0.2.49154 > 172.17.0.1.80: Flags [.], ack 1, win 502, length 0n17:04:01.832747 IP 172.17.0.2.49154 > 172.17.0.1.80: Flags [P.], seq 1:74, ack 1, win 502, length 73n17:04:01.832766 IP 172.17.0.1.80 > 172.17.0.2.49154: Flags [.], ack 74, win 512, length 0n17:04:01.832774 IP 172.17.0.1.80 > 172.17.0.2.49154: Flags [P.], seq 1:1449, ack 74, win 512, length 1448n17:04:01.832785 IP 172.17.0.2.49154 > 172.17.0.1.80: Flags [.], ack 1449, win 502, length 0n17:04:01.832793 IP 172.17.0.2.49154 > 172.17.0.1.80: Flags [F.], seq 74, ack 1449, win 502, length 0n17:04:01.832807 IP 172.17.0.1.80 > 172.17.0.2.49154: Flags [F.], seq 1449, ack 75, win 512, length 0n17:04:01.832815 IP 172.17.0.2.49154 > 172.17.0.1.80: Flags [.], ack 1450, win 502, length 0n10 packets capturedn10 packets received by filtern0 packets dropped by kerneln```nn`tcp port 80` 过滤器告诉 `tcpdump` 仅捕获 TCP 端口 80 上的数据包,这是 HTTP 流量的标准端口。nn你也可以通过 IP 地址进行过滤:nn```bashnsudo tcpdump -i any -c 10 host 172.17.0.2n```nn这将捕获与 IP 地址 `172.17.0.2` 相关的前 10 个数据包。nn此外,你还可以组合多个过滤器:nn```bashnsudo tcpdump -i any -c 10 tcp port 80 and host 172.17.0.2n```nn这将捕获与 IP 地址 `172.17.0.2` 相关的 HTTP 流量的前 10 个数据包。n","need_verify":true,"has_solution":false},{"position":4,"title":"总结","layout":"doc-fullscreen","text":"## 总结nn在本实验中,你将学习如何使用 `tcpdump` 命令,这是一个强大的网络数据包分析工具,用于在 Linux 系统上捕获和分析网络流量。你将首先在 Ubuntu 22.04 Docker 容器中安装 `tcpdump` 包。然后,你将学习如何使用 `tcpdump` 捕获网络流量,包括根据源和目标 IP 地址、端口号和协议等各种条件过滤捕获的数据。通过本实验,你将深入了解如何利用 `tcpdump` 进行网络故障排除、安全分析和理解网络行为。nn> [Linux 命令速查表](https://linux-commands.labex.io/)n","need_verify":false,"has_solution":false}
来源:https://labex.io/zh/tutorials/linux-linux-tcpdump-command-with-practical-examples-422952
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。
相关推荐
补充同频道和同主题内容,方便继续浏览更多相关内容。
同类最新
继续查看同栏目最近更新的文章。
DDoS攻击的三大主要形式:原理、特征与防御重点
DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。
如何有效预防和缓解DDoS攻击:5大核心策略详解
面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。
DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。
常见DDoS攻击类型详解:原理、特征与防御策略
本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。
如何有效抵御DDOS攻击:4种核心防护方案解析
面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。
