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.ping
tambié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 luegotraceroute
otracepath
omtr
mirar lo que está sucediendo en el camino.dig
- diagnostica todo DNSdmesg | less
odmesg | tail
odmesg | 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 nuevoss
comando (deliproute2
nuevo conjunto estándar de herramientas de red de Linux) ylsof
como 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-d
opciones.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.route
o el más nuevo (en Linux)ip route
: muestra el estado de la tabla de enrutamiento.strace
(otruss
,dtrace
otusc
dependiendo 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 redgdb
puede permitirle saber cuándo se realizan y con qué argumentos.iptables -nvL
muestra cuántos paquetes coinciden con cada regla (iptables -Z
para poner a cero los contadores). ElLOG
objetivo 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.z
para omitir la resolución DNS de un nombre de host y simplemente verificar la conectividad IP. Después de eso, useroute -n
para verificar la ruta IP predeterminada sin resolución DNS.Después de verificar la conectividad IP y el enrutamiento
nslookup
,host
ydig
puede 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
ethtool
ymii-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