Forum: PC Hard- und Software Suche loopback device


von Daniel A. (daniel-a)


Lesenswert?

Hallo Zusammen

Ich habe ein etwas exotisches Problem. Um meinen eigenen TCP/IP Stack zu 
testen, lasse ich diesen auf meinem Linux PC laufen und nutze dann tools 
wie z.B. telnet, auf dem gleichen Computer. Mein Problem ist, weil ich 
über einen Packet Socket mit meinem TCP/IP Stack Ethernetframes 
verschicke, benötige ich dafür ein Netzwerkinterface mit einer IP und 
einer MAC Adresse. Mein Problem ist, dass ich das normale linux Loopback 
Device nicht verwenden kann, da dieses keine mac adresse hat und der 
Kernel sich bei diesem um jedes Packet im Netz 127.0.0.0/8 und nicht nur 
um die einer einzelnen Adresse wie z.B. 127.0.0.1 kümmert. Bridges und 
dummy-devices in Linux bringen auch nicht das gesuchte Ergebnis. Wenn 
ich ein W-Lan interface nehme, brauche ich einen WLan-Router, und manche 
Senden Ethernetframes mit identischer Source und Destination mac nicht 
zurück. Selbiges gillt für Ethernetinterfaces, aber dafür habe ich 
bereits ein eigenes Physisches Loopbackdevice gebaut, wo einfach RX und 
TX verbunden ist. Dieses kann ich aber bei meinem Surface Pro 3 Tablet 
nicht verwenden, da dieses nur WLan hat. Der Handy WLan ist auch keine 
Lösung, weil dann der Akku in wenigen Stunden leer ist.

Nun zu meiner Frage:
Kennt jemand einen Treiber für Linux, der ein Netzwerkinterface mit Mac 
Adresse bereitstellt, bei welchem das Empfangen der selben 
Ethernetframes, die Gesendet werden, simuliert wird und bei welchem sich 
der Kernel nur um die IP des Interfaces kümmert, und nicht um das 
gesammte Subnetz?
Oder kennt jemand alternativ einen kleinen kaufbaren USB Stick der dies 
tut und sich als ethernet schnittstelle ausgibt?

Ideal wäre es wenn der Treiber keine untere grenze für die Grösse von 
Ethernet Packeten hätte, wie dies beim WLan Treiber meines Surface Pro 3 
der fall ist, der immer mindestens 114 bytes haben will. Dies ist jedoch 
optional, weil ich dafür einen workaround habe.

Mit Freundlichen Grüssen
Daniel Abrecht

von Andre K. (andreko)


Lesenswert?

Wie wäre es mit einer einfachen VM auf deinem Rechner?

von Rolf M. (rmagnus)


Lesenswert?

Daniel A. schrieb:
> Nun zu meiner Frage:
> Kennt jemand einen Treiber für Linux, der ein Netzwerkinterface mit Mac
> Adresse bereitstellt, bei welchem das Empfangen der selben
> Ethernetframes, die Gesendet werden, simuliert wird und bei welchem sich
> der Kernel nur um die IP des Interfaces kümmert, und nicht um das
> gesammte Subnetz?

Ich würd mal nach tun/tap suchen. Ein tap-Device sollte das können.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Daniel A. schrieb:
> Dieses kann ich aber bei meinem Surface Pro 3 Tablet nicht verwenden, da
> dieses nur WLan hat.

Du kannst einen USB-LAN-Adapter verwenden, und in den wiederum einen 
RJ45-Stecker mit zwei gekreuzten Drähten stecken.

von Daniel A. (daniel-a)


Angehängte Dateien:

Lesenswert?

Danke für die schnelle Rückmeldung.

@Andre K. (andreko)
Eine VM ist natürlich eine Möglichkeit, aber dennoch etwas Umständlich 
und Rechenintensiv.

@Rufus Τ. Firefly (rufus) (Moderator)
Ja, dass habe ich mir auch schon überlegt, aber diese USB-LAN-Adapter 
sind meistens relativ gross.


Rolf M. schrieb:
> Ich würd mal nach tun/tap suchen. Ein tap-Device sollte das können.

Das ist die Lösung! Es hat zwar nicht gereicht ein TAP Device zu 
erstellen, aber mit etwas code geht es Einwandfrei.

Der von mir Verwendete code ist im Anhang.
Kompilieren: gcc -std=c99 echotap.c -o echotap
Ausführen: ./echotap
Konfigurieren: ifconfig echotap 192.168.x.y/24

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Daniel A. schrieb:
> aber diese USB-LAN-Adapter sind meistens relativ gross.

Irgendeinen Tod muss man sterben.

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.