De vez en cuando, los usuarios de Linux y Unix se enfrentan a varios problemas de red. Muchos de estos problemas se presentan aquí y en otros foros de solución de problemas, pero son muy concretos y contienen mucha información técnica adicional, y a veces es bastante difícil entender el punto principal y la razón real del comportamiento del sistema con errores.
Al hacer esta pregunta, mi intención es iniciar una página wiki comunitaria que permita generalizar nuestra solución de problemas de red y experiencia de depuración. Espero que los usuarios de Linux y Unix puedan reconocer y resolver más fácilmente ("dividir y conquistar") sus problemas de red utilizando esta página.
El padre de esta página debe ser la mejor práctica para diagnosticar problemas . Pero aquí deberíamos centrarnos en solucionar los problemas de red desde el espacio del usuario y del núcleo.
Supongo que si:
- Comparta la información sobre el uso de una excelente herramienta de diagnóstico de red con ejemplos de uso concretos y ejemplos de errores de red, que ayudan a detectar.
- Comparta el enlace al gran tutorial de red relacionado con este tema
- Hable sobre un método o receta general que permita abordar una clase de problemas de red.
- Comparta información sobre su conjunto de herramientas para la depuración y resolución de problemas de la red
encajaría perfectamente para este tema.
Comenzaré compartiendo el enlace a varias herramientas de diagnóstico y un tutorial simple de 12 años . También el tutorial de archlinux parece tener información real sobre nuestro tema. Y para sumergirnos en la red Linux, definitivamente debemos visitar Linux Networking-HOWTO .

Respuestas:
Creo que los principios generales de la solución de problemas de red son:
En cuanto a mí, generalmente obtengo toda la información requerida usando todas las herramientas necesarias, y trato de hacer coincidir esta información con mi experiencia. Decidir qué nivel de pila de red contiene el error ayuda a cortar variantes poco probables. Usar la experiencia de otras personas ayuda a resolver los problemas rápidamente, pero a menudo conduce a una situación, que puedo resolver algún problema sin su comprensión y si este problema vuelve a ocurrir, me es imposible abordarlo nuevamente sin Internet.
Y, en general, no sé cómo resuelvo los problemas de red. Parece que hay una función mágica en mi cerebro llamada
SolveNetworkProblem(information_about_system_state, my_experience, people_experience), que a veces podría devolver exactamente la respuesta correcta, y también a veces podría fallar (como aquí TCP muere en una computadora portátil Linux ).Normalmente uso utilidades de este conjunto para la depuración de la red:
ifconfig(oip link,ip addr) - para obtener información sobre interfaces de redping- para validar, si el host de destino es accesible desde mi máquina.pingtambién se podría usar para diagnósticos básicos de DNS: podríamos hacer ping al host por dirección IP o por su nombre de host y luego decidir si DNS funciona. Y luegotracerouteotracepathomtrmirar lo que está sucediendo en el camino.dig- diagnostica todo DNSdmesg | lessodmesg | tailodmesg | grep -i error- para comprender lo que piensa el kernel de Linux sobre algunos problemas.netstat -antp+| grep smth: mi uso más popular del comando netstat, que muestra información sobre las conexiones TCP. A menudo realizo algunos filtros usando grep. Consulte también el nuevosscomando (deliproute2nuevo conjunto estándar de herramientas de red de Linux) ylsofcomo enlsof -ai tcp -c some-cmd.telnet <host> <port>- es muy útil para comunicarse con varios servicios TCP (por ejemplo, en protocolos SMTP, HTTP), también podríamos comprobar la oportunidad general de conectarse a algún puerto TCP.iptables-save(en Linux) - para volcar las tablas completas de iptablesethtool- Obtenga todos los parámetros de la tarjeta de interfaz de red (estado del enlace, velocidad, parámetros de descarga ...)socat- La herramienta del ejército suizo para probar todos los protocolos de red (UDP, multidifusión, SCTP ...). Especialmente útil (más que Telnet) con algunas-dopciones.iperf- para probar la disponibilidad de ancho de bandaopenssl(s_client,ocsp,x509...) para depurar todas las cuestiones SSL / TLS / PKI.wireshark- La poderosa herramienta para capturar y analizar el tráfico de red, que le permite analizar y detectar muchos errores de red.iftop- Mostrar grandes usuarios en la red / enrutador.iptstate(en Linux): vista actual del seguimiento de la conexión del firewall.arp(o el nuevo (Linux)ip neigh): muestra el estado de la tabla ARP.routeo el más nuevo (en Linux)ip route: muestra el estado de la tabla de enrutamiento.strace(otruss,dtraceotuscdependiendo del sistema): es una herramienta útil que muestra qué llamadas del sistema procesa el problema, también muestra códigos de error (errno) cuando fallan las llamadas del sistema. Esta información a menudo dice lo suficiente para comprender el comportamiento del sistema y resolver un problema. Alternativamente, el uso de puntos de interrupción en algunas funciones de redgdbpuede permitirle saber cuándo se realizan y con qué argumentos.iptables -nvLmuestra cuántos paquetes coinciden con cada regla (iptables -Zpara poner a cero los contadores). ElLOGobjetivo insertado en las cadenas de firewall es útil para ver qué paquetes les llegan y cómo ya se han transformado cuando llegan allí. Para llegar más lejosNFLOG(asociado conulogd) se registrará el paquete completo.fuente
nmap. El perfil de puertos abiertos en una máquina puede darle rápidamente pistas sobre si está mirando un servidor Linux o Windows, por ejemplo.tcpdump. Como es el analizador de paquetes estándar para TCP.Un sorprendente número de "problemas de red" se reduce a problemas de DNS de un tipo u otro. La resolución de problemas inicial debe usarse
ping -n w.x.y.zpara omitir la resolución DNS de un nombre de host y simplemente verificar la conectividad IP. Después de eso, useroute -npara verificar la ruta IP predeterminada sin resolución DNS.Después de verificar la conectividad IP y el enrutamiento
nslookup,hostydigpuede proporcionar información. Recuerde que "bloquear" puede indicar que se están produciendo tiempos de espera de DNS.No olvides verificar la existencia y el contenido de
/etc/resolv.conf. Los clientes DHCP cambian ese archivo con cada contrato de arrendamiento, y a veces se equivocan, o si el espacio en disco es escaso, puede que no ocurra una actualización.fuente
Pueden existir problemas de cableado. Si tiene acceso al hardware, asegúrese de que todos los cables estén enchufados y enganchados mecánicamente. Si puede ver enrutadores o interfaces de ethernet, asegúrese de que las luces de enlace estén encendidas.
De forma remota, tienes que depender de
ethtoolymii-tool."Enlace detectado: sí" es bueno, pero 10Mb / sy Half Duplex no son buenos, ya que la NIC en esa computadora puede hacerlo mejor. Necesito averiguar si la NIC está tonta o si el cable lo está. Otra computadora conectada al mismo enrutador dice 100Mb / s, Full duplex.
fuente