![如何使用 nfqueue 获取 tcp 数据包中的 syn 标志、ack 标志、序列号和确认号?](https://linux22.com/image/775314/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20nfqueue%20%E8%8E%B7%E5%8F%96%20tcp%20%E6%95%B0%E6%8D%AE%E5%8C%85%E4%B8%AD%E7%9A%84%20syn%20%E6%A0%87%E5%BF%97%E3%80%81ack%20%E6%A0%87%E5%BF%97%E3%80%81%E5%BA%8F%E5%88%97%E5%8F%B7%E5%92%8C%E7%A1%AE%E8%AE%A4%E5%8F%B7%EF%BC%9F.png)
我正在做一个项目,可以使用 netfilterqueue 重定向 tcp 中的网络流量(客户端发送到服务器 1 的数据包将被重定向到服务器 2),所以我需要根据数据包的 syn 和 ack 标志对数据包进行分类,并且我还需要修改数据包中的序列号和确认号,以便我可以说服服务器 2 与客户端建立连接。但我没有找到获取 tcp 数据包中的 syn、ack 标志和 seq、确认号的方法(不仅仅是显示数据包信息,还可以获取 syn 和 ack 标志以及 seq、确认号以打印和修改它们),如果有人能帮助我,我将不胜感激!
答案1
您需要解析 Netlink 消息中的 PAYLOAD 属性中包含的 IP 数据包。
您可以使用内核头来ip.h
解析tcp.h
数据包。