服务器不发送SYN + ACK

时间:2016-12-05 16:37:49

标签: sockets networking tcp

我有一个客户端和一个服务器。它们在同一台机器上运行时工作正常,但是当我尝试从网络外部连接客户端时,我的服务器将不会发送SYN+ACK数据包以响应SYN数据包。

使用Wireshark我可以看到来自客户端的SYN数据包,但我没有看到SYN+ACK数据包发送给客户端。

我找到了一些解决方案,可以关闭TCP窗口缩放和TCP时间戳,但这对我来说不起作用。另外,使用服务器端的netstat -ln命令,我可以看到

tcp        0      0 0.0.0.0:55000           0.0.0.0:*               LISTEN 

这是服务器端的Wireshark输出:

Server side wireshark print

以下是我的IP表:

IPTables

1 个答案:

答案 0 :(得分:1)

您必须评估三种可能性:

  1. 服务器中有一个iptables规则,在发送到TCP堆栈之前删除SYN
  2. 服务器中有一个iptables规则在发送
  3. 之前丢弃SYN-ACK
  4. 通过其他接口发送SYN-ACK的路径错误(我怀疑是这种情况,因为我希望使用接收SYN的相同接口)。