I have multiple servers with this problem: Server is "talking to" a desktop (seen only across a router, so far), with SSH (or HTTP), and the session freezes. Further pings from the desktop get no reply.
As long as the desktop keeps pinging, it will NEVER resolve itself. I've let it ping over a weekend!. But if the desktop doesn't send any packets to the server for a few minutes, all is well again.
However, I can SSH to the server from another desktop, and ping the desktop that no longer works, just fine. Even stranger, a traceroute from the server to the "bad" desktop FAILS, saying "send: network is down". Then I can try the ping again, and it works fine. A syscall trace of the traceroute shows that, indeed, the sendto() call is returning "ENETDOWN".
One more thing: If I flush the route cache on the server (with ip route flush cache), all is well again.
This is Oracle Linux version (they call it) 2.6.39, but it's really a 3.x (don't know 'x') which has been renumbered.
Any ideas where to look?