Endereços de loopback IPv6 (equivalente a 127.xxx)

16

Eu tenho um ambiente de desenvolvimento configurado onde tenho um endereço de loopback separado para vários sites.

Por exemplo, eu tenho o seguinte:

127.0.0.1 www.example.com
127.0.0.2 foo.example.com
127.0.0.3 bar.example.com
127.0.0.4 waffles.example.com

Eu gostaria de uma solução equivalente para IPv6.

Eu já sei que você pode usar :: 1 como um endereço de loopback, mas :: 2, :: 3, etc, parecem não funcionar.

Existem outros endereços de loopback no IPv6? Existe uma maneira de ter vários endereços de loopback exclusivos?

Restabelecer Monica
fonte
11
Eu recomendaria :: ffff: 7f00: 1, :: ffff: 7f00: 2 e assim por diante, mas sem dúvida alguém jogaria frutas podres em mim.
womble
Você pode tentar algo no escopo de multicast local da interface IPv6. Isso retornará ao seu host e é uma variedade enorme. Se funciona ou não para você, vai depender do que você está tentando fazer.
Ron Maupin

Respostas:

13

Tecnicamente :: 2, :: 3 etc. fazem parte de :: 0.0.0.0/96, o intervalo "endereço ipv6 compatível com ipv4". Está obsoleto, mas você provavelmente não deseja usar esse intervalo.

Para um ambiente de laboratório, use endereçamento local exclusivo. Acesse https://www.ultratools.com/tools/rangeGenerator e gere um prefixo para você. Em seguida, você pode escolher qualquer endereço que desejar desse prefixo e atribuí-los à interface de loopback.

Ben Jencks
fonte
Por que não :: 127.0.0.0/96?
Todd
9

Seu endereço de loopback é :: 1/128. Observe a largura da sub-rede que a restringe a apenas um host. altere a sub-máscara para algo mais amplo e verifique sua tabela de roteamento. Ou use endereços de link local.

Fladi
fonte
11
Essa resposta seria melhor, se você incluísse, em uma ou ambas as janelas ou linux, como vincular endereços IPv6 adicionais à interface de loopback. No IPv4, você obtém 127.0.0.1/8, e no IPv6, obtém :: 1/128, então há alguma maneira de adicionar mais um pouco ao IPv6?
William William
2
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ sudo ip route add local ::/104 dev lo 
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::2
PING ::2(::2) 56 data bytes
64 bytes from ::2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from ::2: icmp_seq=2 ttl=64 time=0.128 ms
^C
--- ::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.105/0.128/0.024 ms
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::3
PING ::3(::3) 56 data bytes
64 bytes from ::3: icmp_seq=1 ttl=64 time=0.148 ms
64 bytes from ::3: icmp_seq=2 ttl=64 time=0.141 ms
64 bytes from ::3: icmp_seq=3 ttl=64 time=0.142 ms

a partir de um bloco (grande) de endereços para uma interface Can I ligam?

é a única coisa que funcionou para mim. específico para Linux, é claro.

nota bene : como isso pode entrar em conflito com os endereços 0.0.0.0/8 em algum momento no futuro, ::127.0.0.0/104provavelmente seria uma escolha melhor.

jcomeau_ictx
fonte
Isso está efetivamente ampliando a tabela de roteamento para o intervalo reservado à compatibilidade com o ipv4, conforme descrito por Ben Jencks.
22416 korkman
isso não me diz absolutamente respeito. é para fins de teste; está na minha máquina local; isso afeta ninguém além de mim mesmo.
Jcomeau_ictx
11
@jcomeau_ictx Se é ou não lhe diz respeito, ele poderia incluir qualquer pessoa que vai usar a sua resposta, porque ele vai, em seguida, efetuar -los .
Mtraceur # 11/18
pode, mas sem dúvida até que o intervalo 0/8 do ipv4 seja atribuído. de qualquer maneira, vou consertar minha resposta.
jcomeau_ictx
teria sido ruim se eu tivesse usado / 96, mas eu / 104. de qualquer maneira, editei a resposta para usar :: 127.0.0.0/104, o intervalo de loopback.
jcomeau_ictx
2

Eu recomendo usar endereços RFC 4193 para isso. O RFC 4193 permite que você construa seu / 48 para uso local, utilizando o valor de byte fdseguido por 5 bytes aleatórios . Você pode colocar qualquer coisa que achar melhor após os primeiros 48 bits; portanto, se você quiser um / 64, poderá seguir fdseguido por 7 bytes aleatórios, como neste exemplo para sistemas Linux:

ip -6 route add to local fd66:29e9:f422:8dfe::/64 dev lo

O uso da RFC 4193 tem a vantagem, em comparação com as respostas anteriores, de que você não está violando nenhuma RFC e os endereços podem ser usados ​​sem um identificador de interface.

Cada um dos intervalos mencionados nas respostas anteriores está usando intervalos reservados para diferentes finalidades ou endereços locais de link que exigem um identificador de interface sempre que usado.

Existe um rascunho expirado sugerindo que o intervalo 1::/32seja alocado para endereços de loopback adicionais, como você está solicitando. No entanto, como esse rascunho expirou anos atrás e nenhuma alocação foi feita, você não pode usá 1::/32-lo.

Kasperd
fonte
Eu já escrevi uma pequena ferramenta de linha de comando para gerar prefixos compatíveis com RFC 4193: v6tools.kasperd.dk/rfc4193
kasperd
0

Usar o endereço local de link parece ser a única opção válida. O que a maioria das sugestões aqui ignora é o fato de o prefixo IPv6 declarar escopo , e eu não gostaria que meu endereço presumivelmente privado estivesse no escopo global.

Então, para Linux:

$ sudo ip -6 address add fe80::1/64 dev lo
$ sudo ip -6 address add fe80::2/64 dev lo
$ sudo ip -6 address add fe80::3/64 dev lo

E especifique a interface ao se referir a esses endereços. Testando com netcat:

$ nc -l -p 10001 fe80::1%lo
$ nc fe80::1%lo 10001

Verificando o escopo correto:

$ ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    inet6 fe80::1/64 scope link 
       valid_lft forever preferred_lft forever

Ainda assim, não parece muito elegante ter que adicionar todos os IPs para poder se conectar a ele. Com 127.0.0.0/8, você pode vincular a qualquer endereço sem antes atribuí-los.

korkman
fonte
Não, o ULA é uma maneira válida de fazer o endereçamento local do site. Por padrão, não será roteado na Internet. No entanto, você pode rotear localmente. Toda sub-rede de um site pode ter um prefixo privado razoavelmente exclusivo globalmente , independentemente do ISP.
John Mahowald 06/02
E o site local NÃO é o host local. Esse é o meu ponto :-)
Korkman
0

Existe um proporsal RFC chamado A Larger Loopback Prefix para IPv6 , que propõe usar 1::/32como rede de host local. No entanto, a proposta ainda não foi aprovada e expirou em 2013.

F.Raab
fonte
Isso já foi mencionado na resposta que escrevi no ano passado sobre essa mesma questão.
kasperd
@ kaspered Oh sim, você está certo, desculpe não percebi, pois a resposta inclui de fato duas respostas e começa com a outra.
F.Raab 16/01/19
Na verdade, não considerei o rascunho vencido uma resposta porque nunca se tornou um padrão. Eu observei isso na minha resposta, porque é uma informação relevante e fornece algum contexto sobre o que foi a tentativa de padronizar um intervalo para esse fim específico.
kasperd