STCP ha avuto il rilevamento di indirizzi IP duplicati per un bel po' di tempo, ma un cambiamento nel comportamento di Microsoft Windows 2008 e 7 ha aggiunto un'interessante ruga.
Prima di tutto esaminiamo come funziona.
Il rilevamento di indirizzi IP duplicati si basa sul protocollo di risoluzione degli indirizzi (ARP).
Lo strumento packet_monitor mostra un pacchetto ARP in due righe come
11:13:43.123 Rcvd Ether Dst ff:ff:ff:ff:ff:ff:ff:ff:ff Src 00:13:d4:59:7a:da Tipo 0806 (ARP)
ARP Req Obiettivo 164.152.77.217 Src 164.152.77.34 [00:13:d4:59:7a:da]
Dove
|
STCP guarda il Src e se corrisponde all'indirizzo IP dell'interfaccia su cui è stato ricevuto, STCP segnala un indirizzo IP duplicato nel syserr_log con un messaggio formattato come
<time> WARNING (<index>): MAC address <MAC address> is using our IP address <IP address>
Per esempio:
11:13:43 AVVISO(5): L'indirizzo MAC 00:13:d4:59:7a:da sta usando il nostro indirizzo IP 164.152.77.34
Il "MAC" sta per Media Access Control e conoscere l'indirizzo MAC vi darà alcuni indizi sull'identità dell'host che ha commesso l'infrazione. I primi 3 byte dell'indirizzo sono chiamati Organizationally Unique Identifier (OUI) e possono essere utilizzati per determinare qualcosa sulla scheda Ethernet o sull'host in cui si trova. Ad esempio, Stratus ha due OUI registrate, 00-00-A8 e 00-04-FC. È possibile consultare qualsiasi OUI all'indirizzo http://standards.ieee.org/develop/regauth/oui/public.html
Molti host, incluso STCP, quando si avviano o quando viene configurata un'interfaccia IP, inviano ciò che è noto come ARP gratuito. Questo frame cerca fondamentalmente il proprio indirizzo IP, se riceve una risposta sa che l'indirizzo IP è in uso. Ecco un esempio di traccia packet_monitor che mostra l'ARP gratuito inviato da un altro modulo VOS, in quanto riporta una delle sue interfacce. Si noti che entrambi gli elementi Destinatario e Src I campi hanno lo stesso indirizzo IP.
10:19:53.045 Rcvd Ether Dst ff:ff:ff:ff:ff:ff:ff:ff:ff Src 00:00:a8:41:3b:6e Tipo 0806 (ARP)
ARP Req Obiettivo 164.152.77.34 Src 164.152.77.34 [00:00:00:a8:41:3b:6e]
Ok, allora cos'è questa ruga di cui ho parlato all'inizio di questo post?
A partire da Windows 2008 e Windows 7, lo stack TCP di Microsoft invia l'ARP gratuito con il campo Src impostato su 0.0.0.0.
10:45:10.530 Rcvd Ether Dst ff:ff:ff:ff:ff:ff:ff:ff:ff Src 1c:c1:de:b4:76:60 Tipo 0806 (ARP)
ARP Req Obiettivo 164.152.77.34 Src 0.0.0.0.0 1c:c1:de:b4:76:60]
Il risultato è che STCP pensa che questa sia una richiesta "normale" per il suo indirizzo Ethernet e risponde con una risposta normale
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 Target 0.0.0.0.0 [1c:c1:de:b4:76:60] Src 164.152.77.34 [00:00:a8:41:3b:6e]
Non registra alcuna indicazione di un indirizzo IP duplicato. La buona notizia è che lo stack di Windows riconosce la duplicazione e passa a un indirizzo locale di collegamento del modulo 169.254.X.Y.
Perché Microsoft ha fatto questo cambiamento? Sembra che molti stack TCP (incluso STCP) aggiornino la loro voce della cache ARP per l'indirizzo IP di origine con l'indirizzo Ethernet incluso nel frame ARP. Se l'indirizzo IP è un duplicato, si finisce per interrompere le connessioni correnti all'indirizzo IP duplicato, poiché i pacchetti vengono reindirizzati all'host duplicato. Modificando il campo Src a 0.0.0.0.0 Microsoft impedisce agli stack TCP (incluso STCP) di aggiornare le loro voci della cache ARP.