Ich weiß, dass Sie mit dem IP-Tool mehrere Adressen an eine Schnittstelle binden können (z . B. http://www.linuxplanet.com/linuxplanet/tutorials/6553/1/ ). Im Moment versuche ich jedoch, etwas auf IPv6 aufzubauen, und es wäre sehr nützlich, einen ganzen Adressblock (z. B. a / 64) zur Verfügung zu haben, damit Programme eine beliebige Adresse aus dem Bereich und auswählen können daran binden. Es erübrigt sich zu erwähnen, dass das Anschließen jeder IP-Adresse aus diesem Bereich an eine Schnittstelle eine Weile dauern würde.
Unterstützt Linux das Binden eines ganzen Adressblocks an eine Schnittstelle?
Antworten:
Linux 2.6.37 und höher unterstützt dies über eine Funktion namens AnyIP . Zum Beispiel, wenn ich renne
Auf einem Ubuntu 11.04-Computer werden Verbindungen mit einer beliebigen Adresse im 2001: db8 :: / 32-Netzwerk akzeptiert.
quelle
ip route list
oderip -6 route list
die hinzugefügte Route nicht sichtbar ist. Wie würden Sie einen AnyIP-Adressblock aufzählen?Ja, Linux unterstützt das Binden eines Blocks von Netzwerkadressen an eine Netzwerkschnittstelle, jedoch nur an die Loopback-Schnittstelle. So können Sie dies tun:
Und dann mach das:
Mit den entsprechenden Routen wird dies tun, was Sie wollen ... für IPv4-Adressen. Sie haben nach IPv6 gefragt, und ich habe keine Erfahrung mit IPv6, aber es besteht eine gute Chance, dass dies genauso funktioniert.
Ich las ursprünglich diese etwa hier ( in Richtung der Unterseite des Artikels). Beachten Sie, dass in diesem Artikel auch das explizite Zuweisen mehrerer Adressen zu einer Schnittstelle mithilfe von CentOS / Red Hat-Funktionen erläutert wird, über die ich zuvor nichts gewusst hatte.
quelle
ip -6 route add local <ip> dev lo
.Daher sehe ich hier einige Optionen:
Verwenden Sie ein Skript, um alle Adressen einzeln an die Schnittstelle zu binden
Leiten Sie den gewünschten Block an die einzelne Adresse Ihres Computers und lassen Sie diesen Computer die pcap-Schnittstelle verwenden, um den gesamten Datenverkehr für diesen Block (als wäre es ein Router) abzufangen und zu verarbeiten.
Sie können durchaus Tricks mit NAT-Regeln spielen, um dann einen IP-Block, der an einen Computer weitergeleitet wurde, in eine einzelne interne IP auf diesem Computer umzuschreiben. Am Ende erhalten Sie jedoch immer noch eine interne IP pro IP, die Sie wirklich bezahlen möchten Aufmerksamkeit auf, die Sie zurück zu Lösung 1 bringt.
Wenn ich Sie wäre, würde ich einfach das kleine Skript in Option 1 schreiben. Oder verwenden Sie das von hier :
quelle
Wie bereits erwähnt, können Sie den AnyIP-Mechanismus verwenden, um ankommende Pakete für ein gesamtes Subnetz an die localhost-Schnittstelle weiterzuleiten. Beachten Sie jedoch, dass Sie auch Ihren Upstream-Router benötigen, um alle gewünschten Pakete an diesen Computer weiterzuleiten den ersten Platz. Dies kann einfach mit Routing-Tabelleneinträgen auf dem Router oder über BGP erfolgen. ARP ist nicht wirklich angemessen, da Ihr Computer für jede IP einzeln ARP ausführen müsste.
quelle
Das oben beschriebene "Anyip" funktionierte auf Centos 7 nicht. Ich musste ein Skript erstellen, um beim Booten manuell IPv6-Adressen zu erstellen. Dazu habe ich Folgendes zu / etc / crontab hinzugefügt:
Hier ist das Bash-Skript zum Erstellen von ungefähr 3000 IPv6-Adressen:
quelle