LWIP Stack: ARP Probe senden

OP #4118748
Lesenswert?
• ▲
▼
Hallo,

normalerweise senden Ethernet-Teilnehmer eine ARP-Probe nach dem Link-up 
um herauszufinden, dass niemand anderes die eigene IP-Adresse verwendet.

Beim LWIP-Stack scheint das nicht der Fall zu sein. Muss man dies als 
Option erst irgendwo aktivieren? (ARP ist bereits aktiviert und 
ARP-Anfragen warden auch vom LWIP-Stack beantwortet)

Oder gibt es eine Möglichkeit ARP-Probes manuell zu versenden?

Vielen Dank im Voraus.
Stefan
#4118863
Lesenswert?
• ▲
▼
Stefan K. schrieb:

> normalerweise senden Ethernet-Teilnehmer eine ARP-Probe nach dem Link-up
> um herauszufinden, dass niemand anderes die eigene IP-Adresse verwendet.

Das Senden von "Gratitious ARP Responses" und das Hören auf fremde ARP 
Messages ist nirgendwo in den RFCs vorgeschrieben und damit auch kein 
Mangel.

LWIP verhält sich in diesem Punkt völlig konform.

fchk
Gast #4119201
Lesenswert?
• ▲
▼
>normalerweise senden Ethernet-Teilnehmer eine ARP-Probe nach dem Link-up
>um herauszufinden, dass niemand anderes die eigene IP-Adresse verwendet.

Nein!??!!

Eine ARP-Anfrage wird gebroadcastet und hat als Absenderadresse
die IP des anfragenden Rechners. Die Antwort geht als Unicast
zurueck.

Ein "Gratuitous ARP" wird in der Praxis bei HA-Konzepten
verwendet, in denen Adressen "wandern" koennen, da muss dem
(Layer2-)Netzwerk bekannt gemacht werden, dass eine gecachte
(IP/MAC)-Adresse von einem Rechner zum anderen wandert.
Die Gratuitous ARPs sieht man ohne ARP-Anfrage im realen Leben.

Einige DHCP-Server machen einen ARP-Check, ob bei Vergabe einer
IP diese nicht belegt ist. Dann nimmt man ARP, weil ARP kann
man schlecht blocken, ICMP echo requests (aka "ping") schon.
Vermutlich hast Du das Verhalten beim DHCP Server gesehen?

(So zumindest bei IPv4.)
OP #4120881
Lesenswert?
• ▲
▼
Hallo,

ich habe die ARP-Probe (Source IP-Adresse = 0.0.0.0) bei einem Standard 
Windows Rechner und einem Standard Ethernet Switch gesehen (siehe 
Anhang, wireshark).

Wisst ihr zufällig, wie der richtige Weg ware, solch eine ARP-Probe im 
LWIP-Stack zu initiieren?

Die Idee wäre,die Funktion etharp_raw in etharp.c aufzurufen und Sender 
IP-Adresse 0.0.0.0 sowie Target MAC Adresse 00:00:00:00:00:00 zu 
übergeben.

Ich brauche die Abfrage deshalb, weil ich mich mit meinem Ethernet Gerät 
in ein LAN verbinde, dessen IP-Subnetz ich zwar kenne, aber nicht weiß, 
welche IP-Adressen bereits verwendet werden. Ich suche mir also eine 
IP-Adresse aus und möchte sie per ARP-Probe dann testen, ob sie noch 
verfügbar ist. DHCP ist in diesem Netzwerk nicht verfügbar.

Vielen Dank und Viele Grüße,
Stefan
Angehängte Dateien:
#4121006
Lesenswert?
• ▲
▼
um deine idee zu festigen:

Ich habe genau das in meinem TCP/IP-Stack implementiert, als 
fallback-lösung, wenn kein DHCP-Server verfügbar ist.

Ich mache einfach einen ARP-Scan über einen IP-Bereich, und nehme die 
erste, von der ich keine Antwort erhalte. Ob und wie man das im lwIP 
implementiert/aktiviert, weiß ich jedoch nicht.

Vieleicht ist das Thema "Zeroconf" für dich hilfreich. Das übernimmt 
genau deine gewünschte Funktion.
#4121019
Lesenswert?
• ▲
▼
Nachtrag für alle mit Halbwissen:

RFC2131 - Dynamic Host Configuration Protocol
Section 2.2
[...]
   In some environments it will be necessary to reassign network
   addresses due to exhaustion of available addresses.  In such
   environments, the allocation mechanism will reuse addresses whose
   lease has expired.  The server should use whatever information is
   available in the configuration information repository to choose an
   address to reuse.  For example, the server may choose the least
   recently assigned address.  As a consistency check, the allocating
   server SHOULD probe the reused address before allocating the address,
   e.g., with an ICMP echo request, and the client SHOULD probe the
   newly received address, e.g., with ARP.
[...]

Die Adresse wird mittels ARP geprobed, natürlich mit Absender 0.0.0.0

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.