在开发环境中使用 RawCap 和 Wireshark 排查本地回路地址
如何使用 RawCap 和 Wireshark 排查本地网络请求中的404错误
开发微服务应用时,正确配置网络请求的转发至关重要。本文将通过一个具体示例来展示如何使用 RawCap 和 Wireshark 来监控和分析本地回路请求,并排查导致 HTTP 404 错误的可能原因。
背景
在本例中,用户的浏览器请求经过多个服务处理后最终返回了404错误。然而, Wireshark 无法抓取本地回路请求。
- 浏览器请求(或者postman):
http://localhost:7777/api/user/login?username=admin&password=123456
- NGINX 处理:匹配以
api
开头的后端请求,并在转发前去掉api
前缀,将请求转发至微服务监听端口8086:http://localhost:8086/user/login?username=admin&password=123456
- Spring Cloud Gateway 处理:接收来自 NGINX 的请求,并通过负载均衡策略将请求转发至后端服务。
- 后端服务:理应处理
http://localhost:8085/user/login?username=admin&password=123456
,但返回了404错误。
使用 RawCap 捕获本地回路请求
-
下载和运行 RawCap:
- 访问 NETRESEC官网 下载 RawCap.exe。
- 以管理员身份运行 RawCap,选择监听127.0.0.1接口,并指定输出文件名(例如
localhost_traffic.pcap
)。
RawCap.exe 127.0.0.1 localhost_traffic.pcap
-
生成请求:
- 发起引起404错误的请求。
-
停止 RawCap 捕获:
- 捕获足够的数据后,使用 Ctrl+C 停止 RawCap。
使用 Wireshark 分析 pcap 文件
-
打开 Wireshark 加载 pcap 文件:
- 启动 Wireshark, 打开
localhost_traffic.pcap
文件。
- 启动 Wireshark, 打开
-
分析请求和响应:
- 应用 HTTP 过滤器 (
http
) 查看所有 HTTP 请求和响应。 - 检查请求是否正确经过各阶段处理,尤其关注 URL 的变化和传递参数。
- 应用 HTTP 过滤器 (
-
深入问题排查:
- 检查 URL 重写是否正确,确认 NGINX 是否正确去除了
api
前缀。 - 确认网关是否正确处理并转发至后端服务,后端服务是否因为路径或参数错误返回404。
- 检查 URL 重写是否正确,确认 NGINX 是否正确去除了
下图是RawCap 捕获的本地请求:
观察到请求已经成功地被 NGINX 处理,并且通过移除前缀 'api' 后正确地转发到了上游的网关服务器(端口:8086)。然而,我们发现了问题所在:请求并没有按照预期路由到后端服务的端口8085,而是从网关的端口8086错误地回环到了端口111354。这表明问题主要集中在网关的路由配置上。
结论
通过结合使用 RawCap 和 Wireshark,我们可以详细追踪请求在本地网络环境中的流转过程,从而定位问题所在。这种方法可以帮助开发人员和系统管理员更准确地诊断并修复网络配置相关的问题,特别是涉及多个服务或层的复杂请求链路。
希望本文能帮助你更好地理解如何利用网络监控工具来诊断和解决开发中的网络问题。如果你有任何疑问或需要进一步的帮助,请在评论中提出。