Das Problem

Das Problem

Das Problem

Ich weiß, wie man der Schnittstelle einen Block hinzufügt. Aber ich weiß wirklich nicht, wie man eine bestimmte Adresse dynamisch verwendet.

Was ich möchte

Zum Beispiel:

  • Ich habe einen Block fe80::/32 für meine Anwendung.
  • Ich werde meinem Benutzer den Zugriff auf den Server über eine einzelne IPv4-Adresse mit Anmeldeinformationen ermöglichen.
  • Ich werde den Hook mit IPV6 senden
  • Ich möchte jedem Benutzer eine bestimmte Adresse zum Senden geben.
  • BenutzerA: fe80::1BenutzerB:fe80::2

Ich habe einen ganzen Block dafür, es werden also Unmengen von Benutzern diesen Dienst nutzen.

Was habe ich getan

Ich stelle jedoch fest, dass ich die Anfrage nicht an eine bestimmte Adresse binden kann, da dies zu errno99 führen würde.

Ich habe Curl verwendet, um zu testen, ob Linux die gewünschten Funktionen unterstützt, aber ich stelle fest, dass dies nicht möglich ist.

So teste ich es:

Testserver mit Reichweite

Server

python3 -m http.server --bind ::

Klient

curl -vvv -6  "http://[fe80::3]:8000"
curl -vvv -6  "http://[fe80::4]:8000"

Das funktioniert. Weil der Server alle Adressen abhört. Sie können also mit jeder davon zugreifen.

Testclient mit Range

Server

python3 -m http.server --bind ::

Klient

curl -vvv -6 -i "fe80::2" "http://[fe80::1]:8000"
curl -vvv -6 -i "fe80::3" "http://[fe80::1]:8000"

Das wird nicht funktionieren. Curl wird errno99 ausgeben.

Binden Sie jede IP an die Schnittstelle

Ich habe eine ganze Reihe von IPs. Wie VERRÜCKT muss ich jede IP unter /32 binden. Also suche ich nach einer besseren Lösung.

Über die Diskussion

Einige Diskussionen wurden gelöscht. Und ich kann den Verlauf nicht finden.

Haftungsausschluss:

  • Ich habe "Zum Beispiel:" bei "Was ich will" eingegeben.
  • Wenn Sie den Bearbeitungsverlauf dieses Problems überprüfen, werden Sie feststellen, dass „Zum Beispiel:“ hier ganz vorne steht.
  • Dieses Problem tritt bei der vom Client angeforderten Funktion auf.
  • Ich möchte es einfach lösen. Ich möchte nicht mehr darüber reden.
  • Ich weiß nicht, warum ich gefeuert werde, nur weil ich die Kunden zufriedenstellen muss, die den Dienst auf einem reinen IPV6-VPS hosten.
  • Das Problem, das ich habe, ist, dass ich nicht weiß, ob ich etwas an Hardware oder Software hätte einrichten sollen, um das Problem zu lösen, aber ich glaube, das ist ein Serverproblem, die Ursache ist nicht das Thema. Und ich habe die Lösung gefunden.

Antwort1

Sie brauchen einen Realitätscheck und – ähm – etwas RTFM.

  • Der Adressblock FE80 ist Link Local. Er ist als letztes Mittel gedacht. Jeder Endpunkt in einem Ethernet-Segment hat dort eine Adresse, wenn IPv6 aktiv ist. Danke.
  • Das bedeutet zunächst, dass Sie nicht ALLE Adressen verwenden können, da die Adressen der Computer zufällig sind. Diese sind zufällig und basieren auf ihrer MAC-Adresse.
  • Da dieses Präfix linklokal ist und automatisch jedem Link zugewiesen wird, wird es auch NICHT GEROUTET. Wenn Ihre Benutzer also nicht lokal sind, können sie NICHTS DARAUF SENDEN.
  • Und schließlich begehen Sie einen großen architektonischen Blödsinn. Sie beenden Benutzer mit einer IPv4-Adresse – was nett ist, Benutzer haben so einen IPv4-Zugriff – und geben ihnen dann eine IPv6-Adresse zum Erreichen – VORAUSGESETZT (und das ist eine WIRKLICH dumme Idee), dass sie überhaupt IPv6 aktiviert haben. Das ist wahrscheinlich nicht der Fall. Holen Sie sich IPv4, BLEIBEN Sie bei IPv4. Holen Sie sich IPv6, BLEIBEN Sie bei IPv6. Aber in diesem Fall irrelevant, da – kein Routing. Aber im Allgemeinen sollten Sie NICHT zwischen Protokollen wechseln – Sie gehen von Dual Stack aus, was bei 99,9 % der Leute nicht der Fall ist.

Antwort2

Sie könnten erwägen, einen Cluster mit Corosync und Pacemaker zu erstellen und zwei Knoten und einige Dienste mit einer virtuellen IP aus Ihrem Block zu verwenden. Die IP wäre virtuell, da der Dienst von Knoten 1 und Knoten 2 verwendet wird und daher Knoten1 und Knoten2 ihn verwenden können sollten.

verwandte Informationen