Usando IPv6 com Advanced Direct Connect

É interessante observar o desenvolvimento da rede de compartilhamento de arquivos, mas é ainda mais interessante participar dela.

Hoje, instalar e lançar um moderno NMDC hub, o administrador recém-formado tem acesso a quase todos os desenvolvimentos e experiência acumulada nesta área dos seus antecessores. Possui um sistema pronto para expansão e customização, inclusive com o auxílio de inúmeros scripts.

С ADC hubs caso contrário. O design deste protocolo pretende ser extensível. Você quer um novo recurso? Bem, ofereça, promova, implemente, implemente, use.

Traduzir para o inglês

Como resultado, você pode, é claro, tirar um hub pronto da caixa, mas simplesmente iniciá-lo e esquecê-lo não será bom. A extensibilidade num contexto histórico também implica a presença de um número diferente de funções diferentes de software cliente e servidor, dependendo da versão. E o que funcionará sem problemas para um usuário pode ser incompatível com o cliente de outro, e isso deve ser levado em consideração.

Isso aconteceu com o IPv6. O velho NMDC não sabe fazer isso em princípio, mas o próprio ADC está pronto para isso. Porém, nem tudo é tão simples.

Apenas um pouco de teoria

O usuário “ativo” pode aceitar conexões de entrada. Na verdade, a solicitação de conexão proveniente dele é na verdade convite.

Um usuário "passivo" geralmente só pode usar solicitações de saída. Através do hub ele pergunta o usuário ativo envia um convite - e a conexão é estabelecida.

Usando IPv6 com Advanced Direct Connect

E sim, este mecanismo não depende da versão do protocolo IP utilizado.

Swan, câncer e pique

Vamos falar sobre software cliente.

Suporte IPv6 DC ++ é de natureza experimental. Não há configurações separadas para isso, e foi ainda mais surpreendente para mim ver diferentes modos de operação para diferentes versões de IP, com passivo apenas para o sexto, mas isso não é exato.

Não foi possível obter o modo ativo durante a configuração manual mesmo usando explicitamente um domínio IP com registro AAAA como WAN, mas no modo automático usando UPnP tudo funcionou conforme o esperado.

AirDC ++ também tem suporte para conexões IPv6 e é implementado de forma totalmente separada do IPv4. Além disso, este cliente modifica tags de usuário de forma a exibir modos de operação para ambos os protocolos IP simultaneamente. Os próprios hubs (ainda) não sabem fazer isso, o que é uma pena.

Devo fazer uma reserva imediatamente: o AirDC++ faz isso sozinho e por si mesmo. No futuro, por conveniência, usarei combinações como AP ou AA como uma indicação dos modos de operação ativos ou passivos para IPv4 e IPv6, respectivamente, em vez de serem exibidos na etiqueta do cliente real no hub real. É importante.

Em nosso experimento usaremos FlylinkDC ++ como um cliente nada familiarizado com IPv6. De referir ainda que o apoio NATT para ele, no momento em que este artigo foi escrito, não foi implementado em lugar nenhum.

começo

Em primeiro lugar, veremos conexões obviamente impossíveis entre usuários de diferentes versões do protocolo IP. Será usado para o teste Hub pronto para IPv6 com registros de recurso A e AAAA para o nome de domínio atuando como seu endereço.

Usando IPv6 com Advanced Direct Connect

Observe que quando você (na verdade) tenta entrar em contato com um usuário com um endereço IP da versão XNUMX, um erro é exibido.

Hub:	[Outgoing][IPv4:412]	 	DRCM AACX AACU ADCS/0.10 337151563
Hub:	[Incoming][IPv4:412]	 	DCTM AACU AACX ADCS/0.10 1988 337151563
Hub:	[Outgoing][IPv4:412]	 	DSTA AACX AACU 240 IPsunknown

Na tradução humana parece

P4: – Posso me agarrar em você?
A6: – Agarre-se!
P4: – A vida é dor 0_0

Um pequeno dicionário, se necessário, aqui.

E se for o contrário, e a conexão for iniciada A4, nenhum erro será exibido e a conexão simplesmente será interrompida.

Hub:	[Outgoing][IPv4:412]	 	DCTM AACX AACU ADCS/0.10 1993 3871342713

Seja, não pareça ser

O que é importante é o modo de conexão exibido no hub.

Clientes sem suporte IPv6 terão que ver os usuários conectados através dele como claramente passivos, simplesmente porque o hub não é preenchido para eles I4 ou I6 campo adequadamente.

Usando IPv6 com Advanced Direct Connect
FlylinkDC++ vs. IPv6

Na realidade, a situação é ao mesmo tempo mais simples e mais complexa.

Usando IPv6 com Advanced Direct Connect
AirDC++ vs. IPv6

Mais fácil porque o IPv6 tem precedência sobre o IPv4, e isso é compreensível. É através dele (embora o override esteja disponível através da opção correspondente) que a conexão com o hub será estabelecida, e o cliente ativo a oferecerá ao cliente passivo para conexão.

É mais difícil, porque se houver usuários com suporte IPv6 no hub, mas eles estiverem conectados estritamente através de um endereço IPv4, então...

Usando IPv6 com Advanced Direct Connect

... então você pode se conectar a eles (aleatoriamente) sem ter IPv4.

Observe que o cliente remoto se designou como um ativo, mas é tratado como um passivo. Por que?

Jogue-o em um balanço

Agora vamos tentar conectar clientes com conjuntos de protocolos IP diferentes, mas comuns em termos de IPv4, que suportam entre si.

Usando IPv6 com Advanced Direct Connect

Sim, é uma pena que os usuários passivos tenham que fumar à margem. Mas isto não pode ser evitado, uma vez que o seu endereço IP visível não é particularmente importante - é por isso que são passivos.

Usando IPv6 com Advanced Direct Connect

Bah! O cliente ativo envia comando passivo?.. Seria lógico esperar uma conexão “travada”, mas não, acontece nas condições A4.

Por que é que? Entramos em contato com o desenvolvedor e obtemos a resposta:

CTM não é bom se o outro usuário não suportar IPv6

E você não pode discutir! Mas isso requer lógica interna, independente do hub (ver código aqui и aqui). Ainda é impossível ajudar os passivos, porque

Modo ativo = TCPx+IPx

As tentativas de conexão entre clientes com conjuntos comuns de suporte IP IPv6 são assim. Deixe-me lembrá-lo, alcance PA Não tive sucesso no DC++.

Usando IPv6 com Advanced Direct Connect

E novamente uma surpresa. Acontece que o modo passivo para IPv6, demonstrado pelo DC++, é uma farsa deliberada ou um bug.

Qual é o próximo?

Atualmente, existem exatamente duas maneiras de resolver todos os problemas possíveis conectando usuários em diferentes modos e com diferentes conjuntos de suporte a protocolos IP.

A primeira é silenciar completamente o IPv6 ou, inversamente, criar um hub para funcionar apenas através dele.

O segundo é este extensão, que está apenas se aproximando da fase de testes.

Bem, se você está com preguiça de configurar o modo ativo para trabalhar em DC, lembre-se:

Quem tem, o que lhe será dado, e quem não tem, até o que pensa ter lhe será tirado. Lx 8:18

Fonte: habr.com

Adicionar um comentário