Linux Networking: Lo que sucede en la Red

“Siempre hay que guardar los registros para que otros también puedan interpretar los reportes tal y como los vimos.”

Probando la conectividad con ping

No es un secreto que ping es la herramienta número uno para comprobar la conectividad.

ping -c3 scanme.nmap.org

Se recomienda no bloquear los siguientes mensajes:

  • echo-request
  • echo-reply
  • time-exceeded
  • destination-unreachable

Algunos administradores de sistemas bloquean los mensajes de ping en sus firewalls, y este es un error y un problema porque la mayoría de las funciones de las redes ocupan que al menos estos 4 mensajes operen de manera adecuada.

Perfile y compare la red con FPing y Nmap

Primero descubramos todos los hosts de la red, los que conforman la subred:

arp-scan -I eth0 192.168.0.0/24 10.0.0.0/8

nmap -sP 192.168.0.0/24 10.0.0.0/8

Seguidamente podemos establecer la línea base de rendimiento de la red mediante ping, lo cual es útil para tener con que comparar al momento de tratar de encontrar soluciones a problemas de rendimiento. Muchas de estas características se pueden automatizar con ping, con un script que reporte el rendimiento de toda una subred.

Por favor consulte:

fping -c1 -sdg 192.168.0.0/24 2>&1 | egrep -v "ICMP|xmt"

Encontrando IPs duplicadas

arping -c5 -D 192.168.0.1

arping -c5 -D 192.168.0.15

arping también es esencial para ver si un host se encuentra arriba cuando ping falla, pero usar arping no va a funcionar cuando ping se encuentre bloqueado.

Pruebas de latencia y rendimiento HTTP

httping -c5 -g scanme.nmap.org

httping -c5 -Gg scanme.nmap.org

httping -c5 -h scanme.nmap.org -p 80

httping -c5 -Gsbrg scanme.nmap.org

Escarbando y localizando los problemas de red

Si existe un problema tratando de alcanzar algún host o equipo en la red y además ping lo confirma, hay que imaginar que deben de haber varios routers entre nosotros y el problema, por esta razón es que es necesario escarbar un poco más, gracias a la bondad esto se puede hacer con:

traceroute scanme.nmap.org

traceroute -n scanme.nmap.org

traceroute -q5 -w1 scanme.nmap.org

Traceroute significa seguir la ruta de los paquetes desde una IP de la red en su camino hacia un host determinado. Utiliza el tiempo de vida (TTL) del protocolo IP e intenta provocar una respuesta ICMP TIME_EXCEEDED para cada puerta de enlace a lo largo de la ruta necesaria para llegar al host destino.

Si por alguna razón traceroute no funciona sobre la Internet, ya que algunos routers pueden estar programados para ignorar datagramas UDP. Por esta razón, si vemos muchos “timeouts”, podemons intentar con la opción -I, le dice a traceroute que envíe peticiones ICMP ECHO en lugar de peticiones TCP SYN.

También se puede usar tcptraceroute, el cual envía paquetes TCP SYN en lugar de paquetes UDP o paquetes ICMP ECHO. Estos son más propensos a pasar a través de firewalls, y van a ser menos ignorados por routers. Una vez que el host responde, tcptraceroute envía TCP RST para cerrar la conexión, por lo que el “TCP three-way handshake” nunca es completado. Este es igual a las opciones (-sS) de exploración medio-abierta utilizada por Nmap.

Como alternativa, también se puede usar tcptraceroute:

tcptraceroute scanme.nmap.org

Cuando se inicia mtr, investiga la conexión de red entre el host donde se corre mtr y el host destino HOSTNAME. Lo que hace es enviar paquetes con un TTL bajo, entonces continúa enviando paquetes con un TTL bajo, considerando el tiempo de respuesta de los routers intermedios. Esto le permite a mtr desplegar el porcentaje de respuesta y los tiempos de respuesta de la ruta vía internet hacia nombre el host destino HOSTNAME. Por lo tanto, un aumento repentino en la pérdida de paquetes o en el tiempo de respuesta, a menudo es una indicación de problemas de sobrecarga en un enlace.

mtr scanme.nmap.org

mtr -n scanme.nmap.org

mtr -c60 scanme.nmap.org

Debido a que mtr puede generar una gran cantidad de tráfico de red, se recomienda no dejarlo corriendo de manera indefinida.

Entonces si un router se presenta caido de manera constante, o si mtr consistentemente muestra más de un 5 por ciento en la pérdida de paquetes o largos tiempos de tránsito en el mismo router, entonces es seguro decir que ese router en particular tiene un problema. Si se trata de un router que podemos controlar, entonces hay buenos motivos para intentar arreglarlo. Si no es así, entonces podemos usar dig o whois para averiguar a quién pertenece, incluso para avisarles sobre el problema por si no se han dado cuenta.

Linux Networking: Pruebas y seguimiento de cableado

“No importa cuántas certificaciones puedas tener, no importa qué tan avanzado seas en ingeniería de alto nivel, nunca te vas a escapar de hacer cableado para Redes.”

Hay todo tipo de herramientas interesantes para realizar pruebas con el cableado, usando pequeños aparatos de bajo costo:

Recursos y herramientas básicas para cableado:

  • Cable para LAN, se recomienda Cat5e.
  • Conectores RG45.
  • Martilla cables (Punch Down Tool, 110 Blade).
  • Patrón B cuando se martilla-perfora el cable.
  • Tijeras de electricista.
  • Crimpadora (Crimper).
  • Para probar los cables (Patch Cable Tester).

Posición de cables en “Patch Cable”:

  • Naranja/Blanco, Naranja
  • Verde/Blanco, Azul
  • Azul/Blanco, Verde
  • Café/Blanco, Café
T568B

T568B

Linux Networking: “three-way handshake”

Para establecer una conexión, TCP utiliza lo que se conoce como negociación en tres pasos (three-way handshake). Antes de que un cliente intente conectar con un servidor, se necesita que el servidor este escuchando por conexiones en un puerto que se encuentre abierto para ello, esto se llama una apertura pasiva (passive open), se debe verificar que el servidor-destino ofrezca el servicio activo y esté aceptando peticiones en el número de puerto que el cliente intenta usar para la sesión. Una vez que se establece la apertura pasiva, un cliente puede iniciar una apertura activa (active open).

Al establecer una negociación en tres pasos ocurre lo siguiente:

  • SYN: La apertura activa es iniciada por el cliente que envía un SYN al servidor. El cliente establece el número de secuencia del segmento a un valor al azar A.
  • SYN-ACK: En respuesta, el servidor responde con un SYN-ACK. El número de acuse de recibo se fija a uno más que el número de secuencia recibido, por ejemplo, A+1 y el número de secuencia que el servidor elige para el paquete es otro número aleatorio, por ejemplo, puede ser B.
    En caso de que el servidor no se encuentre escuchando en ese puerto, se puede regresar al cliente un paquete de respuesta con el bit RST activado, lo que significa el rechazo del intento de conexión.
  • ACK: Por último, el cliente envía un ACK de regreso al servidor. El número de secuencia se fija al número de acuse de recibo A+1 y el número de acuse de recibo se fija a uno más que el número de secuencia recibido es decir, B+1.

Establecimiento de conexión

Alcanzada esta fase, tanto el cliente como el servidor reconocen la conexión.  Se puede decir que:

  • Las fases 1, 2 establecen el parámetro de conexión (número de secuencia) para una dirección y se reconoce el acuse de recibo.
  • Las fases 2, 3 establecen el parámetro de conexión (número de secuencia) para la otra dirección y se reconoce el acuse de recibo. Con esto es que se establece una comunicación conocida como “full-duplex”.
sudo wireshark&

De la misma manera se puede usar (es mejor crear un grupo y darle sus permisos necesarios):

gksu wireshark

Seguidamente seleccionar la interface, empezar a capturar y luego ingresar el siguiente filtro:

(ip.dst == IP_EXTERNA && ip.src == IP_LOCAL) || (ip.dst == IP_LOCAL && ip.src == IP_EXTERNA) && tcp.port == 80

Usar tcpdump es un poco más divertido:

tcpdump -i eth1 -nN -c 15 ‘(tcp) and (((src host IP_LOCAL) and (dst host IP_EXTERNA)) or ((src host IP_EXTERNA) and (dst host IP_LOCAL))) and (port 80)’