Wie kann ich mit Mac OS X eine Verbindung zu einem IPv6-Host herstellen?

10

Ich teste IPv6 in einem Unternehmensnetzwerk und habe Probleme mit OS X. Bei den meisten IPv6-Befehlen wie telnet -6oder traceroute6wird folgende Fehlermeldung angezeigt:

connect: No route to host

Zum Beispiel habe ich einen Webserver. Dies schlägt fehl:

$ telnet -6 fe80::… 80    # this fails

Ich weiß, dass der Server erreichbar ist, weil er ping6funktioniert (beachten Sie, dass ich das -IArgument verwenden muss):

$ ping6 -I en1 fe80::…    # this works

Und ich weiß, dass der Webserver ausgeführt wird, weil ich von Windows aus darauf telneten kann:

C:\> telnet fe80::… 80  # this works

Ich vermute, dass ein Konfigurationsflag oder ein Befehlszeilenargument fehlt.

Nate
quelle
Ok, ich werde beißen. Warum nicht einfach IPv4 verwenden? Warum ist Telnet überhaupt aktiviert?
John Gardeniers
1
@ John Nate versucht, eine Verbindung zu Port 80 herzustellen. Ihr Webserver wird einsam und verdorrt, wenn Sie nicht regelmäßig mit ihm sprechen.
Gerald Combs
2
@ John Gardeniers: Ich experimentiere mit IPv6, da ich davon ausgehe, dass ich in den nächsten 12 bis 18 Monaten mit der Implementierung beginnen muss. Wie Gerald sagt, ist ein telnet Client ein nützliches Tool zum Testen der grundlegenden Konnektivität zu Web- oder E-Mail-Servern. Ich habe seit mindestens 10 Jahren keinen Telnet-Server mehr gesehen.
Nate
@Gerald und @Nate, ich sah "Wie kann ich mit einem IPv6-Host telneten", was für mich das Telnet-Protokoll sagt. An diesem Punkt schaudere ich immer und höre auf zu lesen. Wäre der Titel natürlich so etwas wie "Wie verwende ich das Telnet-Programm, um eine Verbindung herzustellen ...", hätte ich die ganze Frage gelesen. Es tut uns leid.
John Gardeniers

Antworten:

11

Das Präfix fe80 :: / 16 gilt für verbindungslokale Adressen und ist etwas Besonderes. Versuche zu rennen

netstat -nr

unter OS X und

netsh int ipv6 show routes

unter Windows. Unter OS X wird höchstwahrscheinlich für jede Schnittstelle eine separate fe80 :: route angezeigt, z. B. für lo0 und en1. Windows (zumindest XP) scheint das nicht zu tun. Da OS X mehrere Routen zum gleichen Präfix hat, müssen Sie einen Zonenindex verwenden , um den Verkehr in die richtige Richtung zu lenken:

$ telnet -6 fe80::…%en1 80
Gerald Combs
quelle
Danke, das hat funktioniert. Und danke, dass Sie erklärt haben, warum es unter Windows funktioniert hat, aber nicht unter OS X.
Nate
4

Eine Schnittstelle kann und wird normalerweise mehrere IPv6-Adressen haben. Eine verbindungslokale Adresse wird automatisch aus dem Bereich fe80 :: / 16 erstellt und nicht weitergeleitet (Punkt-zu-Punkt-Verbindung). Wie Gerald Combs erwähnt , müssen Sie einen Zonenindex angeben, wenn Sie nicht angeben können, welche Schnittstelle verwendet werden soll.

Für die regelmäßige Verwendung und Verbindungen über die lokale Verbindung hinaus müssen Sie der Schnittstelle routbare Adressen hinzufügen. Dies kann erreicht werden, indem Sie Ihren eigenen IPv6-Bereich von Ihrem ISP (oder von einem Tunnelanbieter wie SixXS oder he.net) beziehen und diese über Router Advertisement, DHCPv6 oder manuell an Ihre Geräte verteilen.

Wenn Sie nur testen, können Sie auch den speziellen IP-Bereich "Unique Unicast" von fc00 :: / 7 verwenden, der gemäß RFC4193 verwendet werden sollte:

Dieses Dokument definiert ein IPv6-Unicast-Adressformat, das global eindeutig ist und für die lokale Kommunikation vorgesehen ist, normalerweise innerhalb einer Site. Es wird nicht erwartet, dass diese Adressen im globalen Internet routingfähig sind

Schauen Sie sich diese Site an , auf der Sie einen Bereich für Sie generieren können.

Martijn Heemels
quelle
Eindeutige lokale Adressen werden mein nächster Schritt sein. Danke für den tollen Link!
Nate
0

Ich glaube, Sie haben einen Fehler im Link local fe80 :: address gefunden. Es funktioniert für mich unter Verwendung meiner öffentlichen Adresse, obwohl sie lokal verlinkt sind.

$ telnet -6 2001::xxx:: 80
Trying 2001::xxx::...
Connected to 2001::xxx::
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Thu, 30 Dec 2010 01:18:00 GMT
Server: Apache
Last-Modified: Sun, 30 May 2010 20:11:06 GMT
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html

Connection closed by foreign host.

Versuchen Sie, echte v6-Adressen zu erhalten.

Bahamat
quelle
1
Eine linklokale Adresse ist nicht weniger real , kann jedoch je nach Anwendungsfall weniger nützlich sein .
Gerald Combs
Eine 2001 :: -Adresse ist nicht linklokal. Es ist ein routingfähiger Bereich und sollte nicht mit der verbindungslokalen Reservierung fe80 :: / 16 verwechselt werden. Bitte missbrauchen Sie den Begriff nicht, da dies die Menschen verwirren wird.
Martijn Heemels
Ich meinte Link lokal, da sich der Host physisch in derselben Ethernet-Broadcast-Domäne befindet.
Bahamat