Solucionando errores TCP/IP. 2

Próximo salto

Todos los equipos que utilizan cualquier versión de Windows y el protocolo TCP/IP usan una Tabla de enrutamiento IP. Esta tabla se usa para determinar el siguiente salto de interfaz y dirección IP. La tabla de enrutamiento almacena la información referente a destinos y como alcanzarlos. Hay una serie de entradas predeterminadas y dependientes de la propia configuración del equipo. Nosotros podemos agregar entradas desde la línea de comandos, o pueden añadirse dinámicamente al interactuar con enrutadores.


Cuando un paquete IP es reenviado, se usa la tabla para determinar:



  • Salto siguiente a dirección IP. Para una entrega directa (en el que el destino es un nodo adyacente), el siguiente salto IP es la IP destino en el paquete. Para una entrega indirecta (el destino no es adyacente), el siguiente salto IP es la IP de un enrutador.
  • Salto siguiente a interfaz. Aquí se identifica a qué interfaz, física (tardeta de red) o lógica se usará para el reenvío del paquete.

Antes de la determinación del siguiente salto, se usa ARP. En tecnologías LAN como ethernet y Token Ring, ARP intentará resolver la dirección MAC para el siguiente salto y reenviará el paquete usando la interfaz identificada como salto siguiente.


Contenido de la tabla de enrutamiento

Los campos más típicos de una tabla de enrutamiento en Windows Server 2003:



  • Destino de red. Una IP o un ID de red.
  • Máscara de red. La máscara utilizada para coincidencia de una dirección destino y la IP del campo destino de red.
  • Puerta de enlace(siguiente salto). IP donde se reenviará el paquete.
  • Interfaz. Interfaz de red a usar para el reenvío del paquete.
  • Métrica. Indica el costo de la ruta para la elección de la mejor entre múltiples rutas. Su uso más normal es indicar el número de saltos (enlaces o enrutadores a cruzar) en la ruta a su destino.
  • Rutas persistentes. Si se han configurado rutas agregadas.

Las entradas de la tabla pueden ser:



  • Rutas de red directas. Rutas para subredes a las que el nodo está directamente unido. Para éstas, el campo de puerta de enlace puede estar en blanco o contener la IP de la interfaz de subred. Si la dirección es local, la entrega requiere un pequeño esfuerzo adicional. ARP resuelve la IP a una dirección MAC de la tarjeta destino. Aquí los problemas suelen estar relacionados con ARP o la máscara de red, usando comandos ARP o Ipconfig podemos solucionarlos.
  • Rutas de red remotas. Rutas accesibles a través de enrutadores y que no están unidas directamente al nodo. El campo de puerta de enlace es la IP de un enrutador local. Cuando la dirección es remota, se determina que puerta de enlace se usará para alcanzarla. En una red con sólo un enrutador determinarlo es sencillo. Pero, en una red con más de un enrutador, determinar la puerta de enlace a usar puede complicarse.


IP lo soluciona consultando la tabla de enrutamiento. Sirve como un árbol de decisión que ayuda a IP a decidir qué interfaz y puerta de enlace debe utilizarse para el envío del tráfico saliente. La tabla contiene diversas rutas individuales y cada una de ellas consiste en un destino, máscara de red, puerta de enlace y métrica.


La tabla se analiza de lo más específico a lo más general, enviándose el paquete por la primera puerta de enlace que coincida con el destino del paquete. Si hay dos rutas iguales, se elegirá la que tiene la métrica más baja. En caso de estar ocupada, el nodo seleccionará arbitrariamente la entrada a usar.



  • Rutas de host. Ruta a una IP específica. Estas rutas permiten el enrutado entre IPs. La ID de red es una IP específica y la máscara de red 255.255.255.255.
  • Ruta predeterminada. Ruta a usar cuando no se encuentran o una red más específica o una ruta de host. De manera predeterminada es 0.0.0.0 y máscara de red 0.0.0.0. La puerta de enlace es la predeterminada en el nodo.

Para la determinación de que entrada a usar, IP realiza una operación lógica AND entre la IP de destino y el campo de máscara de red de cada entrada. El resultado se compara con el campo Destino de red de la entrada coincidente.


La lista de rutas coincidentes se compila. y se selecciona la que tiene mayor número de bits establecido a 1 en la máscara. Esta ruta será la más específica a la IP de destino. Si hay más de una ruta, el enrutador utiliza la de métrica más baja para seleccionar la mejor ruta. Si hay varias con la misma métrica baja, se elige arbitrariamente la entrada a usar.


El resultado del proceso es la selección de una ruta única de la tabla de enrutameinto. Si el proceso falla, hay un error de enrutado. El error se indica como TCP o UDP si el envío es a un host y en el caso de un enrutador ‘Destino o host inalcanzable’ y el paquete se descarta.


En cuanto se ha determinado la ruta, se procede a identificar la interfaz e IP de próximo salto:



  • Si la dirección del campo Puerta de enlace está en blanco o tiene una IP asignada a una interfaz en el nodo de reenvío:

    • La dirección de próximo salto se establece como destino en el paquete IP.
    • La interfaz de próximo salto se establece a la interfaz que está especificada en el campo interfaz.

  • Si la dirección del campo puerta de enlace no está asignada a una interfaz en el nodo de reenvío:

    • la dirección de próximo salto se establece a la IP del campo puerta de enlace para la ruta.
    • La interfaz de próximo salto se establece a la interfaz que está especificada en el campo interfaz.

Con los comandos route print o netstat -r obtenemos una salida similar a:


routeprintnetstat-r


En este ejemplo hallamos:



  • Primera entrada: Destino y máscara 0.0.0.0/0, es la ruta predeterminada. Cualquier destino al que se le haga la operación AND con esta ruta da como resultado 0.0.0.0. por lo tanto la ruta predeterminada coincide con cualquier destino. Si ésta es la elegida la dirección de próximo salto le corresponde a 192.168.0.1 y la interfaz de próximo salto 192.168.0.225 que es el adaptador de red.
  • Segunda entrada: 127.0.0.0/8, que es la ruta de red loopback. Todos los paquetes envíados a una dirección 127.x.y.z tienen un próximo salto a 127.0.0.1 y la interfaz es la misma 127.0.0.1.
  • Tercera entrada: 192.168.0.0/24, es la ruta de red. Si ésta es la elegida la ip de próximo salto y la interfaz son 192.168.0.225.
  • Cuarta entrada: 192.168.0.255/32, ruta de host a la IP del host, todos los paquetes envíados a dicha IP tienen como próximo salto e interfaz la IP 127.0.0.1.
  • Quinta entrada: 192.168.0.255/32, ruta de host IP broadcast para la clase C 192.168.0.0/24.
  • Sexta entrada: 224.0.0.0/3, ruta de tráfico multicast envíada por este host. Todos los paquetes multicast tienen como próximo salto e interfaz la ip 192.168.0.255.
  • Séptima entrada: 255.255.255.255/32 ruta de host IP limitada de broadcast.

Houston we have a problem!


Introducción

Vamos a intentar explicar unas nociones para identificar los problemas de la comunicación TCP/IP y dar algunos pasos que podemos llevar a cabo para corregirlos.


Generalmente seguiremos un patrón:



  1. Comprobar que la interfaz que está dando problemas no esté desconectada.
  2. Comprobar que la configuración TCP/IP es adecuada y correcta.
  3. Comprobar que existe un camino de enrutamiento entre el equipo y su destino.
  4. Si la confianza con el enlace es dudosa, podemos utilizar el comando pathping en distintas ocasiones del día y registrar el ratio de éxito.

Si estos simples pasos no nos sirven de solución, podemos usar un analizador de protocolo de red, como Microsoft Network Monitor, y capturar el tráfico de red.


Cuando tenemos un problema deberíamos preguntarnos:



  • ¿Otros equipos en la misma red pueden alcanzar el recurso?
  • ¿Qué aplicaciones están fallando, cuáles funcionan y hay relación entre ellas? ¿Algún patrón deducido?
  • ¿Es un problema de conectividad o de resolución de nombres? Y sí es lo segundo ¿Qué resolución usa la aplicación que falla, NetBIOS o Host names?
  • La aplicación que falla, ¿Había estado funcionando correctamente hasta el error?
  • ¿Hemos hecho cambios en el equipo o en la red entre el funcionamiento correcto y la aparición del error?

Podemos usar la característica de reparación después de haber comprobado que el adaptador no está desconectado, ello hará que se refresque la configuración de red del adaptador. Esta reparación realiza lo siguiente:































                                   Acción Similar a:
1 Comprueba si DHCP está habilitado y si lo ésta, emite una renovación broadcast para refrescar la IP. Ipconfig /renew *
2 Limpia la caché ARP arp -d
3 Limpia la caché NetBIOS nbtstat -R
4 Limpia la caché de cliente DNS ipconfig /flushdns
5 Registra de nuevo con WINS nbstat -RR
6 Registra de nuevo con DNS ipconfig /registerdns

* Una renovación de broadcast hace que un equipo acepte cualquier concesión de cualquier servidor DHCP disponible. Por contra, un ipconfig /renew (renovación unicast) renueva sólo la concesión existente del último servidor DHCP desde el que el cliente aceptó la concesión. El primer caso es preferible en las ocasiones en que existe un problema con el servidor DHCP del que se aceptó la concesión.


Si aún así seguimos con el problema, comprobaremos la configuración de la red y del dispositivo de red, desde la configuración de Estado de la conexión de red, o utilizando las herramientas de línea de comando como Netdiag.exe o Ipconfig. Las tres tienen información redundante y diferencias al mismo tiempo entre ellas mismas.


Para comprobar el estado:


Clic derecho sobre la conexión de red y pulsamos en Estado.


status


Las ventajas en este caso son: monitorizar en tiempo real la actividad de la red y ver fácilmente las propiedades de la conexión pulsando en propiedades, pudiendo cambiar y revisar cliente, servicios o protocolos.


Por contra, no tenemos acceso a una conexión que esté desconectada, los detalles son limitados, sólo una conexión a la vez, datos de ipv4 y no los de ipv6 y no podemos redirigir la info a la impresora.


Si usamos IPconfig /all, obtenemos un informe de configuración detallada para todas las interfaces. La salida puede ser redirigida a un archivo de texto o de word, al estilo,


ipconfig /all > C:Mis documentosipconfig.txt


Con una salida similar a:


ipconfigout


Las ventajas de ipconfig son: una información de equipos multi tarjeta en una única operación, podemos redirigir los resultados y obtener copia impresa, muestra tanto ipv4 como ipv6 y además con más información que usando Estado.


La desventaja es que no puede usarse para mostrar información de un equipo remoto.


Y con Netdiag.exe aislamos los problemas de conectividad y de red, realizando tests más extensos que con ipconfig. Estos tests y la información que nos facilitan nos ayudará a identificar y aislar los problemas de red. Y como no requiere parámetros u opciones a especificar sólo hemos de ocuparnos de analizar la salida más que de entrenar a los usuarios a usarla.


Podemos instalarla desde las Support tools.


Para ejecutarla desde la línea de comandos debemos indicar la ruta donde está netdiag.exe, por ejemplo, C:ToolsNetdiag.exe.


La salida la podemos redirigir a una carpeta y guardarla en un archivo de texto.


La salida nos proporciona una lista detallada de información de configuración y de los tests llevados a cabo.


Las ventajas de netdiag son: información proporcionada de equipos multitarjeta en una operación única, que puede ser redirigida y guardada en un archivo, muestra ipv4 e ipv6 y la variedad de tests hacen que el informe sea de un diagnóstico detallado.


Si siguen los problemas, usaremos los comandos ping y pathping para comprobar la capacidad del equipo para conectarse a otro host mediante TCP/IP.

Dmdiag

Dmdiag (dmdiag.exe) o Disk Manager Diagnostics, es una herramienta de línea de comandos que proporciona información sobre discos y volúmenes dinámicos (MBR y GPT), esta información nos sería útil, en su caso, para facilitarla a la Asistencia técnica de Microsoft  o para utilizarla nosotros mismos si sabemos cómo.

Dmdiag es parte de las Windows Support Tools y su sintaxis es bastante común:

dmdiag [-f nombre_archivo] [-v]  [/?]

-f nombre_archivo : Especificamos el nombre del archivo donde volcará la información de salida, si no se especifica de forma predeterminada será dmdiag.txt en la misma carpeta/directorio donde ejecutemos la herramienta, y si no usamos el parámetro (-f) la salida será por pantalla.

-v : Activa verbose mode, esto añade información sobre los discos y volúmenes dinámicos, con ello logramos un informe más completo.

-/? : Nos muestra la ayuda sobre la herramienta.

Solucionando errores TCP/IP. 1

Sin entrar en demasiados detalles comentaré que MS re-escribió la pila de TCP/IP en los 90 para mejorar ciertos aspectos de la implementación del protocolo TCP/IP. En cada nueva generación de Windows, la implementación de dicha pila ha continuado evolucionando y incluyendo mejoras y servicios para aumentar el rendimiento la seguridad y la fiabilidad. La pila TCP/IP en Windows Server 2003 se vende como más autoajustable, escalable, fácil de administrar, rápida y más segura. Además de estar asociada a servicios instalados predeterminadamente y que no pueden desinstalarse desde el complemento de conexiones de red.

Como en versiones anteriores de Windows nos encontramos con cierta variedad de herramientas de diagnóstico y reparación incluídas en el propio SO, que en este caso han sido aumentadas.

Introducción al proceso TCP/IP

TCP/IP sigue una secuencia para el establecimiento de una comunicación en una red o entre redes dispersas. Antes del envío del primer paquete que establecerá la sesión de comunicación, el protocolo en el envío al host lleva a cabo cuatro pasos definidos:

  1. Resuelve el nombre del host o nombre NetBIOS a una dirección IP.
  2. Usando la IP destino y la tabla de rutas, determina la interfaz a usar en el siguiente salto de IP.
  3. Para tráfico:
    1. Unicast en tecnologías como ethernet, Token Ring y FDDI(Fiber Distributed Data Interface), el protocolo ARP (Address Resolution Protocol) resuelve el siguiente salto de dirección IP hacia una MAC address.
    2. Multicast en ethernet y FDDI, la dirección IP multicast de destino es mapeada a la MAC address multicast correspondiente. En Token Ring se usa la dirección funcional 0xC0-00-00-04-00-00. Y en broadcast la MAC address se mapea a 0xFF-FF-FF-FF-FF-FF.
  4. El datagrama IP es envíado a la dirección MAC, resuelta mediante ARP, al mapeo multicast o la dirección de broadcast.

La pila de TCP/IP siempre sigue el proceso descrito para determinar como llevar un paquete de un sitio a otro.

Resolución de un nombre a dirección IP

Si el destino está en formato nombre NetBIOS o nombre de Host es necesaria la resolución antes de que IP pueda enviar el primer paquete. IP sólo reconoce direcciones IP, la resolución de nombres de host o NetBIOS a una dirección IP, son realizadas, para cada uno, de distintas formas.

De nombre NetBIOS a una dirección IP

Estos nombres pueden ser directamente trasladados a una dirección IP mediante cuatro mecanismos: consultando la caché de nombre NetBIOS, consultando a un servidor WINS, por broadcasting o comprobando el archivo LMHOSTS.

Windows Server 2003 siempre comienza con la caché, en caso de fallo usará: un servidor WINS, series de broadcasts o el LMHOSTS. De las tres se usará primero dependerá en cada equipo de su tipo de nodo. De forma predeterminada el tipo de nodo es Híbrido o H-node, que comienza por el servidor WINS y seguirá con las series de broadcasts. Si ninguno de los métodos funciona, el cliente convierte el nombre NetBIOS en nombre de Host y lleva a cabo la resolución de Host-name.

En Windows Server 2003 el tipo de nodo predeterminado es B-node, convirtiéndose en H-node cuando se configuran con un servidor WINS.

Tipos de nodo

B-node (Broadcast) Utiliza consultas de nombre NetBIOS por broadcast para registro y resolución de nombres. Tiene dos problemas serios: Broadcast molesta a todos los equipos en la red y además los enrutadores no reenvían broadcast, así que sólo funciona en redes locales.
P-node (Peer-peer) Utiliza un servidor, como WINS. No hay broadcast, la consulta va directamente al WINS.
M-node (Mixed) Es una combinación de los tipos B-node y P-node. De forma predeterminada actúa como B-node, si es incapaz de resolver el nombre de esta forma, entonces su consulta se realiza en modo P-node.
H-node (Hybrid) Combinación de P-node y B-node. De forma predeterminada actúa como P-node, si es incapaz de resolver el nombre entonces pasa a modo B-node.

 

El comando nbstat -a nos servirá para comprobar la resolución de NetBIOS pura.

 

De nombre host o dominio a dirección IP

Los nombres de host pueden ser directamente resueltos mediante la caché de cliente DNS, la cual contiene sus entradas en el archivo HOSTS, o mediante un servidor DNS. Cualquier problema que aparece aquí suelen estar relacionados con una configuración errónea del servidor DNS, entradas del archivo HOST incorrectas (dirección IP errónea, múltiples IP para un mismo Host)

Los comandos Nslookup y Netdiag nos servirán para el diagnóstico y solución de problemas con la resolución de nombres de dominio o host.