STCP dispone da tempo di una funzione di rilevamento degli indirizzi IP duplicati, ma una modifica al comportamento di Microsoft Windows 2008 e 7 ha aggiunto un interessante dettaglio.
Per prima cosa, vediamo come funziona.
Il rilevamento degli 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 Src 00:13:d4:59:7a:da Tipo 0806 (ARP)
ARP Req Target 164.152.77.217 Src 164.152.77.34 [00:13:d4:59:7a:da]
Dove
|
STCP esamina il campo 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>
Ad esempio:
11:13:43 AVVISO (5): l'indirizzo MAC 00:13:d4:59:7a:da sta utilizzando il nostro indirizzo IP 164.152.77.34
"MAC" sta per Media Access Control (controllo di accesso ai media) e conoscere l'indirizzo MAC fornirà alcuni indizi sull'identità dell'host responsabile. I primi 3 byte dell'indirizzo sono chiamati Organizationally Unique Identifier (OUI) e possono essere utilizzati per determinare alcune informazioni sulla scheda Ethernet o sull'host in cui si trova. Ad esempio, Stratus due OUI registrati, 00-00-A8 e 00-04-FC. È possibile cercare qualsiasi OUI all'indirizzo http://standards.ieee.org/develop/regauth/oui/public.html.
Molti host, compreso STCP, quando si avviano o quando viene configurata un'interfaccia IP inviano quello che è noto come ARP gratuito. Questo frame cerca fondamentalmente il proprio indirizzo IP e, se ottiene 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 mentre avvia una delle sue interfacce. Si noti che sia il Target e Src hanno lo stesso indirizzo IP.
10:19:53.045 Rcvd Ether Dst ff:ff:ff:ff:ff:ff Src 00:00:a8:41:3b:6e Tipo 0806 (ARP)
ARP Req Target 164.152.77.34 Src 164.152.77.34 [00:00:a8:41:3b:6e]
Ok, allora qual è questa rughetta di cui parlavo 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 Src 1c:c1:de:b4:76:60 Tipo 0806 (ARP)
ARP Req Target 164.152.77.34 Src 0.0.0.0 [1c:c1:de:b4:76:60]
Il risultato è che STCP ritiene che si tratti di una richiesta "normale" per il proprio 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 [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 Windows riconosce la duplicazione e passerà a un indirizzo locale di collegamento del tipo 169.254.X.Y.
Perché Microsoft ha apportato questa modifica? Sembra che molti stack TCP (incluso STCP) aggiornino la 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 in 0.0.0.0, Microsoft impedisce agli stack TCP (incluso STCP) di aggiornare le voci della cache ARP.
