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

10

Estou testando o IPv6 em uma rede corporativa e tendo problemas com o OS X. Na maioria dos comandos do IPv6, como telnet -6or 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 ping6funciona (observe que eu tenho que usar o -Iargumento):

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

E eu sei que o servidor da Web está em execução porque posso fazer a telnet para ele no Windows:

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

Suspeito que exista algum sinalizador de configuração ou argumento da linha de comando.

Nate
fonte
Ok, eu vou morder. Por que não usar apenas o IPv4? Por esse motivo, por que o telnet é ativado?
John Gardeniers
1
@ John Nate está tentando telnet para a porta 80. Seu servidor da Web ficará sozinho e murcho se você não falar com ele periodicamente.
Gerald Combs
2
@ John Gardeniers: Estou experimentando o IPv6, pois espero ter de começar a implementá-lo nos próximos 12 a 18 meses. Além disso, como diz Gerald, um telnet cliente é uma ferramenta útil para testar a conectividade básica a servidores da Web ou de email. Não vejo um servidor de telnet há pelo menos 10 anos.
Nate
@Gerald e @Nate, vi "Como posso telnet para um host IPv6", que para mim diz o protocolo telnet; nesse ponto, eu sempre tremo e paro de ler. É claro que o título era algo como "Como uso o programa telnet para conectar ..." Eu teria lido toda a pergunta. Desculpa.
John Gardeniers

Respostas:

11

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

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. O Windows (XP, pelo menos) não parece fazer isso. Desde OS X tem múltiplas rotas para o mesmo prefixo que você tem que usar uma zona índice para apontar o tráfego na direção certa:

$ telnet -6 fe80::…%en1 80
Gerald Combs
fonte
Obrigado, isso funcionou. E obrigado por explicar por que funcionou no Windows, mas não no OS X.
Nate
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 seu próprio intervalo de IPv6 do seu ISP (ou de um provedor de túneis, como SixXS ou he.net) e distribuindo-os para seus dispositivos via Anúncio de roteador, DHCPv6 ou manualmente.

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

Este documento define um formato de endereço unicast IPv6 globalmente exclusivo e destinado a comunicações locais, geralmente dentro de um site. Esses endereços não devem ser roteáveis ​​na Internet global

Confira este site , que o ajuda a gerar um intervalo para você.

Martijn Heemels
fonte
Endereços locais únicos serão o meu próximo passo. Obrigado pelo excelente link!
Nate
0

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

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

bahamat
fonte
1
Um endereço local de link não é menos real , mas pode ser menos útil, dependendo do seu caso de uso.
Gerald Combs
Um endereço 2001 :: não é link-local. É um intervalo roteável e não deve ser confundido com a reserva link-local fe80 :: / 16. Por favor, não abuse do termo, pois isso confundirá as pessoas.
Martijn Heemels
Eu quis dizer link local, pois fisicamente o host reside no mesmo domínio de transmissão Ethernet.
bahamat