在Linux中,如何追踪TCP连接和网络数据包,如使用tcpdump或Wireshark?

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 在Linux中,如何追踪TCP连接和网络数据包,如使用tcpdump或Wireshark?

在Linux环境中,追踪TCP连接和网络数据包主要通过使用命令行工具tcpdump和图形化网络分析软件Wireshark来实现。以下是详细的操作步骤:

1. 使用 tcpdump

tcpdump 是一个强大的命令行网络抓包工具,用于实时捕获和分析网络流量。以下是如何使用 tcpdump 追踪TCP连接和数据包:

1. 基本用法
tcpdump [options] [expression]
  • 选项
  • -i interface:指定监听的网络接口(如 eth0enp0s3any)。
  • -n:禁止DNS反向解析,显示IP地址和端口号而非主机名和服务名。
  • -nn:同时禁止IP和端口的反向解析。
  • -v-vv:增加详细输出级别。
  • -w file:将捕获的数据包保存到指定的文件(.pcap 格式),以便用 Wireshark 等工具后续分析。
  • -c count:捕获指定数量的数据包后停止。
  • -B buffer_size:设置内核缓冲区大小,以适应高流量环境。
  • 表达式(filter expression):
  • tcp:仅捕获TCP协议的数据包。
  • port numberport number1,number2:筛选特定端口的流量。
  • host hostsrc hostdst host:按源或目的主机IP地址过滤。
  • net networksrc netdst net:按源或目的网络地址过滤。
  • tcp flags [flaglist]:筛选特定TCP标志位(如SYN、ACK、FIN等)的数据包。
  • 更多复杂的过滤规则请参阅 man tcpdump
2. 示例
  1. 监听所有TCP流量
sudo tcpdump -i any tcp
  1. 捕获特定端口(如80、443)的TCP数据包
sudo tcpdump -i any 'tcp and (port 80 or port 443)'
  1. 捕获特定主机间(如192.168.1.1与10.0.0.1)的TCP流量
sudo tcpdump -i any 'tcp and (host 192.168.1.1 and host 10.0.0.1)'
  1. 仅捕获TCP SYN和SYN-ACK包(追踪TCP连接建立过程):
sudo tcpdump -i any 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'
  1. 将捕获的数据包保存到文件以供Wireshark分析
sudo tcpdump -i any -w capture_file.pcap tcp
2. 使用 Wireshark

Wireshark 是一款流行的跨平台图形化网络封包分析工具,提供了丰富的过滤、解析和数据显示功能。以下是如何使用 Wireshark 追踪TCP连接和数据包:

1. 基本步骤
  1. 启动 Wireshark
  • 打开Wireshark应用程序。
  • 选择要监听的网络接口。
  1. 开始捕获
  • 点击“开始”按钮(或键盘快捷键Ctrl+E)开始捕获网络流量。
  1. 设置过滤器
  • 在捕获过程中或捕获完成后,在主界面上方的“捕获过滤器”栏输入类似tcp的过滤条件来只显示TCP数据包。
  • 或者在捕获结束后,在下方的“显示过滤器”栏输入更详细的过滤条件(如端口、主机等)来筛选已捕获数据包。
  1. 分析数据包
  • 浏览数据包列表,双击某个数据包以查看其详细分层结构和协议字段。
  • 使用“Follow TCP Stream”功能(右键点击数据包,选择“Follow” → “TCP Stream”)来重组特定TCP连接的完整数据流。
  1. 导出或保存捕获结果
  • 若需保存分析结果,可选择“文件” → “保存”或“另存为”,保存为.pcap.pcapng格式。
2. 示例
  1. 追踪特定TCP连接
  • 捕获数据包后,使用“显示过滤器”(如 tcp.stream eq X,其中X是TCP流编号)筛选特定连接。
  • 或者直接在捕获过程中设置捕获过滤器,如 host 192.168.1.100 and port 80,仅捕获特定主机和端口的流量。
  1. 分析TCP序列号、窗口大小等细节
  • 双击一个TCP数据包,展开“TCP”协议层,查看序列号、确认号、窗口大小等字段,理解TCP连接的状态和数据传输过程。
  1. 检测网络异常
  • 使用Wireshark的内置分析功能(如“专家信息”面板)或手动检查数据包,识别重传、乱序、超时等TCP连接问题。

综上所述,tcpdump 和 Wireshark 相结合,能够有效地追踪TCP连接和网络数据包,帮助诊断网络问题、分析协议行为或安全审计。tcpdump 适用于快速抓包和初步过滤,而 Wireshark 提供了更直观、详尽的分析界面和高级功能,适用于深度分析和问题排查。

相关文章
|
5天前
|
安全 Linux 网络安全
Web安全-Linux网络协议
Web安全-Linux网络协议
23 4
|
5天前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
10 1
|
1天前
|
网络协议 Linux
Linux 网络配置
了解基本命令与权限后,如何让Linux系统联网?可通过编辑`/etc/sysconfig/network-scripts/`下的`ifcfg-ethX`文件配置网卡,其中`ethX`代表第X块网卡。对于DHCP自动获取或静态IP,需设置`BOOTPROTO`参数,并指定IP、子网掩码和网关等。配置完成后,运行`/etc/init.d/network restart`重启网络。DNS可在`/etc/resolv.conf`中设置,添加`nameserver`行即可,无需重启网卡。配置好后,可用`ifconfig`查看IP信息,并通过远程工具如SecureCRT连接服务器。
6 0
|
8天前
|
域名解析 负载均衡 网络协议
Linux网络接口配置不当所带来的影响
总而言之,Linux网络接口的恰当配置是保证网络稳定性、性能和安全性的基础。通过遵循最佳实践和定期维护,可以最大程度地减少配置错误带来的负面影响。
32 0
|
17天前
|
Linux 网络安全 网络架构
如何处理在学校Linux连接不上服务器
如何处理在学校Linux连接不上服务器
32 0
|
21天前
|
Windows
【Azure 环境】在Windows环境中抓取网络包(netsh trace)后,如何转换为Wireshark格式以便进行分析
【Azure 环境】在Windows环境中抓取网络包(netsh trace)后,如何转换为Wireshark格式以便进行分析
|
21天前
|
存储 Linux 网络安全
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
|
21天前
|
存储 Linux 网络安全
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
|
21天前
|
网络协议 Linux Shell
【Azure 应用服务】App Service For Linux 中安装paping, 用于验证从App Service向外请求的网络连通性
【Azure 应用服务】App Service For Linux 中安装paping, 用于验证从App Service向外请求的网络连通性
|
22天前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel)
【Azure Redis 缓存】Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel)