Una vez en varios días tengo el siguiente problema. Mi computadora portátil (prueba de Debian) de repente no puede trabajar con conexiones TCP a Internet.
Las siguientes cosas siguen funcionando bien:
- UDP (DNS), ICMP (ping): obtengo una respuesta instantánea
- Conexiones TCP a otras máquinas en la red local (por ejemplo, puedo enviar un ssh a una computadora portátil vecina)
- todo está bien para otras máquinas en mi LAN
Pero cuando intento conexiones TCP desde mi computadora portátil, se agota el tiempo de espera (sin respuesta a los paquetes SYN). Aquí hay una salida de rizo típica:
% 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
Reiniciar la conexión y / o volver a cargar el módulo del núcleo de la tarjeta de red no ayuda. Lo único que ayuda es reiniciar.
Claramente, algo está mal con mi sistema (todo lo demás funciona bien), pero no tengo idea de qué es exactamente.
Mi configuración es un enrutador inalámbrico que está conectado al ISP a través de PPPoE.
¿Algún consejo?
Respuestas a comentarios
¿Qué NIC es?
12:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)
Subsystem: Dell Inspiron M5010 / XPS 8300
Flags: bus master, fast devsel, latency 0, IRQ 17
Memory at fbb00000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [58] Vendor Specific Information: Len=78 <?>
Capabilities: [48] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [d0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Virtual Channel
Capabilities: [160] Device Serial Number 00-00-9d-ff-ff-aa-1c-65
Capabilities: [16c] Power Budgeting <?>
Kernel driver in use: brcmsmac
¿Cuál es el estado de su NIC cuando ocurre el problema?
iptables-save
No imprime nada.
ip rule show
:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
ip route show table all
:
default via 192.168.1.1 dev wlan0
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.105
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev wlan0 table local proto kernel scope link src 192.168.1.105
local 192.168.1.105 dev wlan0 table local proto kernel scope host src 192.168.1.105
broadcast 192.168.1.255 dev wlan0 table local proto kernel scope link src 192.168.1.105
fe80::/64 dev wlan0 proto kernel metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101 hoplimit 255
local ::1 via :: dev lo table local proto none metric 0
local fe80::1e65:9dff:feaa:b1f1 via :: dev lo table local proto none metric 0
ff00::/8 dev wlan0 table local metric 256
unreachable default dev lo table unspec proto kernel metric 4294967295 error -101 hoplimit 255
Todo lo anterior es igual cuando la máquina funciona en modo normal.
ifconfig
- Lo ejecuté, pero de alguna manera olvidé guardar antes de reiniciar. Tendrá que esperar hasta la próxima vez que ocurra el problema. Lo siento por eso.
¿Alguna QoS en su lugar?
Probablemente no, al menos no he hecho nada específicamente para habilitarlo.
¿Has intentado oler el tráfico realmente enviado en la interfaz?
Ejecuté curl y tcpdump varias veces, y había dos patrones.
El primero es solo paquetes SYN sin respuestas.
17:14:37.836917 IP (tos 0x0, ttl 64, id 4563, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42030 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0xbea8), seq 3764607647, win 13600, options [mss 1360,sackOK,TS val 33770316 ecr 0,nop,wscale 4], length 0
17:14:38.836650 IP (tos 0x0, ttl 64, id 4564, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42030 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0xbdae), seq 3764607647, win 13600, options [mss 1360,sackOK,TS val 33770566 ecr 0,nop,wscale 4], length 0
17:14:40.840649 IP (tos 0x0, ttl 64, id 4565, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42030 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0xbbb9), seq 3764607647, win 13600, options [mss 1360,sackOK,TS val 33771067 ecr 0,nop,wscale 4], length 0
El segundo es este:
17:22:56.507827 IP (tos 0x0, ttl 64, id 41583, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0x2244), seq 1564709704, win 13600, options [mss 1360,sackOK,TS val 33894944 ecr 0,nop,wscale 4], length 0
17:22:56.546763 IP (tos 0x58, ttl 54, id 65442, offset 0, flags [none], proto TCP (6), length 60)
fra07s07-in-f102.1e100.net.http > 192.168.1.105.42036: Flags [S.], cksum 0x6b1e (correct), seq 1407776542, ack 1564709705, win 14180, options [mss 1430,sackOK,TS val 3721836586 ecr 33883552,nop,wscale 6], length 0
17:22:56.546799 IP (tos 0x58, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [R], cksum 0xf301 (correct), seq 1564709705, win 0, length 0
17:22:58.511843 IP (tos 0x0, ttl 64, id 41584, offset 0, flags [DF], proto TCP (6), length 60)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [S], cksum 0x27fc (incorrect -> 0x204f), seq 1564709704, win 13600, options [mss 1360,sackOK,TS val 33895445 ecr 0,nop,wscale 4], length 0
17:22:58.555423 IP (tos 0x58, ttl 54, id 65443, offset 0, flags [none], proto TCP (6), length 60)
fra07s07-in-f102.1e100.net.http > 192.168.1.105.42036: Flags [S.], cksum 0x3b03 (correct), seq 1439178112, ack 1564709705, win 14180, options [mss 1430,sackOK,TS val 3721838596 ecr 33883552,nop,wscale 6], length 0
17:22:58.555458 IP (tos 0x58, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
192.168.1.105.42036 > fra07s07-in-f102.1e100.net.http: Flags [R], cksum 0xf301 (correct), seq 1564709705, win 0, length 0
salida de ethtool
ethtool -k wlan0
:
Features for wlan0:
rx-checksumming: off [fixed]
tx-checksumming: off
tx-checksum-ipv4: off [fixed]
tx-checksum-unneeded: off [fixed]
tx-checksum-ip-generic: off [fixed]
tx-checksum-ipv6: off [fixed]
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: off
tx-scatter-gather: off [fixed]
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
tx-tcp-segmentation: off [fixed]
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp6-segmentation: off [fixed]
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: off [requested on]
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: on [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
iptables
# namei -l "$(command -v iptables)"
f: /sbin/iptables
drwxr-xr-x root root /
drwxr-xr-x root root sbin
lrwxrwxrwx root root iptables -> xtables-multi
-rwxr-xr-x root root xtables-multi
# dpkg -S "$(command -v iptables)"
iptables: /sbin/iptables
# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
# iptables -t mangle -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
# iptables -t security -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
información del módulo
# ethtool -i wlan0
driver: brcmsmac
version: 3.2.0-3-686-pae
firmware-version: N/A
bus-info: 0000:12:00.0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
# modinfo brcmsmac
filename: /lib/modules/3.2.0-3-686-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
license: Dual BSD/GPL
description: Broadcom 802.11n wireless LAN driver.
author: Broadcom Corporation
alias: pci:v000014E4d00000576sv*sd*bc*sc*i*
alias: pci:v000014E4d00004727sv*sd*bc*sc*i*
alias: pci:v000014E4d00004353sv*sd*bc*sc*i*
alias: pci:v000014E4d00004357sv*sd*bc*sc*i*
depends: mac80211,brcmutil,cfg80211,cordic,crc8
intree: Y
vermagic: 3.2.0-3-686-pae SMP mod_unload modversions 686
No hay es /sys/module/brcmsmac/parameters
. Esto es lo que tengo allí:
# tree /sys/module/brcmsmac
/sys/module/brcmsmac
├── drivers
│ └── pci:brcmsmac -> ../../../bus/pci/drivers/brcmsmac
├── holders
├── initstate
├── notes
├── refcnt
├── sections
│ └── __bug_table
└── uevent
Algunos sitios realmente funcionan
Según lo sugerido por el Dr. , probé algunos otros sitios, y para mi gran sorpresa, algunos de ellos realmente funcionaron. Aquí hay algunos hosts que funcionaron:
- rambler.ru
- google.ru
- ya.ru
- opennet.ru
- tut.by
- ro-che.info
- yahoo.com
- ebay.com
Y aquí hay algunos que no lo hicieron:
- vk.com
- meta.ua
- ukr.net
- tenet.ua
- prom.ua
- reddit.com
- github.com
- stackexchange.com
Captura de red
Hice una captura de red y la cargué aquí .
fuente
iptables-save
, deip rule show
,ip route show table all
. ¿Alguna QoS en su lugar?linux-image-3.2.0-3-686-pae
), y el firmware proviene delfirmware-brcm80211
paquete. ¿Tuviste problemas similares a los míos? Prefiero evitar construir cosas a mano, a menos que sea un problema conocido. Además, ¿por qué un problema del módulo NIC se manifestaría en la capa 4?Respuestas:
En la captura que proporcionó, la respuesta de eco de sello de tiempo en el SYN-ACK en el segundo paquete no coincide con el TSVal en el SYN en el primer paquete y está unos segundos atrás.
Y vea cómo todos los TSecr enviados por 173.194.70.108 y 209.85.148.100 son todos iguales e irrelevantes desde el TSVal que envía.
Parece que hay algo que se mezcla con las marcas de tiempo TCP. No tengo idea de qué puede estar causando eso, pero parece que está fuera de su máquina. ¿Reiniciar el enrutador ayuda en esta instancia?
No sé si es lo que está causando que su máquina envíe un RST (en el tercer paquete). Pero definitivamente no le gusta ese SYN-ACK, y es lo único malo que puedo encontrar al respecto. La única otra explicación que se me ocurre es que si no es su máquina la que envía el RST, pero dada la diferencia horaria entre el SYN-ACK y el RST, lo dudaría. Pero por si acaso, ¿utiliza máquinas virtuales o contenedores o espacios de nombres de red en esta máquina?
Puede intentar deshabilitar las marcas de tiempo TCP por completo para ver si eso ayuda:
Entonces, esos sitios envían TSecr falso o hay algo en el camino (cualquier enrutador en camino o proxy transparente) que destruye el TSVal saliente o el TSecr entrante, o un proxy con una pila TCP falsa. Por qué uno destrozaría las marcas de tiempo de tcp solo puedo especular: error, evasión de detección de intrusos, un algoritmo de conformación de tráfico demasiado inteligente / falso. Eso no es algo que haya escuchado antes (pero tampoco soy un experto en el tema).
Cómo investigar más a fondo:
fuente
Dice suma de verificación incorrecta arriba. ¿Hay una descarga de suma de verificación para ese dispositivo (no sabía que los dispositivos inalámbricos podrían descargar sumas de verificación).
¿Qué
sudo ethtool -k wlan0
te dice? Si hay una descarga, puede intentar desactivarla.Debe ser root para llamar a iptables-save. Todavía hay una remota posibilidad de que algo esté destrozando paquetes allí. Si
iptables-save
no funciona, intente:En su captura de red, ¿la dirección MAC de destino coincide con la del enrutador? ¿Algo interesante en una comparación del tráfico UDP al tráfico TCP?
Además, ¿dónde
$dev
está el controlador del kernel (módulo) (consulteethtool -i wlan0
) para su adaptador inalámbrico, qué hacermodinfo "$dev"
y quégrep . /sys/module/"$dev"/parameters/*
decirle?fuente
namei -l "$(command -v iptables)"
ydpkg -S "$(command -v iptables)"
decirte?tshark -Viwlan0 tcp
uno de esos paquetes SYN aquí?Parece que tengo exactamente el mismo comportamiento en mi computadora portátil también. No sé la razón, pero de vez en cuando no pude conectarme a google.com y algunos otros recursos externos. Pings y consultas DNS funcionan perfectamente. También he encontrado una sola solución: reiniciar .
Podría agregar varias observaciones:
Alguna información técnica sobre mi caja:
SO: Último ArchLinux amd64
Supongo que este comportamiento defectuoso ocurre debido a algún error sutil en algunas versiones del kernel de Linux, pero no sé cómo depurar este problema, y debido a la reproducción inestable, estoy atascado.
fuente
Tuve el mismo problema que describiste hasta que agregué el comando anterior a mis comandos de iptables de la puerta de enlace de Internet. En se incluye por defecto en el paquete rp-pppoe y otros. Pero cuando elija configuraciones personalizadas y no las configure manualmente, las computadoras en la LAN detrás de la puerta de enlace tendrán los problemas que usted describe.
fuente