Soll ich nur IPv6 oder sowohl IPv4 als auch IPv6 auf meinem Webserver verwenden?

39

Mein Webserver (Ubuntu, Nginx) hat sowohl IPv4- als auch IPv6-Adressen, die vom Host zugewiesen wurden. Soll ich meine Website nur an eine IPv6-Adresse binden? Ist es die empfohlene Standardmethode? Oder soll ich sowohl IPv4- als auch IPv6-Adressen verwenden?

THpubs
quelle
13
Sie stellen die falsche Frage (an die falschen Personen) - Fragen Sie sich: "Muss ich in der Lage sein, von IPv4-Clients, IPv6-Clients oder beiden auf diese Site zuzugreifen?" Die Antwort darauf ist auch die Antwort darauf, welche Adressen Ihr Webserver abhören muss.
Voretaq7
6
Normalerweise stimme ich einer solchen Antwort "Bitte erst die Spezifikationen abrufen" voll und ganz zu, aber in diesem Fall tue ich das seltsamerweise nicht. Ich stimme Michael zu. "nur v6" ist leider immer noch unwahrscheinlich (wenn dies der Fall ist, ist dieser Kommentar völlig falsch). Wenn nicht, dann sind wir bei "mixed stack" und "v4 only". Selbst wenn Ihre Benutzer alle sagen, dass "nur v4" richtig ist, ist dies an dieser Stelle falsch. Mixed-Stack ist der Weg zur Zukunftssicherheit, ganz gleich, was die aktuelle Benutzergemeinschaft sagt.
MadHatter unterstützt Monica
@ MadHatter An diesem Punkt können wir "nur v4" sicher beseitigen. Die inhärenten Grenzen von NAT in großem Maßstab machen v4-only für den Betreiber einer Website oder möglicherweise eines anderen Internetdienstes unhaltbar. Weitere Details in meiner aktualisierten Antwort.
Michael Hampton
@ MichaelHampton immer noch mit Ihnen einverstanden.
MadHatter unterstützt Monica

Antworten:

56

Verwenden Sie sowohl IPv4 als auch IPv6

Sie sollten sowohl IPv4- als auch IPv6-Adressen verwenden.

Nahezu jeder im Internet hat derzeit eine IPv4-Adresse oder steht hinter einem NAT und kann auf IPv4-Ressourcen zugreifen.

Zum Zeitpunkt des Schreibens waren jedoch nur etwa 0,7%, 2,3%, 3,8%, 6,5%, 9%, 12%, 19%, 22%, 26% des Internets IPv6-fähig. Diese Zahl nimmt jedoch stetig zu, da IPv6 weltweit eingeführt wird.

In sehr wenigen Ländern stellen ISPs hauptsächlich IPv6 oder nur IPv6 für Privatkunden bereit und verwenden NAT, NAT64 oder andere derartige Lösungen in großem Maßstab für die IPv4-Konnektivität. Es wird erwartet, dass diese Zahl zunimmt, wenn der IPv4-Adressraum endlich erschöpft ist. Diese Benutzer haben normalerweise eine bessere Leistung als IPv6.

Wenn ISPs NAT in großem Maßstab einsetzen, um die IPv4-Erschöpfung zu beheben, leiden Benutzer unter einer verringerten Zuverlässigkeit aller ihrer Internetverbindungen aufgrund der Verbindungsbeschränkungen, die den NAT-Gateways in großem Maßstab inhärent sind. Beispielsweise lädt eine Webseite möglicherweise nur einige, aber nicht alle Ressourcen , und es verbleiben fehlerhafte Symbole, auf denen Bilder angezeigt werden sollen, fehlende Stile und Skripte usw. Dies ähnelt der Verbindungsbeschränkung auf einem Heimrouter, wirkt sich jedoch auf alle Benutzer der aus ISP zeitweise und scheinbar zufällig. Wenn Sie möchten, dass Ihre Site für diese Benutzer zuverlässig ist, müssen Sie sie über IPv6 bereitstellen (und der ISP muss IPv6 bereitgestellt haben).

Da IPv6 der Ort ist, an dem sich das Internet entwickelt, sind Sie mit der IPv6-Aktivierung Ihrer Website dem Spiel voraus und können Probleme lösen, lange bevor sie ernst werden.

Konfigurieren Sie Nginx

Standardmäßig können Sie unter Linux und nginx gleichzeitig eine Bindung zu IPv4 und IPv6 herstellen, indem Sie Ihre listenAnweisungen wie folgt ändern :

listen [::]:80;
listen 80;

Oder für SSL-Sites:

listen [::]:443 ssl;
listen 443 ssl;
Michael Hampton
quelle
Ok, danke ... noch eine Frage ... Jetzt habe ich den Server eingerichtet ... In den DNS-Wiederholungen muss ich zwei Datensätze A und AAAA (mit dem Hostnamen @) einfügen und auf die relavanten IPS zeigen?
THpubs
3
Ja, der AEintrag ist für Ihre IPv4-Adresse und der AAAAEintrag ist für Ihre IPv6-Adresse.
Michael Hampton
Perfekt. Vielen Dank für die Erklärung :)
Ich bin
Ich kenne mich mit Nginx nicht aus, aber sollte das nicht listen 443;auch sslso sein wie das listen [::]:443 ssl;? Also listen 443 ssl;statt listen 443;.
ein CVn
@aCVn Ja, das sollte es. Danke, dass du das verstanden hast. Das bringt mir bei, Dinge im Halbschlaf zu bearbeiten.
Michael Hampton
3

Binde an beide!

Wir hatten eine IIS-Website, deren Code unter Verwendung des vom Client verwendeten DNS-Namens einen internen Verweis auf sich selbst erstellte. Dieser Prozess würde immer scheitern.

Ein weiteres Symptom war, dass ein lokal auf dem Server laufender Browser die Website nicht über den Namen des Servers, sondern nur über die IPv4-Adresse finden konnte. Das heißt, http://192.168.55.139würde funktionieren, aber http://myhostwürde scheitern. Mit ping myhostwürde standardmäßig die IPv6-Adresse zurückgegeben ( ping myhost -4würde die IPv4-Adresse zurückgeben).

Das Update bestand darin, IIS zu öffnen und die Bindungen der Website so zu ändern, dass sie sowohl an die IPv6-Adresse als auch an die IPv4-Adresse gebunden sind.

Bildbeschreibung hier eingeben

Glen Little
quelle
6
Es ist nicht notwendig, private Adressen zu verschleiern. Sie sollten sich jedoch auch an Ihre globale IPv6-Adresse binden, damit Ihre Site über IPv6 von außen erreichbar ist.
Michael Hampton
Der erwähnte Code war der Winnovative HTML to PDF Converter.
Glen Little
2
Ein interner und externer Zugriff auf einen Dienst ist einfacher, wenn Sie NAT nicht verwenden. Und es ist einfacher, NAT zu vermeiden, wenn Sie IPv6 verwenden. Das blinde Verbinden mit einem Hostnamen, der von einem Client bereitgestellt wird, klingt jedoch nach einem Konstruktionsfehler. Es ist durchaus möglich, dass der Kunde Ihnen einen HostHeader mit einem Domainnamen sendet, der Ihnen nicht gehört.
Kasperd