Ich möchte ein syn-Paket an meinen httpd-Server senden und ein antwortendes syn-ack-Paket erhalten. Aber wenn ich mit Wireshark überwache, wird das Paket von meiner lokalen Schnittstelle gesendet, lo
und nicht eth0
.
Ich habe versucht, einige verschiedene Werte in setsockopt
zu setzen, wie Sie im folgenden Code sehen können, aber keiner scheint zu funktionieren, es benutzt immer die lo
Schnittstelle und nicht eth0
. Ich weiß nicht, ob es im tcp-Paket etwas falsch ist, das es durch die lokale Schnittstelle laufen lässt, oder ob es etwas anderes ist.
Meine Schnittstellen:
%Vor%BEARBEITEN
%Vor% Aber es geht immer noch durch lo
interface. Ist es etwas mit der überbrückten Netzwerkschnittstelle in meiner virtuellen Maschine?
BEARBEITEN 2
Ich habe jetzt meine rohen ip-Pakete mit denen verglichen, die hping2 sendet, und die einzige Sache, die sich unterscheidet, ist die Schnittstellen-ID (spezifiziert im Rahmen) und dass die Ethernet-Schicht keine MAC-Adressinformation enthält. hping2 sendet über die eth0
-Schnittstelle und enthält alle MAC-Adressinformationen. Mein Programm sendet es durch lo
und enthält keine MAC-Informationen ( vielleicht wird es durch lo
interface gesendet, weil es keine MAC-Adresse Informationen in dem Paket enthält ). Guck auf dieses Bild:
Ich habe auch den Quellcode von hping2 mit meinem Code verglichen, um ein rohe IP-Paket zu erstellen, und ich kann nichts sehen, was dazu führen würde, dass die Pakete wie in meinem Fall die Schnittstelle lo
durchlaufen. Und ich habe überhaupt keine Ahnung, warum das Programm meines hecks keine MAC-Adressen in meinen Paketen enthält. Alles andere in meinem Paket ist gleich dem Inhalt in den hping2-Paketen, außer der Sequenznummer, die zufällig ist.
Irgendwelche anderen Ideen?
Ich habe es selbst gelöst. Es war die sin.sin_addr.s_addr
, die auf die IP des Absenders zeigte, aber es mussten die Server ip sein! Seien Sie vorsichtig, weil solche Fehler im Code nicht immer einfach zu erkennen sind! :-)
Jetzt enthalten die Pakete korrekte MAC-Informationen.
Das nächste Problem ist, warum ich keine syn-acks
vom Server bekomme, aber ich werde eine neue Frage für dieses Problem stellen.
Tags und Links c++ raw-sockets network-interface