我怀疑我国政府正在以某种方式销毁 TCP 连接上接收到的 ACK 数据包。
当我尝试在 80 以外的端口上与外部主机建立 TCP 连接时,TCP 握手将不会成功。我捕获了 pcap 文件 (gmail.pcap :http://www.slingfile.com/file/aWXGLLFPwb) 我发现我的计算机在发送 TCP SYN 后会收到 ACK,但它不会回复 SYN ACK,而是发送 RST。
我检查了来自外部主机的 ACK 数据包,但它似乎完全合法。序列号和我知道的所有标志都是正确的。有人能告诉我为什么我的电脑(一台 Linux 机器)会发送 RST 数据包吗?
答案1
尽管有传言称伊朗政府会不时破坏 HTTPS,但从您提供的数据来看,来自 173.194.32.22 的响应 SYN、ACK 数据包似乎只是到达了您的主机,但从未到达您的 TCP 堆栈。堆栈分别在一秒、两秒、四秒和八秒后重试发送 SYN - 但显然从未看到响应。
iptables
传入的 SYN、ACK 似乎已被过滤 -您的 INPUT 链中没有针对具有REJECT --reject-with tcp-reset
目标的 tcp 流量的规则?
答案2
从命令行:
openssl s_client -connect serveryourtryingtocontact.com:443
这应该可以验证您是否可以通过 SSL 连接到远程主机。也许可以对此流量进行 Wireshark 测试。
如果您没有 openssl,那么您可以apt-get install openssl
。
我们必须确定 RST 生成的位置。所有 SSL 站点都会发生这种情况吗?您是否直接连接到 NAT 网关?您是否使用代理?
使用此方法可以排除 SSL 堆栈的任何问题。