Forum: Mikrocontroller und Digitale Elektronik Router antwortet nicht auf ENC28J60 Arp-Request


von Timo .. (waswasi)


Lesenswert?

Hi,

ich habe mir eine kleine ENC28J60 Platine gebastelt. Als Sourcen 
verwende ich den Stack von Ulrich Radig 
(http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex).

Wenn ich nun den ENC28J60 mit meinem Laptop verbinde und mit 192.168.1.5 
aufrufe funktioniert alles hervorragend. Er zeigt die Web-Seite an.

Möchte ich nun einen NTP-Server vom ENC28J60 aus kontaktieren, schlägt 
das ganze fehl.

Nach Betrachtung meines Netzwerktraffics mit Wireshark sieht es so aus, 
als würde mein Router den ARP-Request des ENC28J60 nicht beantworten.

Der ENC28J60 fragt, wer hat 192.168.xx.yy (die korrekte Adresse des 
Routers),
 aber dieser Antwortet nicht. Rufe ich dieselbe Adresse im selben 
Netzwerk von meinem Laptop aus an, kommt der ARP-Response.

Sowohl Laptop als auch ENC28J60 habe ich dafür direkt per Kabel an den 
Router angeschlossen.

Hat jemand eine Idee woran das liegen kann? Ich habe irgendwie k.A. was 
da flasch läuft.

Grüße

von Mökki (Gast)


Lesenswert?

Du hast kein default Gateway eingetragen.
Der ARP Request hat nichts mit Deinem Problem zu tun.

von Timo .. (waswasi)


Lesenswert?

Hi,

wo meinst Du habe ich kein default Gateway eingetragen?

Im ENC28J60 habe ich es eingetragen. Muss ich das auch im Router setzen?

Grüße

: Bearbeitet durch User
von holger (Gast)


Lesenswert?

>wo meinst Du habe ich kein default Gateway eingetragen?

Wie sieht deine config.h aus?

von Timo .. (waswasi)


Lesenswert?

Hi,

//IP des Webservers und des Routers
#define MYIP    IP(192,168,1,5)
#define ROUTER_IP  IP(192,168,xx,yy)

//Netzwerkmaske
#define NETMASK    IP(255,255,255,0)


Falls ihr diese Einträge meint, die habe ich gesetzt.

Er sendet ja auch einen ARP-Request an die Adresse des Routers.

Der antwortet aber nicht mit einem ARP-Response (ohne kann es keine 
Kommunikation geben oder?)

: Bearbeitet durch User
von Matthias L. (Gast)


Lesenswert?

>#define MYIP    IP(192,168,1,5)
>#define ROUTER_IP  IP(192,168,xx,yy)

>//Netzwerkmaske
>#define NETMASK    IP(255,255,255,0)


Wenn x != 1 ist, dürfte es auch nicht gehen.

von Mökki (Gast)


Lesenswert?

Wenn Du die gegenseitig. " pingen kannst" ist alle ok.

Welche Adresse hast Du denn für den Router dort konkret eingetragen?

XX YY SIND WOHL NICHT ZIELFÜHREND.

von Timo .. (waswasi)


Lesenswert?

na gut es ist 192.168.1.1 :). Aber das sollte doch gehen odeR?

von Mökki (Gast)


Lesenswert?

Ja

von holger (Gast)


Lesenswert?

>na gut es ist 192.168.1.1 :). Aber das sollte doch gehen odeR?

Schliess ein Terminal an den UART an und gib dann

ping 192.168.1.1

ein. Es sollte

get PONG: 192.168.1.1

zu sehen sein. Wenn nicht sieht es den Router nicht.

von Norbert (Gast)


Lesenswert?

Ein ARP request wird nicht an eine IP Adresse gesendet sonder per 
Broadcast ins lokale Segment geschrien. Die Ziel MAC im ARP Paket ist 
FF:FF:FF:FF:FF:FF

In diesem Paket fragt man in der Payload nach der IP Adresse.

Wer sich bemüßigt fühlt, der antwortet!

Und default Gateways haben schon gar nichts damit zu tun, die kommen 
erst viel, viel später.

von Timo .. (waswasi)


Lesenswert?

Ok das stimmt. Es ist natürlich so dass der ENC28J60 an die 
Broadcastadresse ff:ff:ff:ff sendet und -nach- der Mac-Adresse von 
192.168.1.1 fragt.

Dieser Antwortet aber nicht an die im ARP-Request mitgesendeten 
MAC-Adresse. Das konfigurierte Default-Gateway wird also "erfragt" im 
ARP-Request.

von Timo .. (waswasi)


Lesenswert?

Wie pinge ich denn vom ENC28J60 den Router?

Ich habe den UART angeschlossen, aber wie jetzt weiter? Das Kommando 
PING 192.168.1.1 zu senden hat keinen Effekt?!

von chester (Gast)


Lesenswert?

hast du am Router einen Filter für MAC-Adressen aktiv?

von Timo .. (waswasi)


Lesenswert?

Ja habe ich, aber ich war der Meinung der gilt nur für WLAN?

von Timo .. (waswasi)


Lesenswert?

Wie genau kann man denn mit dem ENC28J60 einen Rechner anpingen?

Ist mir nicht ganz klar wie das geht? Könnte mir das einer evtl. 
erklären :/ ? (Terminal habe ich am UART angeschlossen)

von chester (Gast)


Lesenswert?

was sagt folgendes mit abscliesßendem <RETURN>:

help

von Timo .. (waswasi)


Lesenswert?

leider gar nichts. Ich gebe das im Terminal ein oder?

von chester (Gast)


Lesenswert?

baudrate ok?
kabel ok?

von Timo .. (waswasi)


Lesenswert?

Ja empfangen tu ich ja massenhaft. Wenn ich help eingebe passiert 
nichts, wenn ich ping 192.168.1.1 eingebe gibt er es 1 zu 1 wieder im 
Received-Fenster aus, sonst nichts

: Bearbeitet durch User
von Timo .. (waswasi)


Lesenswert?

Muss ich noch irgendein Programm starten für die Telnet-Anwendung oder 
so?

von Timo .. (waswasi)


Lesenswert?

Ok also ich geh jetzt erstmal ins Bett. Danke nochmal für die Hilfe bis 
hierher. Muss mir das Ganze morgen nochmal anschauen.

Grüße

von Timo .. (waswasi)


Lesenswert?

So nun hab ich es dank kurzem Nachschlagen im Code noch geschafft den 
Ping abzusenden :).

Er erfordert ein "Send on Enter" = CR, sonst macht er nichts. Ein CR/LF 
führt zum nicht Finden des Befehls!!

Es zeigt sich aber dass der Router sich nicht anpingen lässt, der Laptop 
aber schon.

Gute Nacht und bis morgen...

von c-hater (Gast)


Lesenswert?

Timo .x schrieb:
> Ok das stimmt. Es ist natürlich so dass der ENC28J60 an die
> Broadcastadresse ff:ff:ff:ff sendet und -nach- der Mac-Adresse von
> 192.168.1.1 fragt.

Bestimmt nicht. Schon aus rein formalen Gründen, denn "ff:ff:ff:ff" ist 
keine MAC-Broadcastadresse. ff:ff:ff:ff:ff:ff hingegen wäre eine.

> Dieser Antwortet aber nicht an die im ARP-Request mitgesendeten
> MAC-Adresse.

Dann ist wahrscheinlich die ebenfalls im ARP-Request enthaltetene 
IP-Absenderadresse nicht korrekt und/oder sie liegt nicht im gleichen 
Netz wie die das angefragten Rechners.

von Christian B. (casandro)


Lesenswert?

Die ARP-Antwort solltest Du eigentlich nicht sehen, es sei denn, Du 
benutzt einen Hub (im Sinne von Multiport Repeater) oder einen Switch 
mit "Mirror Port". Die ARP-Antwort wird nämlich direkt da hin geschickt 
woher die Anfrage kam.

von ... (Gast)


Lesenswert?

Timo .x schrieb:
 //IP des Webservers und des Routers
> #define MYIP    IP(192,168,1,5)
> #define ROUTER_IP  IP(192,168,xx,yy)
>
> //Netzwerkmaske
> #define NETMASK    IP(255,255,255,0)
>
>
> Falls ihr diese Einträge meint, die habe ich gesetzt.

Nö, die sind ja auskommentiert: #

von Kaj (Gast)


Lesenswert?

... schrieb:
> Nö, die sind ja auskommentiert: #
Noe, sind sie nicht

von Georg G. (df2au)


Lesenswert?

Der ENC hat ein Problem mit den Linkpulsen. Dadurch wird bei einigen 
Routern nicht der aktive Link erkannt und es gibt keine Antwort. Als 
Test einfach mal einen billigen Switch oder Hub dazwischen schalten bzw 
die "aktiv" LED am Router ansehen, ob überhaupt der Link erkannt wird.

Eine Lösung für das Problem (außer eben den Hub dazwischen) kenne ich 
auch nicht.

von Mökki (Gast)


Lesenswert?

Es wird Zeit für ein Grundlagenbuch zum Thema TCP/IP....
Ethernet ..

von Timo .. (waswasi)


Lesenswert?

Hi,

Ich werde versuchen ein billiges Switch/Hub aufzutreiben und es nochmal 
probieren.

Zum Link-Status kann ich mich erinnern war die Led gelb am Router. Die 
zum Laptop war grün. Was das für diesen konkreten Router für eine 
Aussagekraft hat weiß ich allerdings nicht. Werde das mal prüfen wenn 
ich wieder zu Hause bin.

Grüße

von Mökki (Gast)


Lesenswert?

Gelb bedeutet Full oder Halfduplex, oder auch 100/1000 Mbit.

Gelb ist auf jeden Fall Ok.

Netstat -rn zeigt die Routing Table und das default Gateway,
falls Radig das implementiert hat.

In deinem Post ist das alles auskommentiert, das ist falsch!

von Peter II (Gast)


Lesenswert?

Mökki schrieb:
> Netstat -rn zeigt die Routing Table und das default Gateway,
> falls Radig das implementiert hat.

das gerät hat (vermutlich) nicht mal eine Shell - wo soll er da wohl 
Netstat eingeben?

von Mökki (Gast)


Lesenswert?

Genau:
.....falls Radig das implementiert hat.

von Georg G. (df2au)


Lesenswert?

Mökki schrieb:
> Gelb ist auf jeden Fall Ok.

Ohne den Router zu kennen, ist das eine mutige Aussage. Da der ENC nur 
10Mbit/s kann, kann auch dein "100 oder 1000" nicht richtig sein.

Und noch ein Hinweis: Ein # vor "define" in einem C-Programm bedeutet 
nicht "auskommentiert".

von Timo .. (waswasi)


Lesenswert?

Also das Handbuch des Routers gibt an:

"Gelb gibt eine 10Mbps Verbindung und Grün eine 100 Mbps Verbindung an".

Das heißt der Link zum Router ist absolut in Ordnung. Werde wohl nicht 
um ein Switch/Hub zum Testen herumkommen.

von c-hater (Gast)


Lesenswert?

Timo .x schrieb:

> "Gelb gibt eine 10Mbps Verbindung und Grün eine 100 Mbps Verbindung an".
>
> Das heißt der Link zum Router ist absolut in Ordnung.

So ist es.

> Werde wohl nicht
> um ein Switch/Hub zum Testen herumkommen.

Was sollte das denn bringen?!

Was wirklich etwas bringen würde, wären ein paar Wireshark-Captures und 
ein Paar Augen, die sie lesen können, weil das daran angeschlossene 
Gehirn gelernt hat, wie die verwendeten Protokolle funktionieren...

von Mökki (Gast)


Lesenswert?

Und nochmal:

Es wird Zeit für ein Grundlagenbuch zum Thema TCP/IP....
Ethernet ..

von Timo .. (waswasi)


Lesenswert?

Soooo. Ich habe es jetzt zum Laufen gebracht :)!

Und zwar bin ich nun in die Konfiguration meines Routers, und habe ihm 
dort einen fest verdrahteten ARP-Eintrag reingeschrieben. Also 
192.168.1.5 <-> 00:35:xx:yy:zz:ff.

Und siehe da, es funktioniert! Mein NTP-Request wird korrekt weiter 
geroutet und ich bekomme eine valide Uhrzeit zurück.

Wieso der ARP-Eintrag nun nicht automatisch angelegt wurde ist mir 
leider weiterhin unklar. Jedenfalls ist das Problem jetzt erstmal 
gelöst.

Danke nochmal für die Hilfe!

Grüße

von Oliver R. (orb)


Lesenswert?

Timo .x schrieb:
> Wieso der ARP-Eintrag nun nicht automatisch angelegt wurde ist mir
> leider weiterhin unklar.

vermutlich weil Du mit

chester schrieb:
> hast du am Router einen Filter für MAC-Adressen aktiv?
Timo .x schrieb:
> Ja habe ich, aber ich war der Meinung der gilt nur für WLAN?

falsch liegst.
Durch den manuellen Eintrag hast Du die MAC im Router zugelassen.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Haste mal das ARP vom ENC und das ARP vond einem Rechner mit Wireshark 
mitgeschnitten und verglichen?
Vllt ist das ARP einfach nur nicht normgerecht vom ENC.
So könnte zB der Opcode nicht auf 1 stehen für request, sondern zB auf 2 
für reply.

Dabei ist ARP so einfach, dass ich das anfänglich per Hand mit dem ENC 
versendet habe.

: Bearbeitet durch User
von Timo .. (waswasi)


Lesenswert?

Ja werde die Arp-Requests mal vergleichen. Dann könnte man das als 
Fehlerquelle noch ausschließen.

von Georg G. (df2au)


Lesenswert?

ARP beim Radig Code ist in Ordnung. Ich hatte anfangs auch das Problem 
des nicht erkannten Links und habe damals mit dem Drahthai 
mitgeschnitten.

Beim TO war es wohl der MAC Filter in Zusammenarbeit mit etwas 
unglücklich gewählten IP Adressen.

von -.- (Gast)


Lesenswert?

ARP resopnses gehen als unicast zurück. Natürlich siehst du diese bei 
einem netzwerk bei welchem ein Switch zwischen den geräten nicht. Dieser 
begrenzt die kolisionsdomainen.

Es gibt MACs die für spezielle zwecke reserviert sind und auch noch bits 
innerhalb der MAC die eine Bedeutung haben. Wo ist die MAC her?

Nimm dir ne alte netzwerk karte und nimm die mac davon.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Man kann auch den Microchipmacbereich nehmen.
Auf der Webseite vom ENC steht da was zu.
Die letzten Bytes kann man dann der Netzwerkarte klauen ;)

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
Noch kein Account? Hier anmelden.