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匹配。
➡️