gpt4 book ai didi

Linux TCP 接受无 SYN|ACK

转载 作者:可可西里 更新时间:2023-11-01 02:54:23 27 4
gpt4 key购买 nike

我正在尝试编写一个在 Linux 上运行的 TCP 透明代理。

我想在收到传入连接后,启动相应的传出连接,但仅在传出连接成功时才接受 (SYN|ACK) 传入连接。

TCP_DEFERRED_ACCEPT 没有按照我的意愿行事——它总是发送 SYN|ACK。

问题是:如何使用 Linux 套接字 API 接受 TCP 连接,但延迟 SYN|ACK?

最佳答案

您可以在 Linux 上做到这一点,但不能通过套接字 API。您将使用 NFQUEUE 目标,它允许您将一些数据包重定向到用户空间并从您的程序中决定它们的命运。

显然,您仍然需要在用户空间中解析数据包,但是搜索一些 TCP 标志应该不会那么困难,并且不需要完整的 TCP 堆栈。这样 Linux 仍然可以完成整个网络工作。

在您的情况下,您似乎有可能同时使用 NFQUEUE 和经典套接字 API。第一个会给你早期的决定,后者是 TCP 流数据访问。虽然我从未尝试过。

参见 https://home.regit.org/netfilter-en/using-nfqueue-and-libnetfilter_queue/例如。

关于Linux TCP 接受无 SYN|ACK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28932015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com