STCP verfügt schon seit geraumer Zeit über eine Erkennung von doppelten IP-Adressen, aber eine Änderung im Verhalten von Microsoft Windows 2008 und 7 hat eine interessante Neuerung mit sich gebracht.
Schauen wir uns zunächst an, wie es funktioniert.
Die Erkennung doppelter IP-Adressen beruht auf dem Adressauflösungsprotokoll (ARP).
Das Tool packet_monitor zeigt ein ARP-Paket in zwei Zeilen als
11:13:43.123 Rcvd Ether Dst ff:ff:ff:ff:ff:ff:ff Src 00:13:d4:59:7a:da Typ 0806 (ARP)
ARP Req Ziel 164.152.77.217 Src 164.152.77.34 [00:13:d4:59:7a:da]
Wo
|
STCP prüft das Feld Src Feld, und wenn es mit der IP-Adresse der Schnittstelle übereinstimmt, auf der es empfangen wurde, meldet STCP eine doppelte IP-Adresse im syserr_log mit einer Meldung in folgendem Format
<time> WARNING (<index>): MAC address <MAC address> is using our IP address <IP address>
Zum Beispiel:
11:13:43 WARNUNG(5): Die MAC-Adresse 00:13:d4:59:7a:da verwendet unsere IP-Adresse 164.152.77.34
MAC" steht für "Media Access Control" (Medienzugriffskontrolle). Wenn Sie die MAC-Adresse kennen, erhalten Sie einige Hinweise auf die Identität des Hosts, der den Fehler begangen hat. Die ersten 3 Bytes der Adresse werden als Organizationally Unique Identifier (OUI) bezeichnet und können verwendet werden, um etwas über die Ethernet-Karte oder den Host zu erfahren, in dem sie sich befindet. Zum Beispiel hat Stratus zwei registrierte OUIs, 00-00-A8 und 00-04-FC. Sie können jede OUI unter http://standards.ieee.org/develop/regauth/oui/public.htmlnachschlagen.
Viele Hosts, einschließlich STCP, senden beim Booten oder bei der Konfiguration einer IP-Schnittstelle ein so genanntes Gratuitous ARP. Dieser Frame sucht grundsätzlich nach seiner eigenen IP-Adresse, und wenn er eine Antwort erhält, weiß er, dass die IP-Adresse in Gebrauch ist. Hier ist ein Beispiel einer packet_monitor-Aufzeichnung, die den Gratuitous ARP zeigt, der von einem anderen VOS-Modul gesendet wird, während es eine seiner Schnittstellen hochfährt. Beachten Sie, dass sowohl die Ziel und Src Felder die gleiche IP-Adresse haben.
10:19:53.045 Rcvd Ether Dst ff:ff:ff:ff:ff:ff:ff Src 00:00:a8:41:3b:6e Typ 0806 (ARP)
ARP-Anfrage Ziel 164.152.77.34 Src 164.152.77.34 [00:00:a8:41:3b:6e]
OK, was ist das für ein Problem, das ich zu Beginn dieses Beitrags erwähnt habe?
Ab Windows 2008 und Windows 7 sendet der Microsoft-TCP-Stack das unentgeltliche ARP mit dem Feld Src, das auf 0.0.0.0.
10:45:10.530 Rcvd Ether Dst ff:ff:ff:ff:ff:ff Src 1c:c1:de:b4:76:60 Typ 0806 (ARP)
ARP Req Ziel 164.152.77.34 Src 0.0.0.0 [1c:c1:de:b4:76:60]
Das Ergebnis ist, dass STCP denkt, dass dies eine "normale" Anfrage nach seiner Ethernet-Adresse ist und mit einer normalen Antwort antwortet
10:45:10.530 Xmit Ether Dst 1c:c1:de:b4:76:60 Src 00:00:a8:41:3b:6e Typ 0806 (ARP)
ARP Rep Ziel 0.0.0.0 [1c:c1:de:b4:76:60] Src 164.152.77.34 [00:00:a8:41:3b:6e]
Es wird kein Hinweis auf eine doppelte IP-Adresse aufgezeichnet. Die gute Nachricht ist, dass der Windows-Stack die Duplizierung erkennt und auf eine lokale Link-Adresse der Form 169.254.X.Y umschaltet.
Warum hat Microsoft diese Änderung vorgenommen? Es scheint, dass viele TCP-Stacks (einschließlich STCP) ihren ARP-Cache-Eintrag für die Quell-IP-Adresse mit der im ARP-Frame enthaltenen Ethernet-Adresse aktualisieren. Wenn es sich bei der IP-Adresse um ein Duplikat handelt, führt dies dazu, dass laufende Verbindungen zu der duplizierten IP-Adresse unterbrochen werden, da die Pakete an den duplizierten Host umgeleitet werden. Durch die Änderung des Src-Feldes auf 0.0.0.0 verhindert Microsoft, dass die TCP-Stacks (einschließlich STCP) ihre ARP-Cache-Einträge aktualisieren.