Senden Sie ein Paket über das Netzwerk, auch wenn das Ziel der lokale Host ist

10

Wenn Sie unter Linux ein Paket an die Adresse einer seiner Netzwerkschnittstellen senden , wird dieses Paket intern weitergeleitet und niemals über das Netzwerk gesendet. Das ist in 99,99% der Fälle das Richtige.

Gelegentlich ist es beim Testen von Netzwerkkonfigurationen hilfreich, ein Paket über eine lokale Verbindung vom Computer selbst zu senden, wobei der Computer selbst das Ziel ist. Wie kann ich das machen? Zumindest für eine Busverbindung wie Ethernet, wenn nicht für eine Punkt-zu-Punkt-Verbindung. Ich interessiere mich nur für IP-Pakete (sowohl IPv4 als auch IPv6).

Gilles 'SO - hör auf böse zu sein'
quelle
Versucht nmap Scannen?
Ruban Savvy
Interessieren Sie sich dafür, dass das Paket physisch an das Netzwerk gesendet und wieder weitergeleitet wird? Oder möchten Sie nur, dass es so aussieht, als ob es so wäre (gehen Sie den Routing-Stack, die Iptables usw. durch)?
Patrick
@Patrick Ich möchte, dass es ausgeht und den lokalen Router erreicht. Ein Aufenthalt in der Stadt, aber ein Blick vor Ort, als wäre er ausgegangen, könnte unter verschiedenen Umständen auch nützlich sein.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Hattest du jemals Erfolg damit? Ich versuche derzeit, dies mit zwei TAP-Adaptern und einem einfachen Überbrückungscode zu tun, ohne Erfolg zu haben. Das Routing scheint korrekt zu sein, aber ARP scheint nicht zu funktionieren (Pakete gehen mit src mac == dst mac aus). Ich könnte mein Setup erklären, wenn es helfen würde.
Jonathon Reinhart
1
@ Gilles Ich habe nichts davon ausprobiert, aber ich kann mir vorstellen, einen Router so zu implementieren, dass er niemals etwas dorthin zurückschickt, woher es kommt, z. B. um ein ewiges Hüpfen zwischen zwei Routern zu verhindern. Nur eine Sache, die Sie beim Testen im Auge behalten sollten, falls das Paket ausgeht, aber nie zurückkommt.
Anthon

Antworten:

7

Jeder Netzwerkadapter unter Linux verfügt über einen booleschen sysctl-Parameter accept_local( /proc/sys/net/ipv4/conf/eth0/accept_local). Versuchen Sie, es für alle beteiligten Adapter auf 0 zu setzen (zusätzlich müssen Sie möglicherweise Ihre Routing-Tabelle an Ihr Test-Setup anpassen).

Stellen Sie außerdem sicher, dass rp_filter( /proc/sys/net/ipv4/conf/eth0/rp_filter) aktiviert ist (nicht 0).

Referenz: http://code.metager.de/source/xref/linux/stable/Documentation/networking/ip-sysctl.txt

Oakad
quelle