Tcpdump 从 TCP_option_address 中根据真实 IP 过滤

💡 原文中文,约1700字,阅读约需5分钟。
📝

内容提要

最近进行了一次集群迁移,更新了DNS,但发现仍有一部分请求到老集群,原因是客户端用了长链接,没有根据新的DNS记录发送请求。通过架构分析,最终通过LVS中的TOA模块,在Nginx上过滤TCP的SYN包,获取用户真实IP,从而找到调用来源的团队。

🎯

关键要点

  • 最近进行了集群迁移并更新了DNS,但仍有请求到老集群。
  • 问题原因是客户端使用了长链接,没有根据新的DNS记录发送请求。
  • 架构中使用LVS作为四层代理,Nginx作为七层代理。
  • Nginx转发请求到后端real server,但无法识别请求来源团队。
  • 用户真实IP在特殊header中,需通过tcpdump获取HTTP内容。
  • Nginx后面的LVS导致tcpdump捕获到的是LVS地址而非用户真实地址。
  • LVS的TOA模块在SYN握手阶段记录用户真实IP。
  • 需要过滤TCP的SYN包以找到用户真实IP。
  • tcpdump命令需过滤TCP option字段以匹配真实IP。
  • tcpoption对tcpdump不被理解,需转成hex匹配。
➡️

继续阅读