En ocasiones cuando el protocolo TCP/IP no funciona correctamente, tenemos una serie de herramientas que permiten comprobar el buen funcionamiento de la red o de un mecanismo específico como resolución de nombres, acceso a un ordenador o servidor, etc.
En el siguiente artículo hablaremos un poco de las herramientas que tenemos disponibles en GNU/Linux para realizar diferentes comprobaciones.
ARP
El protocolo ARP mantiene localmente en el ordenador una tabla de correspondencias entre las direcciones IP y las direcciones MAC. El comando arp
permite editar esta tabla que se encuentra en memoria RAM.
Podemos usar el comando arp
para añadir una entrada estática (un mapeo de una IP a una MAC) para llegar a un dispositivo de red que no dispone de dirección IP (por ejemplo una impresora) cuya dirección MAC conocemos.
Por ejemplo, para mostrar la tabla de direcciones que conocemos podemos ejecutar el siguiente comando:
arp -a
Y esta es la salida:
_gateway (192.168.1.1) en XX:XX:XX:XX:XX:XX [ether] en eth0
? (192.168.1.223) en XX:XX:XX:XX:XX:XX [ether] en eth0
? (192.168.1.221) en XX:XX:XX:XX:XX:XX [ether] en eth0
? (192.168.1.222) en XX:XX:XX:XX:XX:XX [ether] en eth0
Por ejemplo, en esta salida desde mi ordenador, nos dice que conoce 3 IP en la red que en este caso son 3 Raspberry Pi que tengo en casa.
PING
El comando ping
utiliza el protocolo ICMP. Permite comprobar si hay una buena conectividad de red, haciendo el envío de peticiones echo request
que esperan que respondan con un echo reply
.
Es importante para este comando conocer la puerta de enlace con el router, siempre y cuando se haga el ping
fuera de nuestra red.
Debemos de tener en cuenta que si estamos detrás de un router, éste puede tener activado un cortafuego que bloquee las peticiones de ICMP.
Por ejemplo, para saber si nuestra puerta de enlace responde correctamente:
ping 192.168.1.1
La respuesta será la siguiente:
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.04 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.882 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.909 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.880 ms
--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3037ms
rtt min/avg/max/mdev = 0.914/0.929/0.942/0.01
También podéis hacer ping
utilizando un nombre de dominio e incluso el número de paquetes para enviar con -c
:
ping -c5 fsf.org
Con la siguiente salida:
PING fsf.org (209.51.188.174) 56(84) bytes of data.
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=1 ttl=55 time=111 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=2 ttl=55 time=112 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=3 ttl=55 time=112 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=4 ttl=55 time=111 ms
64 bytes from www.fsf.org (209.51.188.174): icmp_seq=5 ttl=55 time=111 ms
--- fsf.org ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 110.774/111.346/112.335/0.619 ms
TRACEROUTE
Este comando permite seguir la ruta completa del paquete IP hasta el destinatario y así poder identificar hasta donde llega el paquete y por donde pasa.
traceroute
intenta alcanzar la dirección IP o nombre, limitándose a identificar los routers por donde pasa hasta alcanzar el destinatario.
Por ejemplo, el uso de tracerouter
:
traceroute fsf.org
Y esta es la respuesta:
traceroute to fsf.org (209.51.188.174), 64 hops max
1 192.168.1.1 (_gateway) 0,865ms 0,863ms 0,701ms
2 213.195.112.1 (213.195.112.1) 3,966ms 3,918ms 9,010ms
3 10.15.3.57 (10.15.3.57) 3,581ms 3,009ms 3,318ms
4 * * *
5 213.155.129.74 (bcn-b2-link.ip.twelve99.net) 3,220ms 2,834ms 2,715ms
6 * * *
7 62.115.133.238 (ldn-bb4-link.ip.twelve99.net) 37,694ms 37,290ms 37,610ms
8 198.160.62.0 (bbr02-et-0-0-7.bos01.twdx.net) 107,989ms 108,288ms 107,883ms
9 * * *
10 * * *
11 209.51.188.174 (www.fsf.org) 108,045ms 108,052ms 107,661ms
Si vemos (1) es la IP de nuestra puerta de enlace, que se trata del primer salto. Luego hace diferentes saltos hasta llegar a la web de la FSF (11).
En los saltos 4, 6, 9 y 10 que no indica ninguna IP o host, significa que la petición ha respondido un "Request timed out", por lo que significa que el equipo no responde a solicitudes ICMP.
IFCONFIG o IP
En antiguas versiones de GNU/Linux, sobretodo en las basadas en Debian, se utilizaba el comando ifconfig
para mostrar el resultado de las tarjetas de red en nuestro equipo. Pero desde hace poco se utiliza el comando ip
.
Este comando permite indicar, identificar o renovar una configuración IP para un ordenador que dispone de una dirección IP fija o dinámica.
El comando proprociona todos los detalles de la red física, tal como dirección IP, dirección de difusión, sitauación del multicast, número de paquetes enviados y recibidos, IRQ y direcciones utilizadas por la tarjeta de Red.
NETSTAT
Este comando permite visualizar los puertos abiertos de un ordenador y la tabla de enrutamiento del ordenador local.
netstat -an
Y esta es la salida:
Conexiones activas de Internet (servidores y establecidos)
Proto Recib Enviad Dirección local Dirección remota Estado
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN
tcp 0 0 217.71.201.164:8080 0.0.0.0:* LISTEN
tcp 0 0 217.71.201.164:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:8081 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:8084 0.0.0.0:* LISTEN
tcp 0 0 217.71.201.164:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
También podemos saber que puertos tenemos abiertos en el dispositivo con:
netstat -tulpn
Con la siguiente salida:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 116195/mariadbd
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 117051/exim4
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 153184/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 153184/dovecot
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN 117342/perl
tcp 0 0 217.71.201.164:8080 0.0.0.0:* LISTEN 159786/apache2
tcp 0 0 217.71.201.164:80 0.0.0.0:* LISTEN 153032/nginx: maste
tcp 0 0 127.0.0.1:8081 0.0.0.0:* LISTEN 159786/apache2
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 117051/exim4
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 125941/nginx: maste
tcp 0 0 127.0.0.1:8084 0.0.0.0:* LISTEN 153032/nginx: maste
tcp 0 0 217.71.201.164:53 0.0.0.0:* LISTEN 159078/named
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 116051/vsftpd
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 55554/systemd-resol
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 55390/unbound
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 155822/sshd: /usr/s
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 159078/named
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 117051/exim4
tcp 0 0 217.71.201.164:8443 0.0.0.0:* LISTEN 159786/apache2
tcp 0 0 217.71.201.164:443 0.0.0.0:* LISTEN 153032/nginx: maste
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 153184/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 153184/dovecot
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 157225/php-fpm: mas
Si nos fijamos, vemos puertos, por ejemplo el 8083 que se está usando para Nginx (seguramente para un Nginx Proxy).
NSLOOKUP
Este otro comando permite comprobar el buen funcionamiento de las resoluciones de nombres DNS.
Podemos revisar si un nombre de dominio responde correctamente a una IP o si tiene configurado uno o varios NS. También si un dominio responde bien a un NS concreto.
nslookup fsf.org
Esta sería la respuesta:
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: fsf.org
Address: 209.51.188.174
Name: fsf.org
Address: 2001:470:142:4::a
En este caso, nos indica que server
está usando para resolver la IP y que dirección tiene el domino que consultamos.
Si un dominio no tiene respuesta para el NS, nos dará la siguiente respuesta:
** server can't find fsf.org: NXDOMAIN
Conclusión
Y hasta aquí las herramientas interesantes para gestionar nuestras redes y determinar que problemas pueden producirse en ellas.
Como última opción os dejamos este otro artículo sobre la herramienta dt
que nos muestra toda la información sobre un nombre de dominio.

Comentarios