Warum antwortet eine IP auf einer Dummy-Schnittstelle auf eine ARP-Anforderung unter eth0?

2156
davidgo

Ich habe auf meinem (Ubuntu 15.10) -Laptop eine Dummy-Schnittstelle mit einer IP-Adresse 10.0.3.144, Netzmaske 255.255.255.255 angezeigt

Ich habe einen USB -> Ethernet Adapter. Wenn es eingesteckt ist, ist es so konfiguriert, dass es eine "eth0" -Schnittstelle bietet, die ihre IP-Adresse über DHCP im Bereich 10.0.3.2 - 10.0.3.10 erhält (Netzmaske 255.255.255.0).

Ich stelle fest, dass, wenn eth0 auftaucht - beispielsweise auf 10.0.3.2 - andere Maschinen 10.0.3.144 erreichen können - dies ein gewünschtes Verhalten ist, aber ich verstehe nicht genau, warum dies geschieht. Ich habe keine Art von Bridging eingerichtet, also hätte ich gedacht, dass die Maschine nicht für die Dummy-Schnittstelle geantwortet hätte.

Ich kann arp-Anfragen und -Antworten auf der Laptops-Eth-Schnittstelle sehen.

tcpdump -n -i eth0 arp tcpdump: Ausführliche Ausgabe unterdrückt. Verwenden Sie -v oder -vv, um die Dekodierung des Protokolls vollständig auf eth0 (Verbindungstyp EN10MB (Ethernet)) und die Größe 262144 Byte zu überwachen

tcpdump -n -i eth0 arp 14:01:31.948781 ARP, Request who-has 10.0.3.144 tell 10.0.3.254, length 48 14:01:31.948842 ARP, Reply 10.0.3.144 is-at 00:23:55:9c:52:31, length 28 

Dieses Verhalten ist wiederholbar, wenn ich den ARP-Eintrag auf 10.0.3.254 (der ein Router ist, auf dem auch Linux ausgeführt wird) entferne.

Kann jemand raten, ob ich mich auf dieses Verhalten verlassen kann? (und warum ein Computer auf einer Schnittstelle für eine nicht an ihn gebundene IP-Adresse antworten würde - und damit verbunden -), könnte dies unter Umständen dazu führen, dass Routing in Szenarien angefüllt wird, in denen mehrere Schnittstellen in verschiedenen Subnetzen und Paketen vorhanden sind gezwungen sein, eine Firewall zu durchqueren?).

2
* "Warum ein Computer auf einer Schnittstelle für eine nicht daran gebundene IP-Adresse antworten würde" * - Dies trifft auf einem Linux-Host nicht unbedingt zu. Die IP-Adresse gehört standardmäßig zum Linux-Host und nicht zu einer Schnittstelle. Suchen Sie das "ARP Flux-Problem". sawdust vor 8 Jahren 1
Danke dafür - genau das brauchte ich. Wenn Sie es als Antwort posten (möglicherweise verlinkt auf http://linux-ip.net/html/ether-arp.html oder gleichwertig), akzeptiere ich es. davidgo vor 8 Jahren 0

2 Antworten auf die Frage

1
sawdust

warum ein Computer an der Schnittstelle einer IP-Adresse antworten würde, die nicht an sie gebunden ist

Das trifft auf einem Linux-Host nicht unbedingt zu.
Die IP-Adresse gehört standardmäßig zum Linux-Host und nicht zu einer Schnittstelle.
Siehe Linux betrachtet eine IP-Adresse als zu einem Host und nicht zu einer Schnittstelle

Dieses "Feature" von Linux wird manchmal als "ARP-Flussproblem" bezeichnet und ist in Abschnitt 2.1.4 des Address Resolution Protocol (ARP) beschrieben.

Es gibt verschiedene Methoden, um dieses Verhalten in Linux zu ändern. Ich habe den Kernel in der Vergangenheit gepatcht, um ihn zu eliminieren. Andere Methoden sind weniger aufdringlich, wie im LVS-HOWTO erwähnt .
Wenn Sie nichts tun, sollte dieses ARP-Verhalten konsistent sein.

0
TOOGAM

Andere Geräte glauben, dass 10.0.3.144 Teil des Netzwerks ist. Die Subnetzmaske 255.255.255.255 (aka / 24) gibt die Netzwerkgröße von 256 Adressen an. Bei der Art und Weise, wie Subnetze angeordnet werden, ist das Subnetz mit 256 Adressen, das 10.0.3.2-10.0.3.10 enthält, das Subnetz, das von 10.0.3.0 bis 10.0.3.255 reicht. Wenn also andere Geräte versuchen, mit 10.0.3.144 zu kommunizieren, scheint diese Adresse Teil des gleichen Subnetzes zu sein. Daher versuchen andere Geräte, über Layer 2 (ARP, Ethernet / WiFi) zu kommunizieren, nicht über Layer 3 (Routing mit IPv4 / IPv6).

Der Computer, der den Layer-2-Datenverkehr empfängt, erkennt 10.0.3.144 als Teil eines von ihm verwendeten Subnetzes. Der Computer achtet also auf den Verkehr, der an den Computer gerichtet ist. Vielleicht erkennt der Computer zu einem späteren Zeitpunkt sogar, dass es sich bei 10.0.3.144 um eine IP-Adresse handelt, die sich auf der anderen Netzwerkkarte befindet. Da Networking mit verschiedenen Softwarekomponenten implementiert ist, die für die Verarbeitung einer oder mehrerer der "Schichten" des OSI-Modells konzipiert sind, ist es durchaus möglich, dass die Komponente, die 10.0.3.144 als Layer-3-IP-Adresse erkannt hat, nicht dieselbe Gruppe von ist Anweisungen / Code / Programmierung, die feststellten, dass die ARP-Adresse akzeptabel war.

Verstehen Sie, dass Computer normalerweise keine systemweiten IP-Adressen haben. Netzwerkports haben IP-Adressen. So erhält jede Netzwerkkarte normalerweise ihre eigene IP-Adresse.

Wenn Sie nicht möchten, dass die zweite Netzwerkkarte Datenverkehr empfängt, müssen Sie möglicherweise eine oder mehrere der folgenden Aktionen ausführen:

  • Legen Sie die IP-Adresse als Teil eines anderen Subnetzes fest. (Das Anzeigen eines "VLSM" - Diagramms mit variabler Länge) kann helfen, zu visualisieren, welche Adressen zu welchen Teilnetzen gehören. Die allgemeinen Diagramme fokussieren normalerweise nur auf das letzte Oktett, sodass die Diagramme für / 24 - / 32-Netzwerke am leichtesten zu verstehen sind ( Dabei sind die ersten 3 Oktette der IPv4-Subnetzmaske ("255.255.255").
  • Das Deaktivieren der Weiterleitung kann hilfreich sein. Ich denke, dass unterschiedliche Computer sich möglicherweise anders verhalten, ob der Datenverkehr zu einer anderen Netzwerkkarte auf demselben System als "Weiterleitung" betrachtet wird. Wenn die Weiterleitung aktiviert ist, sollte es noch weniger überrascht sein, dass der Verkehr eine andere Netzwerkkarte erreicht hat.
  • Firewalls können nützlich sein, um bestimmte Arten von Datenverkehr zu blockieren. (Beachten Sie, dass einige Firewalls möglicherweise eingeschränkt sind. Zum Beispiel weiß ich, dass der DHCP-Client in OpenBSD BPFs verwendet, die nicht von der IP-Firewall blockiert werden.)

Um eine andere Frage zu beantworten: Bridging kann oft als "Weiterleitung der Schicht 2" bezeichnet werden. Die Weiterleitung von Layer 3 kann auch dazu führen, dass der Datenverkehr zu einer anderen NIC übergeht, selbst wenn Sie kein Layer-2-Bridging verwenden.

Ob Sie sich auf das Verhalten verlassen können, glaube ich. Aber Sie sollten es verstehen und Fragen stellen, bis Sie es tun. Wenn Sie erst einmal verstanden haben, wie die Dinge funktionieren sollten, können Sie überprüfen, ob die Dinge auf diese Weise funktionieren. Wenn ja, sollte es ziemlich zuverlässig sein. Wenn es immer noch Rätsel gibt, sind Überraschungen wahrscheinlich, fragen Sie also immer nach, was noch unklar ist.

Danke für das Antworten. Ich verstehe (und bin damit einverstanden) fast alles - aber es beantwortet meine Frage nicht. FWIW, ich habe gerade versucht, die FORWARD-Richtlinie auf dem Laptop in DROP zu ändern - keine Änderung. Ich verstehe, warum eine ARP-Anfrage auf der Ethernet-Schnittstelle sichtbar sein muss, aber ich verstehe immer noch nicht, warum es nicht falsch ist, dass der Laptop darauf reagiert. Verwirrung zusammensetzen (für alle Schnittstellen außer manchmal lo) Proxy-Arp ist deaktiviert, rp_filter ist aktiviert. Ich dachte, ich hätte etwas in dem Parameter "arp_filter" gefunden, aber überraschenderweise machte das auf dem Laptop keinen Unterschied. davidgo vor 8 Jahren 0