Como posso fazer telnet para um host IPv6 usando o Mac OS X?

9

Estou testando o IPv6 em uma rede corporativa e tendo problemas com o OS X. Com a maioria dos comandos IPv6, como telnet -6 ou traceroute6 , recebo o erro:

connect: No route to host

Por exemplo, eu tenho um servidor web. Isso falha:

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

Eu sei que o servidor está acessível porque ping6 funciona (note que eu tenho que usar o argumento -I ):

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

E eu sei que o servidor da web está em execução porque posso fazer o telnet dele no Windows:

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

Suspeito que haja algum sinalizador de configuração ou argumento de linha de comando que esteja faltando.

    
por Nate 30.12.2010 / 01:13

3 respostas

10

O prefixo fe80 :: / 16 é para endereços locais de links, e eles são especiais. Tente executar

netstat -nr

no OS X e

netsh int ipv6 show routes

no Windows. No OS X, você provavelmente verá uma rota fe80 :: separada para cada interface, por exemplo, para lo0 e en1. Windows (XP, pelo menos) não parece fazer isso. Como o OS X tem várias rotas para o mesmo prefixo, é necessário usar um índice de zona para apontar o tráfego a direção certa:

$ telnet -6 fe80::…%en1 80
    
por 30.12.2010 / 02:31
4

Uma interface pode e geralmente terá vários endereços IPv6. Um endereço local de link é criado automaticamente a partir do intervalo fe80 :: / 16 e não é roteado (conexão ponto a ponto). Como Gerald Combs menciona , você precisará especificar um índice de zona se não puder especificar qual interface usar.

Para uso regular e conexões além do link local, você precisará adicionar endereços roteáveis à interface. Isso pode ser feito obtendo o seu próprio intervalo de IPv6 do seu ISP (ou de um provedor de encapsulamento como SixXS ou he.net) e distribuindo-os para seus dispositivos por meio de Roteador, DHCPv6 ou manualmente.

Se você está apenas testando, você também pode usar o intervalo IP "Unique Unicast" especial de fc00 :: / 7, que deve ser usado para isso, de acordo com o RFC4193:

This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet

Confira este site , o que faz você começar gerando um intervalo para você.

    
por 30.12.2010 / 03:23
0

Eu acredito que você encontrou um bug no link local fe80 :: addresses. Funciona para mim usando meu endereço público, mesmo que eles sejam link local.

$ 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.

Tente obter endereços v6 reais.

    
por 30.12.2010 / 02:29