服务器不产生 syn-ack

服务器不产生 syn-ack

我有一个小程序,可以从 nfqueue 获取数据包。将 ip.dst 更改为我的服务器 dst(和 ttl),重新计算校验和并将数据包返回到 nfqueue。

服务器和客户端都是linux,服务器上运行着apache web服务器,监听80端口。我在客户端打开telnet,在80端口上伪造ip。数据包被我的程序修改后发送到服务器,但是目标服务器(新的dst ip)得到了syn,但是没有生成syn-ack(服务器也属于我,所以我可以看到它得到了校验和正确的syn,但是没有生成syn-ack)。

如果我做同样的事情,但使用真实服务器 ip 作为目标,则 tcp 握手是正确的(在这种情况下,我只更改 ttl 和校验和。我对 ttl 所做的更改只是一个测试,以查看我的校验和计算是否正常)。

我比较了这两个 syn,但没有发现区别。有什么想法吗?

附言:我看到了这个主题:服务器未发送 SYN/ACK 数据包来响应 SYN 数据包我将所有标志设置为相同的,但这没有帮助。

谢谢

答案1

由于目前缺乏有用的信息,我猜测您从 netfilter 中出队这个数据包为时已晚——在做出路由决策并将数据包扔进本地路由表之后。

尝试将您的 NFQUEUE 规则放入 mangle 表 PREROUTING 链中的 iptables 中。

相关内容