Connectivity restored with `ping`?

My server is operating properly.

Something happens...

Suddenly, my server is inaccesible via ssh and http. (The only open ports in the firewall.)

All eth0 configuration is static, no DHCP.

Everything is configured properly in /etc/network/interfaces.

ethtool is configured to force 100baseT full duplex, as is the gateway - autoneg is off.

ifconfig shows zero errors, zero dropped packets, zero overruns, and zero collisions.

My server responds to pings sent from other networks. (Which must go through the gateway?)

route shows everything configured properly.

My server receives no response from pings sent to the gateway.

My server gets responses from other machines on the local network.

After receiving ping responses from other local machines, it can then get a response from the gateway, http operates properly and so does ssh. I didn't restart or reconfigure the network in any way, the only commands used were ifconfig, ethtool, route and ping (in the order indicated above) to bring server access back.

See this question for more background information. (I implemented the suggested solution provided, but to no avail.)

Any ideas? This problem has been ongoing for weeks, and I'm at a complete loss...


Solution 1:

You don't say what your gateway is, but my vote is that this is a router/gateway issue.

Most likely the arp entry on the gw is timing out and not getting refreshed, or there is another device on the network responding to arps for your server's ip address or is gratuitously arpping your server's address.

When you ping the gateway, it looks in it's arp table and finds an (incorrect entry) and replies to the wrong host. When you ping the other hosts, they arp and your server responds and then everyone's arp table is updated with the correct info and it all works again. Just like magic.