Guten Morgen, unter Windows 7 im Kommandofenster habe ich folgendes zum ARP cache festgestellt: Wenn ich den ARP cache mit "arp -a" auslese, dann werden alle Einträge angezeigt. 192.168.0.10 02-00-00-00-00-00 dynamisch 192.168.0.15 01-02-03-04-05-06 dynamisch Sobald ich aber einen ARP Eintrag von einer bestimmten IP Adresse 192.168.0.12 auslesen möchte, dann erhalte ich einen ARP Eintrag. arp -a 192.168.0.12 192.168.0.12 00-00-0c-07-ac-bd dynamisch Warum kann dies sein? Der ARP Eintrag für die IP Adresse 192.168.0.12 müsste doch leer sein oder?
vielleicht macht arp in diesem fall (nur eine IP angegeben) ja automatisch eine "loockup" (who has)
Wenn ich meine C# Applikation das erstemal starte, dann werden dreimal ARP request packete (192.169.0.10; 192.168.0.12; 192.168.0.15) gesendet. Dies passiert mit der Funktion SendARP.
1 | [DllImport("iphlpapi.dll", ExactSpelling = true)] |
2 | public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen); |
Bei der IP Adresse 192.168.0.12 ist das erstemal auch kein ARP Eintrag vorhanden. Ist auch richtig so. Nur wenn ich dann das zweitemal die Applikation starte, dann erhalte ich einen ARP Eintrag bei dieser IP Adresse.
netzwerk schrieb: > Bei der IP Adresse 192.168.0.12 ist das erstemal auch kein ARP Eintrag > vorhanden. Ist auch richtig so. Nur wenn ich dann das zweitemal die > Applikation starte, dann erhalte ich einen ARP Eintrag bei dieser IP > Adresse. Das ist wie Kaffeesatz lesen, woher sollen wir wissen, was Dein Programm alles schönes macht!? Erklär doch mal, wieso es beim erste Mal richtig ist, dass für die .12 kein ARP-Eintrag kommt und beim zweiten Mal ist es dann falsch!? Gibt es in dem Moment kein System mit der IP .12 und es ist deshalb falsch? Wie wäre es, einfach mal einen Wireshark / tcpdump zu verwenden?
Send arp request Methode:
1 | [DllImport("iphlpapi.dll", ExactSpelling = true)] |
2 | public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen); |
3 | |
4 | public string SendMACAddress(string ipAddress) |
5 | {
|
6 | IPAddress dstIP = IPAddress.Parse(ipAddress); |
7 | byte[] macAddr = new byte[6]; |
8 | int maxAddrLen = macAddr.Length; |
9 | int retValue = SendARP((int)dstIP.Address, 0, macAddr, ref maxAddrLen); |
10 | string macAddress = BitConverter.ToString(macAddr, 0, maxAddrLen); |
11 | return macAddress; |
12 | }
|
Erste Durchlauf: 1. Aufruf: mMacAddr = SendMACAddress("192.168.0.10"); --> mac addr vorhanden 2. Aufruf: mMacAddr = SendMACAddress("192.168.0.12"); --> mac addr leer 3. Aufruf: mMacAddr = SendMACAddress("192.168.0.15"); --> mac addr vorhanden Zweiten Durchlauf: 1. Aufruf: mMacAddr = SendMACAddress("192.168.0.10"); --> mac addr vorhanden 2. Aufruf: mMacAddr = SendMACAddress("192.168.0.12"); --> mac addr vorhanden 3. Aufruf: mMacAddr = SendMACAddress("192.168.0.15"); --> mac addr vorhanden Im zweiten Durchlauf müsste bei der IP Adresse 192.168.0.12 kein arp Eintrag auszulesen sein.
netzwerk schrieb: > Im zweiten Durchlauf müsste bei der IP Adresse 192.168.0.12 kein arp > Eintrag auszulesen sein. WARUM NICHT????? Schreib doch einfach mal, WARUM da keiner sein darf und nimm Dir nen Wireshark, dann siehst Du mit 99,9999999%iger Sichherheit, weshalb da plötzlich einer ist!
Ich habe ganz vergessen zu erwähnen, dass der Teilnehmer 192.168.0.12 absichtlich nicht am Rechner angeschlossen ist. Nur die anderen beiden Teilnehmer sind mit dem Rechner via Hub verbunden. Das ist genau das Problem. Trotzdem das der Teilnehmer mit der IP 192.168.0.12 nicht mit dem Rechner verbunden ist, erhalte ich beim zweiten Ausführen der Funktion SendMACAddress eine ungültige MAC Adresse.
In der Kommandozeile unter Windows kann ich bei zweiten Durchlauf keinen ARP Eintrag zur IP Adresse 192.168.0.12 sehen. arp -a Dies ist auch richtig so.
Wenn die angegebenen MAC-Adressen stimmen suchst Du nach einem Gerät von Cisco. Vielleicht hilft Dir das ja!? Evt. könnte es auch Proxy-ARP sein ...
Danke für eure Unterstützung. Bei zweiten Auslen erhalte ich nämlich folgende MAC Adresse: "00-00-0C-07-AC-BD" Laut wikipedia Artikel (https://de.wikipedia.org/wiki/Hot_Standby_Router_Protocol) müsste es sich hier um eine virtuelle MAC Adresse handeln. Aber so ganz habe ich das nicht verstanden.
Ich komme nochmals auf das Thema zurück. Ist es ratsam, dann die virtuelle MAC Addresse in der Applikation zu weg zu filtern?
Dazu müsste man wissen, warum Du Dich überhaupt mit ARP beschäftigst, bzw. wofür Du ARP vergewaltigen willst. Vielleicht solltest Du einfach wieder ein paar OSI-Layer hochkommen.
Eddy C. schrieb: > Dazu müsste man wissen, warum Du Dich überhaupt mit ARP beschäftigst, > bzw. wofür Du ARP vergewaltigen willst. Die letzten paar Kerle, die hier was mit Visual-Basic, Windows, ARP und DHCP machen wollten, hatten vor irgendwelche ESP8266/Arduinos im lokalen Netz zu finden. Vielleicht ist der TE hier auch so einer, ist da irgendwo ein Nest? > Vielleicht solltest Du einfach wieder ein paar OSI-Layer hochkommen. Seh ich auch so. DHCP-Client auf die ESPs, Auffinden per UDP-Broadcast. Einfach, sicher und portabel. Kein Gefrickel mit ARP-Caches, kein Screen-Scraping von Router-Configurations-Webseiten.
Hallo, mir geht es eigentlich nur darum, dass ich beim zweiten Senden vom ARP Request eine falsche MAC Adresse erhalte. Die ersten fünf Bytes von der MAC Adresse siehen dann so aus: "00-00-0C-07-AC" Es handelt sich dabei um eine virtuelle MAC Adresse. Ich verstehe trotz dem Wikipedia nicht, wie dazu kommen kann.
du wurdest gefragt WARUM du "ARP Request" sendest.. diese Frage zu beantworte wäre u.U: sinnvoll, weil du dich vielleicht! mit sachen quälst die du überhaupt nicht bräuchtest.. aber egal: es scheint ja um HSRP zu gehen, hast du sowas überhaupt?
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.