Zugriff auf einen Nicht-Port80-Webserver über IPv6

8

In einem normalen IPv4-Netzwerk kann ich in einen beliebigen Browser wie Firefox gehen und einen Server mit einer IPv4-Adresse durchsuchen, die nicht auf Port 80 gehostet wird:

http://192.168.42.6:8080/

Dies greift auf den Server an Port 8080 zu 192.168.42.6. Wenn ich dies jedoch mit einer IPv6-IP versuche, habe ich kein Glück. Dadurch wird versucht, auf Port 8080 zuzugreifen fe80::520:ff0f:ece0:1:

http://[fe80::520:ff0f:ece0:1]:8080/

Firefox "repariert" diese URL automatisch auf:

http://[www.fe80::520:ff0f:ece0:1.com]:8080/

das hilft mir überhaupt nicht, darauf zuzugreifen. Entweder mache ich etwas wirklich Falsches oder es stimmt etwas wirklich nicht mit IPv6. Konnte im Internet nichts finden, was auch nur aus der Ferne geholfen hätte. (Und ja, auf dem betreffenden IPv6 läuft ein Server.)

logain
quelle
Tun andere Browser ähnliche Dinge?
DrGoldfire
Dies scheint nur von Firefox zu tun - IE8 unter Windows 7 nicht, aber ein Wechsel zum IE für die gesamte Organisation ist keine Option.
Logain
1
Dann ist es vielleicht nur ein Firefox-Fehler. Welche Version von Firefox verwenden Sie? Die aktuelle 4.0-Beta scheint dies zumindest auf meinem System nicht zu tun.
DrGoldfire
Ist IPv6 auf der Seite about: config deaktiviert?
BillThor

Antworten:

5

Zunächst einmal: Ich bin kein IPv6-Experte.

Wenn Sie keinen DNS-Namen hinzufügen können (oder sicherstellen möchten, dass IPv6 verwendet wird 1 ), verwenden Sie dann die tatsächliche Adresse anstelle der linklokalen Adresse fe80. Auf einem Mac mit OS X und unter Windows XP Home Edition funktioniert dies (mit einer tatsächlichen IPv6-Adresse 2 ) in allen Browsern einwandfrei für mich:

http://[2001:db8::216:cbff:xx:xx]:8080/

(Beachten Sie, dass einige Browser dem http://Teil für IPv6-Adressen nicht automatisch ein Präfix voranstellen . Das Hinzufügen eines Dummy-Namens in Ihrer Hosts-Datei nur für die IPv6-Adresse macht das Leben noch einfacher.)

Bei fe80Adressen ist es wahrscheinlich nicht nur die Portnummer, die Ihnen Probleme bereitet. Wenn Sie den Standardport 80 verwenden, können Sie wahrscheinlich auch keine Verbindung herstellen, es sei denn, Sie geben auch den Zonenindex an. (Also: die ausgehende Schnittstelle, über die die Verbindung hergestellt werden soll, z. B. kabelgebundenes Ethernet oder kabellos, die auf jedem von Ihnen verwendeten Computer unterschiedlich sein kann.)

Unter Windows XP Home Edition funktioniert sowohl das kabelgebundene Ethernet als auch das kabellose (letzteres ist inaktiv) in Firefox 3.5 und 3.6 für mich einwandfrei. Hier 4ist mein Netzwerkschnittstellenindex 3 :

http://[fe80::216:cbff:xx:xx%4]/
http://[fe80::216:cbff:xx:xx%4]:8080/

In Internet Explorer 8 muss das Prozentzeichen in Prozent codiert werden in %25:

http://[fe80::216:cbff:xx:xx%254]:8080/

(Für mich funktioniert dies nicht ohne das %4oder %254; wenn dies bei anderen Installationen der Fall ist, bevorzugt Windows oder IE möglicherweise externe Verbindungen, und diese Installation verfügt nur über eine einzige Netzwerkschnittstelle?)

Auf einem Mac funktioniert in Firefox Folgendes einwandfrei:

http://[fe80::216:cbff:xx:xx%en0]:8080/

Das Angeben eines Zonenindex mit der Prozentschreibweise ist angesichts des Konflikts mit den URL-Notationen 4 problematisch . Ich konnte das oben Genannte weder in Chrome 8 und 9 unter Windows XP noch in Safari oder Chrome auf einem Mac zum Laufen bringen.

Auf einem Mac können Sie anstelle der %Syntax (ab) den Bereichsindex (das 2. Wort oder das 3. und 4. Byte) verwenden, um den Netzwerkschnittstellenindex anzugeben. Like fe80:0004funktioniert gut in allen meinen Browsern:

http://[fe80:4::216:cbff:xx:xx]/
http://[fe80:4::216:cbff:xx:xx]:8080/

Beachten Sie jedoch, dass ich bezweifle , dass dies offiziell unterstützt wird , da dies unter Windows XP nicht funktioniert. In einigen Dokumentationen wird behauptet, dass stattdessen immer Alternativen verwendet werden sollten. Mögen:

ping6 -I en0 fe80::216:cbff:xx:xx  (en0 = wired ethernet on my Mac)
ping6 fe80::216:cbff:xx:xx%en1     (en1 = wireless)

...eher, als:

ping6 fe80:4::216:cbff:xx:xx
ping6 fe80:6::216:cbff:xx:xx

Letzte Anmerkung: Man könnte sich täuschen lassen, eine IPv4-Adresse zu verwenden ::oder von dieser ::ffff:gefolgt zu werden, wie in RFC 4291 angegeben . Dies verwendet jedoch nicht IPv6, obwohl es auf meinem Mac eine Antwort gibt:

http://[::ffff:192.168.178.25]:8080/

Dies kann auch eine hexadezimale Notation verwenden, die von einigen Browsern automatisch neu geschrieben wird:

http://[::ffff:c0a8:b219]:8080/

Aber egal was passiert: Dies verwendet eine IPv4-Verbindung auf meinen Macs. Funktioniert auf meinen Macs [::192.168.178.25]nicht. Ich konnte kein Formular unter Windows XP zum Laufen bringen.


1 Einige Browser bevorzugen IPv4 gegenüber IPv6. Siehe test-ipv6.com . Dies ist auch plattformabhängig.
2 In IPv6 sehen Webserver möglicherweise die MAC-Adresse Ihres Computers ( siehe216:cbff:xx:xx diese Beispiele). Ich möchte diesen Super-Cookie lieber nicht im Internet veröffentlichen. Siehe auch So vermeiden Sie die Offenlegung meiner MAC-Adresse bei Verwendung von IPv6.
3 Auf einem Mac: Suchen Sie nach dem Wert für scopeidin der Ausgabe von ifconfig. Unter Windows : Siehe den Wert für Idxin der Ausgabe von netsh interface ipv6 show interface. Ich habe gesehen, wie sich diese Nummer nach einem Neustart geändert hat!
4 Es scheint, dass dies einmal zu einem RFC geführt hat, der es nie aus dem Entwurf geschafft hat. Dieser Entwurf schlägt vor Verwenden Sie stattdessen das Pluszeichen, dies funktioniert jedoch auch nicht auf meinen Macs oder Windows XP.

Arjan
quelle
Zu Fußnote 2 - siehe "Datenschutzadressierung".
user1686
Yup, @grawity, ich habe festgestellt, dass die Erweiterung in RFCs erwähnt wird, konnte jedoch keine entsprechenden Einstellungen in meinem Modem / Router für Endverbraucher finden, um dies zu ermöglichen. :-(
Arjan
1
Wenn Ihr Netzwerk die automatische IPv6-Konfiguration verwendet, wird das Adresssuffix von Ihrem eigenen PC ausgewählt. Hier sollten Sie auch nach der Datenschutzadressierung suchen. Unter Linux sysctl net.ipv6.conf.eth0.use_tempaddr=1; Unter Windows ist es netsh inter ipv6 set privacy(standardmäßig aktiviert).
user1686
Auf einem Mac : sudo sysctl -w net.inet6.ip6.use_tempaddr=1(Standardwert: 0). Danach: ifconfigZeigt zwei IPv6-Adressen an; test-ipv6.com und ipv6-test.com zeigen die temporäre Adresse.
Arjan