TCP dies on a Linux laptop
- by Roman Cheplyaka
Once in several days I have the following problem. My laptop (Debian GNU/Linux testing)
suddenly becomes unable to work with TCP connections to the internet.
The following things continue to work fine:
UDP (DNS), ICMP (ping) — I get instant response
TCP connections to other machines in the local network (e.g. I can ssh to a
neighbour laptop)
everything is ok for other machines in my LAN
But when I try TCP connections from my laptop, they time out (no response
to SYN packets). Here's a typical curl output:
% curl -v google.com
* About to connect() to google.com port 80 (#0)
* Trying 173.194.39.105...
* Connection timed out
* Trying 173.194.39.110...
* Connection timed out
* Trying 173.194.39.97...
* Connection timed out
* Trying 173.194.39.102...
* Timeout
* Trying 173.194.39.98...
* Timeout
* Trying 173.194.39.96...
* Timeout
* Trying 173.194.39.103...
* Timeout
* Trying 173.194.39.99...
* Timeout
* Trying 173.194.39.101...
* Timeout
* Trying 173.194.39.104...
* Timeout
* Trying 173.194.39.100...
* Timeout
* Trying 2a00:1450:400d:803::1009...
* Failed to connect to 2a00:1450:400d:803::1009: Network is unreachable
* Success
* couldn't connect to host
* Closing connection #0
curl: (7) Failed to connect to 2a00:1450:400d:803::1009: Network is unreachable
Restarting the connection and/or reloading the network card kernel module doesn't help.
The only thing that helps is reboot.
Clearly something is wrong with my system (everything else works fine), but I
have no idea what exactly.
I don't know how to reproduce this, but as I said, it happens every several days.
My setup is a wireless router that is connected to the ISP via PPPoE.
Any advice?