Ist es möglich (der eigentliche Wortlaut sollte "Ist es richtig" sein), mehrere IP-Adressen, die zum selben Subnetz gehören, auf demselben Host zu haben?
Hier ist ein Beispiel:
#Host 1
eth0 -> 10.0.0.1/24
eth1 -> 10.0.0.2/24
eth1:1 -> 10.0.0.3/24
Ich habe die Intuition, dass dies aufgrund von Routing-Problemen nicht funktionieren kann, aber ich kann nicht erklären, warum ich das denke.
Ist dieses Muster also korrekt? Wenn ja, ist es üblich? Was können die Probleme bei einer solchen Konfiguration sein?
quelle
10.0.0.1
zu pingen kann10.0.0.3
?/24
.Es gibt ein etwas häufiges Problem mit den Erwartungen der Menschen bei dieser Art der Einrichtung. Wenn mehrere Adressen in demselben Subnetz zugewiesen sind, scheint normalerweise die gesamte ausgehende Kommunikation von einer einzigen Adresse zu kommen.
Die Antworten auf eingehende Verbindungen sollten daher in Ordnung sein. Die Antworten sollten von der Adresse stammen, an die die eingehende Verbindung hergestellt wurde. Wenn Sie jedoch erwarten, dass ein Prozess, bei dem ausgehende Verbindungen hergestellt werden, eine andere Adresse als die erste verwendet, müssen Sie sicherstellen, dass Sie die IP speziell so konfigurieren können, dass sie auch in der Anwendung gebunden wird.
quelle
Ich habe irgendwo eine komplizierte Einrichtung, die diese Art von Netzwerk verwendet. Ich habe zwei interne Schnittstellen und eine externe Schnittstelle zum Internet. (Dies wird sich in zwei externe Schnittstellen in verschiedenen Subnetzen ändern und in eine interne Schnittstelle, die auf zwei interne Schnittstellen aufgeteilt ist, aber es geht auf demselben Weg.) Wie auch immer - weiter zur Antwort!
Angenommen, Sie haben zwei interne Schnittstellen unter:
Sie verwenden einen internen Uplink zum Internet (Router) unter
192.168.1.1
So Ihr Standard wird Routing - Tabelle wie folgt aussehen (Befehl:
netstat -rn
)Hier ist Ihr Problem, die gesamte Ausgabe erfolgt über,
eth0
da dies der erste Treffer in Ihrer Routing-Tabelle ist. Wenn Sie also einen anderen Computer (oder sogar dieselbe Box) für ping192.168.1.3
(eth1
) verwenden, erhalten Sie keine Antwort? Warum? Weil es von kommt192.168.1.2
.Sie müssen verwenden
iproute2
, um individuelle Routing-Tabellen für jedes Gerät einzurichten. Auf diese WeiseINPUT
antwortet ein Gerät, wenn es etwas in der Kette hat, über dasselbe Gerät.bearbeiten
/etc/iproute2/rt_tables
hinzufügen:Führen Sie dann Folgendes aus:
Fügen Sie nun die Regeln für die zu verwendenden Tabellen hinzu, indem Sie Folgendes ausführen:
Dies teilt Ihrem System mit, dass
eth0
diemy_eth0
Routing-Tabelle zur Beantwortung verwendet wird, wenn eine Anforderung bei Verwendung eingeht. Wenn eine Anfrageeth1
eingeht, antworten Sie mit dermy_eth1
Routing-Tabelle. Wenn Sie die Befehle zum Laufen bringen, fügen Sie sie in Ihre/etc/rc.local
Datei ein und machen Sie sierc.local
ausführbar, indem Sie aufsudo chmod u+x /etc/rc.local
diese Weise ausführen, dass Ihre Routen beim Neustart nicht gelöscht werden. Habe Spaß!quelle
Es ist vollkommen in Ordnung, aber es wird nicht empfohlen, es so zu machen, wie Sie es sind - mit mehr als einer physischen Schnittstelle im selben Subnetz, die mit demselben Switch verbunden ist. Linux kommt im Allgemeinen gut damit klar, aber einige Betriebssysteme (z. B. Solaris) mögen es wirklich nicht.
Stellen Sie alle Ihre Adressen auf eine physische Schnittstelle (eth0, eth0: 0, eth0: 1 usw.) und verbinden Sie nur diese. Wenn Sie mehrere Schnittstellen für die Leistung verbinden möchten, prüfen Sie die Verbindung und überlasten Sie dann die verbundene Schnittstelle (bond0) , bond0: 0, bond0: 1 usw.).
quelle
Nein, diese Konfiguration wird trotz allgemeiner Meinung nicht empfohlen.
Mit virtuellen Schnittstellen (zB eth1: 1) im selben Subnetz , dass die physischen (zB eth1) eine sehr häufige und nützliche Konfiguration ist das kein Problem darstellen.
Eine unterschiedliche physische Schnittstelle im selben Subnetz (oder am schlimmsten in unterschiedlichen Subnetzen, aber in derselben Broadcast-Domäne) kann jedoch aufgrund nicht deterministischer ARP-Einträge zu Problemen führen. Dies gilt zumindest für Solaris und Linux. Wenn Sie dies aus irgendeinem Grund trotzdem tun müssen, wird empfohlen oder erforderlich, das ARP-Verhalten zu optimieren, dh ARP auf einer der Schnittstellen zu deaktivieren oder ARP so zu konfigurieren, dass die Antworten von einer physischen Schnittstelle auf die entsprechenden IP-Adressen beschränkt werden. Suchen Sie unter http://www.mjmwired.net/kernel/Documentation/networking/ip-sysctl.txt nach arp_filter . Eine andere Möglichkeit besteht darin, die Netzmaske auf allen Schnittstellen bis auf eine auf / 24 zu setzen.
Unter Solaris besteht eine unterstützte Möglichkeit zum Konfigurieren mehrerer Schnittstellen im selben Subnetz in der Verwendung von IPMP (IP Multipathing).
Schließlich gilt diese Einschränkung nicht, wenn die physischen Schnittstellen nicht denselben IP-Stack gemeinsam nutzen (z. B. exklusive IP-Zonen von Solaris) oder durch 802.1Q-VLAN-Tagging isoliert sind.
quelle
Es ist möglich, es zu tun. Ich habe es schon mal benutzt.
Ich habe eine Anwendung, die beim Herstellen einer Verbindung zu einem Remote-Server unterschiedliche Quell-IP-Adressen verwenden muss. Dies ist in meinem Fall wichtig, um die vom Remote-Server auferlegte Beschränkung der Anzahl zulässiger Verbindungen pro IP zu überwinden.
Ich habe mehrere IP-Adressen auf derselben Schnittstelle konfiguriert und meine Anwendung wurde so konfiguriert, dass diese IPs im Round-Robin-Verfahren verwendet werden.
quelle
Ja das wird funktionieren.
Wie in den anderen Antworten angedeutet, besteht der eigentliche Zweck darin, verschiedene Dienste auf den verschiedenen IP-Adressen bereitzustellen.
Wenn Sie IIS und Apache auf demselben Computer hatten und beide auf Port 80 ausführen möchten, müssen Sie einen auf 10.0.0.1 und den anderen auf 10.0.0.2 festlegen, da beide nicht auf Port 80 von Port 80 ausgeführt werden konnten die gleiche IP-Adresse.
Es ist wirklich keine große Frage des Routings, da dies nur auf diesem Computer zum Tragen kommt, der über generische Programme wie Webbrowser, Ping usw. auf das Netzwerk zugreift. In diesen Situationen wird immer dasselbe verwendet Adresse als Quelle.
In der Routing-Tabelle gibt die Route die zu verwendende Schnittstelle an, sodass es sich um die Adresse handelt, die an die qualifizierende Route gebunden ist.
quelle
Ich werde hier eine kleine Einschränkung wegwerfen. Das heißt, dass die üblichen Linux-Tools Ihnen Probleme bereiten. Sie handhaben die mehreren Schnittstellen überhaupt nicht gut. Dazu müssen Sie iproute2 verwenden . Dies ist ein weniger verbreitetes Tool als die übliche ifconfig / route-Methode. Ohne sie werden Sie seltsames und falsches Verhalten feststellen, z. B. wenn eine Netzwerkkarte auf den anderen Datenverkehr reagiert.
- Christ Karel
quelle