Warum funktioniert die Netzwerkschnittstelle nicht, wenn Veths die gleiche Netzwerkadresse haben?

Warum funktioniert die Netzwerkschnittstelle nicht, wenn Veths die gleiche Netzwerkadresse haben?

Ich habe ein Paar Veths in Linux erstellt. Wenn ich ihm eine IP-Adresse zuweise, bei der der Netzwerkteil derselbe wie bei eth0 ist, scheint die Netzwerkverbindung zu brechen. Beispielsweise eth0 192.168.0.3, veth1 192.168.0.100. Andererseits ip a/lsagt jede Anzeige von aus, dass alles aktiv ist, aber Ping/NC usw. funktionieren auf dem lokalen und Remote-Host nicht.

Gibt es hierzu irgendwo eine schriftliche Einschränkung?

Antwort1

Es gibt allgemeine Networking-Prinzipien, die besagenVerschiedene Subnetze benötigen unterschiedliche Subnetz-IP-BereicheUndnur eine Schnittstelle zu einem Subnetz auf einem bestimmten Rechner haben.

Sie können diese Grundsätze verletzen, aber dann liegt es an Ihnen, dafür zu sorgen, dass dies funktioniert (und dies wird Aufwand erfordern, beispielsweise das Binden von Anwendungen an eine bestimmte Schnittstelle).

Das Veth-Paar bildet ein Subnetz. Wenn Sie beide Veth-Schnittstellen in denselben Netzwerk-Namespace setzen und IP-Adressen wie in der Frage zuweisen, haben Sie jetzt beide Prinzipien verletzt. Das funktioniert also nicht.

Normalerweise verschiebt man eines der Veth-Paare in einen anderen Netzwerk-Namespace (denn genau dafür sind Veth-Paare gedacht: Netzwerk-Namespaces zu verbinden) und gibt dem einen sichtbaren Veth einandersSubnetz, und Sie weisen beiden Veth-Schnittstellen Adressen in diesem Subnetz zu.


Wenn jedoch die gleiche Netzwerkadresse auf dem Host-Veth im Host-Namespace vorhanden ist, wird die Hauptschnittstelle zerstört.

Ja. Deshalb erstellen Sie eineandersSubnetz auf dem Veth-Paar und führen Sie das Routing durch, genau wie bei jedem normalen Subnetz.

Und wenn dies einXY-Problem, und Sie möchten etwas Bestimmtes erreichen, bearbeiten Sie bitte Ihre Frage und geben Sie Ihr Ziel an. Es gibt andere Möglichkeiten, Netzwerke in Containern zu realisieren (z. B. ein macvlan).

Sie müssen nicht unbedingt eine Brücke bauen, um verschiedene Netzwerksegmente dazu zu bringen, Daten aneinander weiterzuleiten.

Dies ist jedoch erforderlich, wenn Sie sowohl im Namensraum als auch im anderen Namensraum dasselbe Subnetz haben möchten. (Oder Sie verwenden ein macvlan).

Solange Sie versuchen, irgendwo die „gleiche“ Netzwerkadresse oder das „gleiche“ Subnetz auf unterschiedlichen Schnittstellen einzugeben, wird Ihr Routing nicht funktionieren.

verwandte Informationen