我怀疑我的国家政府正在以某种方式销毁 TCP 连接上收到的 ACK 数据包。
当我尝试在 80 以外的端口上与外部主机建立 TCP 连接时,TCP 握手将不会成功。我捕获了 pcap 文件(gmail.pcap:http ://www.slingfile.com/file/aWXGLLFPwb ),我发现我的计算机在发送 TCP SYN 后会收到 ACK,但它不会回复 SYN ACK,而是发送一个 RST。
我检查了来自外部主机的 ACK 数据包,但它似乎完全合法。序列号和我知道的所有标志都是正确的。谁能告诉我为什么我的计算机(Linux 机器)会发送 RST 数据包?
我遇到了最奇怪的问题:有时,只有在非常特定的请求上,Web 服务器才会在发送 FIN 数据报后向客户端发送 RST。首先,对设置的描述:
服务器上的 HTTP 日志表明客户端有时会发出多个后续相同的请求。客户端只是在收到来自服务器的 RST 数据包后重新尝试。
我附上了几个 tcpdumps:
Good1 和 Good3 之间的区别在于从服务器发送 ACK 的顺序,ACK'ing 客户端的请求。该请求分为 2 个部分。一个用于 HTTP 标头,第二个用于包含空 JSON 对象的正文:"{}"
.
在 Good1 中,服务器在第二个请求到达后确认这两个请求。在 Good3 中,服务器在请求到达时立即确认每个请求。并不是说它应该有所作为。
请注意,在所有“坏”会话中,服务器在收到每个请求后立即对其进行确认。其他几个糟糕的会话中的情况是一样的,但不包括在内。奇怪的是,在“Good3”中也表现出相同的行为,使得这种观察有点毫无意义。我不明白这有什么关系。
最重要的是,我无法确定好的和坏的会话之间的显着差异。
我的问题是:为什么要生成这些 RST?
或者至少:我如何进一步调试这个,或者在这里提供更多有用的信息?
编辑我学到的两个新事实:
tcp_rfc1337 设置似乎有解决 TIME-WAIT 暗杀的方法。
第一个问题是新连接中可能会错误地接受旧的重复数据,导致发送的数据损坏。
第二个问题是连接可能会变得不同步并进入 ACK 循环,因为旧的重复数据包进入新连接,这将变得不同步。
第三个也是最后一个问题是旧的重复数据包可能会错误地进入新建立的连接并杀死新连接。
从我读到的内容来看,为了解决问题,设置的作用是在套接字处于 TIME-WAIT 状态时忽略 RST(重置)数据包。
那么,为什么默认情况下不启用此设置?使用这个有什么缺点?
当我研究如何阻止 SYN 泛洪攻击时,我实际上了解了这个变量。您认为此设置有助于阻止它们吗?
最近我一直在阅读不同的拒绝服务方法。一种突出的方法是 SYN 泛洪。我是一些不太好的论坛的成员,有人正在出售一个 python 脚本,该脚本会使用带有欺骗 IP 地址的 SYN 数据包对服务器进行 DoS。
但是,如果您使用欺骗性 IP 地址向服务器发送 SYN 数据包,则目标服务器会将 SYN/ACK 数据包返回到被欺骗的主机。在这种情况下,被欺骗的主机是否不会返回 RST 数据包,从而取消 75 秒的长时间等待,并最终在尝试对服务器进行 DoS 攻击时失败?
编辑:如果我不使用 SYN cookie 呢?
我目前有一个 RAID 10(6x 2TB)在华硕 H170M-PLUS(英特尔 H170 芯片组)上的 Ubuntu 16.04 上运行在英特尔 IMSM 容器(“fakeraid”,固件 RAID)中。
我正在使用 MOBO 上的所有 6 个 SATA 端口,并想添加一个 PCIe JBOD 控制器并将其上的磁盘添加到 IMSM 容器中。
这是一种可能性吗?英特尔快速存储固件是否会添加来自不同控制器的磁盘?
最近有人决定向我展示他发现的使用 SYN/TCP 的新拒绝服务方法的 POC。我认为这完全是胡说八道,但在向他解释了 SYN-SYN/ACK-RST 之后,他让我无语。他告诉我“如果你用来欺骗发送 SYN/ACK 数据包的服务器无法接收 RST 数据包怎么办?”
我不知道。他声称服务器将继续尝试发送 SYN/ACK 数据包,并且数据包率将继续增加。
有没有道理呢?谁能详细说明一下?
显然,它的工作方式是这样的:
他将 SYN 数据包的 IP 欺骗到目标的 IP。然后他将 SYN 数据包发送到一些随机服务器
他们都用他们的 SYN/ACK 数据包回复目标 IP,当然
目标用 RST 响应,正如我们所知,
但他以某种方式阻止目标发送 RST 或保持随机服务器处理它
有了这个,显然服务器将继续尝试发送 SYN/ACK 数据包,从而产生某种“滚雪球”效应。
我试图更好地理解网络中立性辩论。一些人指责 ISP 向终端主机发送 RST 数据包以阻止 BitTorrent 流量。这到底是什么意思?
我对 HTTP 和 TCP/IP 有基本的了解(我是一名程序员),但服务器管理我绝对不是专家。谢谢。