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
Du hast kein default Gateway eingetragen. Der ARP Request hat nichts mit Deinem Problem zu tun.
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
>wo meinst Du habe ich kein default Gateway eingetragen?
Wie sieht deine config.h aus?
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
>#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.
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.
na gut es ist 192.168.1.1 :). Aber das sollte doch gehen odeR?
>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.
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.
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.
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?!
hast du am Router einen Filter für MAC-Adressen aktiv?
Ja habe ich, aber ich war der Meinung der gilt nur für WLAN?
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)
was sagt folgendes mit abscliesßendem <RETURN>: help
leider gar nichts. Ich gebe das im Terminal ein oder?
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
Muss ich noch irgendein Programm starten für die Telnet-Anwendung oder so?
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
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...
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.
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.
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: #
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.
Es wird Zeit für ein Grundlagenbuch zum Thema TCP/IP.... Ethernet ..
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
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!
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?
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".
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.
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...
Und nochmal: Es wird Zeit für ein Grundlagenbuch zum Thema TCP/IP.... Ethernet ..
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
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.
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
Ja werde die Arp-Requests mal vergleichen. Dann könnte man das als Fehlerquelle noch ausschließen.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.