TCP handshake fails. What causes an ACK to go missing?

932 Views Asked by At

The goal is to make an http request from the client browser to my server. Simple stuff; however I'm hitting a wall with the networking portion. In order to expose my server to WAN I have used one of my public IPs and NAT to translate to the private ip of my server on inbound traffic and to my public IP on outbound traffic.

The issue is that I can't make a connection. Specifically I can't get the last part of the TCP handshake. Using a test setup with Wireshark on the client and server I can see that the client send the SYN -> the server receives the SYN -> the server sends a SYN/ACK -> the client receives a SYN/ACK -> the the client send an ACK -> the server DOES NOT receive the ACK. It waits for a moment then does a retransmission. Eventually resetting.

I have tried adding various firewall rules even though I don't think it could be the firewall because the first packets make a successful round trip.

I've turned windows firewall off(the server)

I've tried disabling TCP checksum offloading

I've looked for network anti virus settings on the server and on the sonic wall(the router)

I would expect the the tcp connection to complete. I can't for the life of me think of a reason why the ACK would consistently go missing.

That is another thing. The behavior is consistent.

pings also work just fine.

NOTE: The server is actually a VM and the physical server that manages it is in my network.

Any guidance on what to try and where to look would be very much appreciated. Thanks.

UPDATE: I can make connection using port 5000(It's another port I have opened on the firewall). Port 80 still doesn't work though.

1

There are 1 best solutions below

1
On

In my case this was caused by COX not allowing inbound traffic to port 80. I'm not sure why the first portions of the tcp handshake were getting through. If anyone can explain that part leave a comment.