tcpdump,端口镜像 过滤 DNS流量 协议。traffic 。dump

本文介绍了如何使用tcpdump工具监听和捕获特定端口的数据流量,特别是通过`port domain`过滤器来专注于DNS查询和响应。示例展示了如何查看DNS通信过程,包括查询和应答报文的详细解析,以及tcpdump命令的不同实用实例,如抓取特定端口、HTTP、SMTP和SSH数据包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tcpdump监听数据

为了看清楚DNS通信的过程,下面我们将从主机1:192.168.0.141上运行host命令以查询主机www.jd.com对应的IP地址,并使用tcpdump抓取这一过程中LAN上传输的以太网帧。
具体的操作过程如下:

# tcpdump -i eth0 -nt -s 500 port domain

然后在新开一个命令行窗口,另外一个终端中输入下面的命令:

#host-t A www.jd.com

下图是host-t A www.jd.com输出的数据:



下图是tcpdump监听到的数据:


这一次执行tcpdump抓包时,我们使用“port domain”来过滤数据包,表示只抓取使用domain(域名)服务的数据包,即DNS查询和应答报文。tcpdump的输出如下:

IP 192.168.0.141.53511 > 192.168.0.1.53: 65362+ A? www.jd.com. (28)
IP 192.168.0.1.53 > 192.168.0.141.53511: 65362 2/0/0 CNAME www.jdcdn.com., A 14.152.71.1 (68)

这两个数据包开始的“IP”指出,它们后面的内容描述的是IP数据报。tcpdump以“IP地址.端口号”的形式来描述通信的某一端;以“>”表示数据传输的方向,“>”前面是源端,后面是目的端。可见,第一个数据包是测试主机1(IP地址是192.168.0.141)向其首选DNS服务器(IP地址是192.168.0.1.53)发送的DNS查询报文(目标端口53是

<think>我们正在讨论tcpdump的端口过滤功能。根据引用[2]的内容,tcpdump可以通过端口过滤规则来抓取特定端口的数据包。用户的问题:使用tcpdump抓包时如何过滤指定端口?根据引用[2]提供的信息,我们可以这样回答:1.抓取目标或源端口为指定端口(如80)的数据包:`tcpdumpport80`2.抓取源端口为指定端口(如22)的数据包:`tcpdumpsrc port22`3.抓取目标端口为指定端口(如443)的数据包:`tcpdump dstport443`另外,我们还可以结合其他条件进行过滤,比如指定网络接口、IP地址等。因此,我们可以给出如下示例:示例1:抓取所有经过eth0网卡的80端口(HTTP)的数据包命令:`tcpdump -i eth0 port80`示例2:抓取目标端口为443(HTTPS)的数据包命令:`tcpdump dstport443`示例3:抓取源端口为22(SSH)的数据包命令:`tcpdumpsrc port22`同时,我们也可以使用逻辑运算符组合条件,例如抓取端口22或80的数据包:命令:`tcpdump port22or port80`注意:tcpdump需要使用root权限运行(使用sudo)。此外,引用[3]提到了tshark(Wireshark的命令行工具)也可以进行过滤,但用户的问题是针对tcpdump的,所以我们主要介绍tcpdump。引用[4]展示了一个tcpdump抓包结果的例子,其中包含了端口信息(ssh和syam-webserver),这可以帮助用户理解抓包输出。因此,我们可以这样组织回答:</think>### 使用 tcpdump 过滤指定端口的抓包方法 根据引用[1][2]的内容,tcpdump 可以通过灵活的过滤规则实现端口过滤抓包。以下是具体操作方法和示例: #### 📌 基础过滤语法 ```bash tcpdump [选项] [过滤表达式] ``` #### 🔍 常用端口过滤规则 1. **抓取特定端口的所有流量** ```bash tcpdump port 80 # HTTP流量 tcpdump port 443 # HTTPS流量 tcpdump port 22 # SSH流量 ``` 2. **区分源端口和目标端口** ```bash tcpdump src port 53 # 源端口为53(DNS查询) tcpdump dst port 3306 # 目标端口为3306(MySQL) ``` 3. **组合端口过滤** ```bash tcpdump port 80 or port 443 # 同时抓HTTP+HTTPS tcpdump portrange 8000-8080 # 端口范围过滤 ``` 4. **结合协议过滤** ```bash tcpdump tcp port 22 # 只抓TCP协议的SSH流量 tcpdump udp port 53 # 只抓UDP协议DNS流量 ``` #### ⚙️ 实用命令示例 1. **抓取指定网卡的HTTP流量** ```bash tcpdump -i eth0 port 80 -w http.pcap ``` 2. **实时显示目标端口为443的流量** ```bash tcpdump -nn -v dst port 443 ``` 3. **抓取非标准端口的数据库流量** ```bash tcpdump port 5432 -s0 -c 100 -n ``` #### 📊 输出解析技巧 如引用[4]所示,抓包结果包含关键信息: ``` 11:16:50.531142 IP mao.ssh > 111.18.35.56.syam-webserver: Flags [P.], ... ``` - `src.port > dst.port` 表示通信方向 - `Flags` 显示TCP状态([S]=SYN, [P]=PSH, [F]=FIN) #### 🔧 高级组合过滤 ```bash # 抓取源IP为192.168.1.100且目标端口为80的流量 tcpdump src host 192.168.1.100 and dst port 80 # 排除SSH流量后抓所有22端口外的流量 tcpdump not port 22 ``` #### 💡 最佳实践建议 1. 使用 `-w` 保存抓包文件后用 Wireshark 分析(引用[1][3]) 2. 关键参数: - `-n`:禁用主机名解析(加速显示) - `-s0`:抓取完整数据包 - `-c 50`:限制抓包数量 3. 复杂过滤建议先用 `-v` 验证规则 > 完整过滤语法参考:`man pcap-filter`[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue31313

感谢打赏,继续分享,给您帮忙。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值