STCP ha tenido detección de direcciones IP duplicadas durante bastante tiempo, pero un cambio en el comportamiento de Microsoft Windows 2008 y 7 ha añadido una interesante arruga.
Primero repasemos cómo funciona.
La detección de direcciones IP duplicadas se basa en el protocolo de resolución de direcciones (ARP).
La herramienta packet_monitor muestra un paquete ARP en dos líneas como
11:13:43.123 Rcvd Ether Dst ff:ff:ff:ff:ff:ff:ff Src 00:13:d4:59:7a:da Tipo 0806 (ARP)
Objetivo del ARP Req. 164.152.77.217 Src 164.152.77.34 [00:13:d4:59:7a:da]
Donde
|
STCP mira el Src y si coincide con la dirección IP de la interfaz en la que se recibió, entonces STCP informa de una dirección IP duplicada en el syserr_log con un mensaje formateado como
<time> WARNING (<index>): MAC address <MAC address> is using our IP address <IP address>
Por ejemplo:
11:13:43 ADVERTENCIA(5): La dirección MAC 00:13:d4:59:7a:da está usando nuestra dirección IP 164.152.77.34
El "MAC" significa Control de Acceso a los Medios y conocer la dirección MAC te dará algunas pistas para identificar al anfitrión infractor. Los primeros 3 bytes de la dirección se llaman el Identificador Único de la Organización (OUI) y pueden ser usados para determinar algo sobre la tarjeta Ethernet o el host en el que se encuentra. Por ejemplo, Stratus tiene dos OUI registrados, 00-00-A8 y 00-04-FC. Puede buscar cualquier OUI en http://standards.ieee.org/develop/regauth/oui/public.html.
Muchos hosts, incluyendo STCP, cuando arrancan o cuando se configura una interfaz IP envían lo que se conoce como un ARP gratuito. Este marco básicamente busca su propia dirección IP, si obtiene una respuesta sabe que la dirección IP está en uso. He aquí un ejemplo de un trazado packet_monitor que muestra el ARP gratuito enviado por otro módulo VOS cuando saca a relucir una de sus interfaces. Obsérvese que tanto el Objetivo y Src tienen la misma dirección IP.
10:19:53.045 Rcvd Ether Dst ff:ff:ff:ff:ff:ff:ff Src 00:00:a8:41:3b:6e Tipo 0806 (ARP)
ARP Req. Objetivo 164.152.77.34 Src 164.152.77.34 [00:00:a8:41:3b:6e]
Bien, entonces, ¿qué es esta arruga que mencioné al principio de este post?
A partir de Windows 2008 y Windows 7, la pila TCP de Microsoft envía el ARP gratuito con el campo Src fijado en 0.0.0.0.
10:45:10.530 Rcvd Ether Dst ff:ff:ff:ff:ff:ff Src 1c:c1:de:b4:76:60 Tipo 0806 (ARP)
Objetivo del ARP Req. 164.152.77.34 Src 0.0.0.0 [1c:c1:de:b4:76:60]
El resultado es que STCP piensa que es una consulta "normal" para su dirección Ethernet y responde con una respuesta normal
10:45:10.530 Xmit Ether Dst 1c:c1:de:b4:76:60 Src 00:00:a8:41:3b:6e Tipo 0806 (ARP)
ARP Rep Objetivo 0.0.0.0 [1c:c1:de:b4:76:60] Src 164.152.77.34 [00:00:a8:41:3b:6e]
No registra ninguna indicación de una dirección IP duplicada. La buena noticia es que la pila de Windows reconoce la duplicación y cambiará a una dirección local de enlace de la forma 169.254.X.Y.
¿Por qué Microsoft hizo este cambio? Parece que muchas pilas TCP (incluyendo STCP) actualizarán su entrada de caché ARP para la dirección IP de origen con la dirección Ethernet incluida en el marco ARP. Si la dirección IP es un duplicado, se terminan rompiendo las conexiones actuales a la dirección IP duplicada, ya que los paquetes son redirigidos al host duplicado. Al cambiar el campo Src a 0.0.0.0 Microsoft evita que las pilas TCP (incluyendo STCP) actualicen sus entradas de caché ARP.