Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-1:109_networking_fundamentals:109.3_basic_network_troubleshooting

109.3 Basic network troubleshooting

Pertenece a Topic 109: Networking Fundamentals

  • Weight: 4
  • Description: Candidates should be able to troubleshoot networking issues on client hosts.
  • Key Knowledge Areas:
    • Manually configure network interfaces, including viewing and changing the configuration of network interfaces using iproute2.
    • Manually configure routing, including viewing and changing routing tables and setting the default route using iproute2.
    • Debug problems associated with the network configuration.
    • Awareness of legacy net-tools commands.
  • The following is a partial list of the used files, terms and utilities:
    • ip
    • hostname
    • ss
    • ping
    • ping6
    • traceroute
    • traceroute6
    • tracepath
    • tracepath6
    • netcat
    • ifconfig
    • netstat
    • route

Herramientas net-tools

net-tools es el conjunto de herramientas tradicionales para la gestión de la red en el sistema. Está en desaparición.

Si no tuviésemos estas herramientas, en Debian podemos instalarlas con apt install net-tools

ifconfig

Este comando es la herramienta clásica para gestionar los dispositivos de red.

Si lo ejecutamos sin argumentos, nos muestra las tarjetas de red activas y sus direcciones ip asociadas.

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.26.194.246  netmask 255.255.240.0  broadcast 172.26.207.255
        inet6 fe80::215:5dff:feb4:4528  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:b4:45:28  txqueuelen 1000  (Ethernet)
        RX packets 585  bytes 259133 (259.1 KB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 109  bytes 7506 (7.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • Asignar manualmente dirección IP: ifconfig <dispositivo> <IP nueva> netmask <máscara>
  • Deshabilitar tarjeta: ifconfig <dispositivo> down
  • Habilitar Tarjeta: ifconfig <dispositivo> up
  • Mostrar todos los dispositivos (incluidos los deshabilitados): ifconfig -a

Ejemplo asignando una dirección IP manualmente:

ifconfig enp0s3 192.168.1.123 netmask 255.255.255.0

ifup e ifdown sirven también para habilitar o deshabilitar dispositivos:

  • ifup <dispositivo>
  • ifdown <dispositivo>

Con la opción -a podemos afectar a todos los dispositivos:

ifup -a

Si hemos hecho cambios en la configuración de red y queremos aplicar los cambios debemos reiniciar los servicios de red.

En sistemas con SysV:

  • Debian: /etc/init.d/networking restart
  • CentOS: /etc/init.d/network restart

En sistemas con Systemd:

  • systemctl restart networking.service

route

Este comando nos muestra la tabla de enrutamiento de nuestro sistema local. Estas tablas es donde se indica lo que tiene que hacer el sistema con los paquetes que le llegan.

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    0      0        0 enp0s3
192.168.0.1     0.0.0.0         255.255.255.0   U     0      0        0 enp0s3

Según la tabla de arriba, en la primera línea se especifica una puerta de enlace por defecto. Todos los paquetes que tengan que salirse de la red, irán por dicho gateway. Puede haber diferentes gateways para diferentes redes, pero solo uno será por defecto.

Otro ejemplo:

Tabla de rutas IP del núcleo
Destino Pasarela Genmask Indic Métric Ref Uso Interfaz
default 192.168.1.1 0.0.0.0 UG 600 0 0 wlp3s0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wlp3s0
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp3s0

Si en lugar de nombre queremos que nos muestre direcciones IP:

route -n

También podemos obtener las rutas con el comando netstat lanzándolo de la siguiente manera: netstat -r.

Para ver la importancia de nuestra puerta de enlace (Gateway) en nuestra red, vamos a cambiarla, también con el comando route, y veremos como reacciona nuestra máquina.

Eliminamos el gateway por defecto:

route del default gw 192.168.1.1

Para cambiar/añadir la puerta de enlace, utilizaremos el comando route de la siguiente forma:

route add default gw <ip nuevo gw> dev <dispositivo>

Ejemplo:

route add default gw 192.168.1.230

Añadir una ruta:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0

Eliminar una ruta:

route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0

Añadir gateway por defecto:

route add default gw 192.168.0.254 dev eth0

Netstat

Es un comando muy potente para conocer las conexiones de nuestra red.

  • Mostrar las rutas del sistema: netstat -nr (como route)
  • Mostrar información sobre los interfaces de red: netstat -i. Útil para determinar una posible avería o un problema de cable.
  • Mostrar información de los programas que usan los diferentes sockets de red: netstat -p

Poner ejemplos de las salidas de los comandos anteriores.

Una forma de llamar netstat muy habitual es:

netstat -putan

O

netstat -putona

Porque vemos el puerto y qué servicio lo está usando.

Los servicios que funcionen por UDP no aparecerán en estado LISTEN en netstat.

iproute2

Conjunto de herramientas que pretende sustituir a net-tools.

ip

El comando ifconfig se está intentando retirar, y en su lugar usar el comando ip, que incluye las funciones de ifconfig y route

  • ip: comando para los dispositivos de red
  • ip addr: equivalente a ifconfig. También se puede acortar como ip a.
    • ip addr add <ip>/<mask> dev <device>: añadir dirección IP
    • ip addr del <ip>/<mask> dev <device>: eliminar dirección IP
    • ip a show: muestra información de los interfaces de red
    • ip a show eth0: muestra información de la interfaz de red eth0.
  • ip link: muestra dispositivos. También se puede acortar como ip l.
    • ip link set <device> up/down: activar / desactivar dispositivo
  • ip route show: como route
    • ip route add default via <ip> dev <device>: añadir gateway por defecto.

Poner ejemplos de las salidas de los comandos anteriores.

ss

Pretende sustituir a netstat.

ss -putan

Telnet

Se utiliza para comunicarnos con un servidor remoto a través del protocolo telnet.

Tiene la desventaja de que toda la información que se transmite a través de telnet son en texto plano, incluidas las contraseñas.

  • Instalar el cliente: apt-get install telnet
  • Instalar el servidor: apt-get install telnetd

Aunque es un protocolo inseguro, se puede usar para comprobar si los puertos de una máquina están abiertos:

telnet direccion_ip puerto

Ejemplo:

$ telnet 192.168.0.1 21
Trying 192.168.0.1...
telnet: Unable to connect to remote host: Connection refused

host

Los servidores DNS proporcionan la base de datos completa de nombres de dominio y direcciones IP.

El comando host hará uso de los datos de esas bases de datos para devolvernos la información. nos muestra todas las IPs conocidas para un dominio dado.

$ host google.es
google.es has address 216.58.209.67
google.es has IPv6 address 2a00:1450:4003:80f::2003
google.es mail is handled by 0 smtp.google.com.

En sentido inverso también nos proporciona información. Si le indicamos la dirección IP, nos indica el servidor DNS que sirve a ese dominio.

nslookup

Realiza consultas simples a nuestro servidor DNS.

En Debian hay que instalar el paquete dnsutils.

Se utiliza para consultar servidores de nombre de dominio y obtener información relacionada con el dominio o el host.

$ nslookup www.google.es
Server: 87.216.1.65
Address: 87.216.1.65#53

Non-authoriative answer:
Name: google.es
Address: 216.58.209.67
Name: google.es
Address: 2a00:1450:4003:80f::2003

dig

El comando dig también es una utilidad de búsqueda DNS. Es similar a host, pero nos permite un acceso más completo a la base de datos del DNS.

Podemos hacer consultas por tipos de entradas DNS (MX, SRV, A, NS, …)

dig ANY google.es

Poner ejemplo del uso del comando anterior

Traceroute y tracepath

Estos comandos lo que hacen es rastrear los diferentes enrutadores que nos encontramos hasta llegar a nuestro destino.

traceroute rastrea la ruta que toman nuestros paquetes enviados a través de una red IP en el camino a un host determinado. Es útil para diagnosticar problemas de tráfico.

$ traceroute google.es
traceroute to google.es (216.58.215.163), 30 hops max, 60 byte packets
 1  192.168.0.1 (192.168.0.1)  4.915 ms  4.901 ms  4.890 ms
 2  100.115.0.1 (100.115.0.1)  6.540 ms  6.135 ms  6.123 ms
 3  142.17.26.77.dynamic.reverse-mundo-r.com (77.26.17.142)  6.538 ms  6.527 ms  5.895 ms
 4  ix-ae-7-700.tcore1.dvs-bilbao.as6453.net (80.231.157.133)  18.543 ms  13.173 ms  13.135 ms
 5  if-ae-10-4.tcore1.wv6-madrid.as6453.net (80.231.91.105)  22.798 ms  20.118 ms  20.052 ms
 6  72.14.213.246 (72.14.213.246)  19.235 ms  16.648 ms  16.626 ms
 7  142.250.232.10 (142.250.232.10)  18.454 ms 74.125.242.177 (74.125.242.177)  17.079 ms 142.250.214.40 (142.250.214.40)  19.264 ms
 9  142.251.54.149 (142.251.54.149)  22.639 ms 74.125.242.164 (74.125.242.164)  15.224 ms 74.125.242.180 (74.125.242.180)  18.045 ms
10  mad41s07-in-f3.1e100.net (216.58.215.163)  15.187 ms  15.178 ms 108.170.235.178 (108.170.235.178)  15.153 ms

Este comando nos devolverá la cantidad de routers por los que pasará nuestra petición de host y, si es posible, sus direcciones IP. Si no puede mostrar las direcciones IP, aparecerán como *

El comando tracepath es básicamente igual que traceroute pero no necesita permisos de root

ping

El comando ping envía una solicitud de echo icmp a un host remoto, e informa cuanto tiempo se tarda en recibir ese echo e icmp.

Este comando envía un paquete de red para comprobar la disponibilidad de un nodo de red (si la máquina está “levantada” o no).

$ ping google.es
PING google.es (216.58.215.163) 56(84) bytes of data.
64 bytes from mad41s07-in-f3.1e100.net (216.58.215.163): icmp_seq=1 ttl=115 time=15.9 ms
64 bytes from mad41s07-in-f3.1e100.net (216.58.215.163): icmp_seq=2 ttl=115 time=16.6 ms
64 bytes from mad41s07-in-f3.1e100.net (216.58.215.163): icmp_seq=3 ttl=115 time=16.5 ms
64 bytes from mad41s07-in-f3.1e100.net (216.58.215.163): icmp_seq=4 ttl=115 time=19.6 ms
64 bytes from mad41s07-in-f3.1e100.net (216.58.215.163): icmp_seq=5 ttl=115 time=16.7 ms

Por defecto, ping funciona continuamente, tendremos que ser nosotros quienes lo detengamos. Si queremos establecer un número determinado de paquetes, usaremos la opción -c: ping -c3 google.es

Ejemplo para comprobar si un servidor responde:

ping -c 1 10.0.10.13 > /dev/null 2>&1 && echo "El servidor contesta"

También es interesante la opción -b para emitir un echo en una dirección de broadcast. Por ejemplo:

ping -b 192.168.0.255

Todas las direcciones de la subred correspondientes a la dirección de broadcast anterior deben responder.

Un último ejemplo donde veremos el uso de la opción -I para especificar una interfaz de red:

ping -I eth0 192.168.0.10

Esta opción es muy útil para comprobar una resolución DNS o una ruta.

Reiniciar el servicio de red del sistema

Si tenemos algún problema con la red o hemos hecho cambios y queremos que se apliquen:

  • En el caso de SysV:
    • Debian: /etc/init.d/networking restart
    • CentOS: /etc/init.d/network restart
  • En el caso de Systemd: systemctl restart networking
informatica/certificaciones/lpic/lpic-1/109_networking_fundamentals/109.3_basic_network_troubleshooting.txt · Última modificación: por tempwin