用Wireshark匹配域名,最直接的方法是用DNS过滤器找到域名解析出的IP地址,再用ip.host或http.host过滤器锁定该IP的通信流量,两步组合,精准命中目标域名。
为什么直接过滤域名经常抓不到包
很多人在Wireshark里输入域名,发现什么都过滤不出来,这不是Wireshark不行,而是因为网络传输本质上只认IP地址,不认域名,当你的电脑访问某个网站时,系统会先把域名交给DNS服务器解析成IP,之后的HTTP、HTTPS、TCP连接全指向IP,域名信息只在DNS查询那一刻出现过。
行业共识认为,多数抓包工具对域名的匹配都依赖DNS层或应用层头部的Host字段,无法在IP层直接识别域名,所以你要做的就是:先抓DNS拿IP,再用IP反向匹配流量,这是最稳妥的路径。
Wireshark怎么过滤域名:两种核心过滤器语法
抓DNS请求和响应,定位域名解析结果
适用于还没建立连接的场景,比如你想知道某个域名当前解析到什么IP,显示过滤器表达式是:
dns.qry.name == "example.com"
应用过滤器后,列表里只显示包含example.com的DNS查询和响应包,点击DNS响应包,在下方详情面板展开Domain Name System部分,找到Answers字段,里面列出了该域名对应的IP地址,可能同时有A记录和AAAA记录,IPv4和IPv6都会显示,取你要用的那一个。
不过这个方法有个盲区:如果系统已经缓存了DNS结果,就不会重复发起查询,你打开Wireshark后可能看不到任何对应包,遇到这种情况,可以先用ipconfig/flushdns(Windows)或sudo dscacheutil -flushcache(macOS)清空本地缓存,再重新触发访问。
抓已解析域名的实际业务流量
拿到IP后,筛选该IP的所有通信包:
ip.host == 1.2.3.4
这条过滤器把源IP或目的IP等于1.2.3.4的包全部显示出来,实际使用中建议在过滤器前加个前提:
ip.host == 1.2.3.4 && tcp
排除ARP、ICMP等无关类型,直接看TCP层行为,更容易找到HTTP请求或TLS握手,如果目标是HTTP网站,还可以用Host字段做应用层匹配:
http.host == "example.com"
但HTTPS流量经过加密后,Host字段也被TLS层藏起来了,所以对于现在的主流网络环境,
靠ip.host依然是通用解法,wireshark筛选域名对应ip,本质上就是走这个两步匹配的路线。
对了,Wireshark还有一条特殊语法http.host和tls.handshake.extensions_server_name也能匹配域名,分别对应HTTP明文和TLS握手阶段的SNI字段。
tls.handshake.extensions_server_name == "example.com"
这条对大部门的HTTPS网站有效,因为TLS握手过程中客户端会明文发送SNI,也就是目标域名,Wireshark抓包可以通过这个字段直接匹配域名,省略查IP的步骤。
实用案例:抓取访问某个域名的完整通信过程
假设你现在要排查一个网站的访问异常,目标域名是api.demo.com,完整操作路径如下:
- 打开Wireshark,选择正确的网卡。有线连接选以太网,无线连接选WLAN,不确定就选“全部接口”先看数据量再筛选
- 先在过滤栏输入
dns.qry.name contains "demo.com",回车确认过滤生效 - 清空系统DNS缓存,然后在命令行执行
ping api.demo.com,这一步会强制触发一次DNS查询 - 回到Wireshark窗口,找到DNS响应包,记下Answers里的IP地址
- 把过滤器改成
ip.host == 上述IP,回车,现在看到的就是你的电脑和该域名服务器之间的所有通信包 - 为了更聚焦,可以追加条件:
ip.host == 1.2.3.4 && http或者&& tls,根据你的业务协议选择
这个方法适用于网站打不开、接口超时、连接被重置等常见网络故障,你在界面下方还能看到Follow HTTP Stream选项,右键任意HTTP包选择“追踪流”,直接看到请求头和响应体的原始数据。
Wireshark域名匹配的显示过滤器对照表
| 场景 | 过滤器表达式 | 说明 |
|---|---|---|
| DNS查询匹配域名 | dns.qry.name == "example.com" |
精确匹配完整域名 |
| DNS查询模糊匹配 | dns.qry.name contains "example" |
匹配包含关键词的域名 |
| 过滤指定域名所有流量 | ip.host == 1.2.3.4 |
前提是该IP已从DNS响应获取 |
| HTTP流量按域名过滤 | http.host == "example.com" | 只对明文HTTP有效 |
| HTTPS按SNI过滤 | tls.handshake.extensions_server_name == "example.com" | 在TLS握手阶段提取域名 |
命令行方式:tshark匹配域名的写法
有些人习惯在Server环境排查问题,没有图形界面,这时候可以用Wireshark自带的tshark命令行工具,效果一样但操作更轻量。
抓取DNS查询,输出到屏幕:
tshark -i eth0 -Y "dns.qry.name contains demo.com"
抓取该域名解析出的IP流量,实时输出关键字段:
tshark -i eth0 -Y "ip.host == 1.2.3.4" -T fields -e ip.src -e ip.dst -e tcp.port
也可以不加过滤条件直接抓包保存到文件,后续慢慢分析:
tshark -i eth0 -w capture.pcap
离线分析时用-r读文件,配合-Y加过滤规则,tshark和图形界面共享同一套显示过滤器语法,会写一条就会写另一条。
匹配域名时常见坑:HTTPS和CDN导致的迷惑行为
处理实际抓包问题的时候,有几个现象经常让人绕弯路,第一个是HTTPS流量看不到Host字段,很多教程让人直接过滤http.host,但对于现代网站基本无效,解决办法就是用SNI字段或DNS先解析IP。
第二个坑是CDN节点导致IP不固定,访问同一个域名,不同时间解析出来的IP可能完全不同,甚至同一个时间点也会返回多个A记录,这种情况下,建议用域名前缀或SNI过滤的方式,而不是把IP写死。
第三个情况是域名涉及下级子域名,比如api.demo.com和www.demo.com指向不同IP,用dns.qry.name contains "demo.com"能同时捕捉这两个子域的DNS查询,但用ip.host筛选时就只能逐IP匹配了。
反向匹配:用IP反查域名
排查流量时,经常看到一个陌生IP发来大量数据包,你想知道这是哪个域名,方式是选中该IP所在的数据包,右键选择View > Resolve Name,Wireshark会尝试进行反向DNS查询,把IP解析成对应的域名,但这一步依赖你要访问的DNS服务器具备PTR记录,很多时候解析不出来,更可靠的方法是直接在DNS查询流量里找:
dns.a == 1.2.3.4
这条过滤器可以倒查哪些DNS响应包含了指定IP,从而确定是哪个域名解析到该地址,这个思路在做恶意流量溯源时特别有用。
多域名同时匹配的写法
如果你要同时跟踪几个域名的流量,Wireshark支持逻辑或操作:
dns.qry.name == "a.com" || dns.qry.name == "b.com"
对于IP层面的多域名匹配类似处理:
ip.host == 1.1.1.1 || ip.host == 2.2.2.2
但这样写容易漏匹配,因为同一IP可能承载多个域名(虚拟主机场景),更稳妥的方式还是结合tls.handshake.extensions_server_name来判断具体访问的是哪个站点,统计显示,相当一部分网站服务器配置了多域名共用一个IP的机制,只看IP容易张冠李戴。
Wireshark匹配域名常见问题
Q:为什么在Wireshark里过滤域名,显示为空?
大多数情况是因为Wireshark在IP层无法识别域名符号,只能用DNS查询或应用层字段匹配,先确认系统有没有发起DNS请求,没发起的话就得手动触发或清缓存重试。
Q:能不能用一条过滤器直接匹配“某个域名的所有HTTP/HTTPS包”?
可以,但需要满足对应条件,HTTP用http.host == "example.com",HTTPS用tls.handshake.extensions_server_name == "example.com",后者只在TLS握手时有值,建立连接后的加密传输阶段是没有域名字段的,完整抓一个HTTPS会话的所有包,还是要靠IP来匹配。
Q:手机App抓包时,wireshark看不到DNS请求,是什么原因?
手机流量经过代理时,DNS解析由代理服务器完成,设备本身可能只发送了CONNECT请求,这种情况下用http.host或tls.handshake.extensions_server_name过滤更合适,部分Android手机默认开启私有DNS,导致DNS查询走TLS加密,Wireshark无法识别明文DNS包。
用Wireshark匹配域名,记住核心逻辑:域名只是人类记忆标签,网络通信认的是IP。 先通过DNS过滤器解析出目标IP,再用同一IP反查流量,配合SNI和Host字段做辅助判断,就能完整还原一次域名访问的整个生命周期,这条思路不仅适用于Wireshark,同类的抓包分析工具也都遵循同样的规则,html
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/667033.html





