Acontece que é sobre configuração de getaddrinfo, que é controlada em /etc/gai.conf
.
Mais informações sobre como isso pode ser resolvido: link
Vou explicar minha pergunta com um exemplo. Eu tenho dois servidores, A
e B
, ambos executam Debian 7.8, ambos têm conexão dual-stack com a Internet (não sei se é importante, mas eles têm a mesma quantidade de endereços IPv6) e ambos tem a mesma versão do whois instalado (sem qualquer arquivo de configuração).
Agora, quando eu whois google.fr (escolhi whois.nic.fr porque mostra o IP do qual você está se conectando) do servidor A
, recebo este cabeçalho de resposta:
%%
%% This is the AFNIC Whois server.
%%
%% complete date format : DD/MM/YYYY
%% short date format : DD/MM
%% version : FRNIC-2.5
%%
%% Rights restricted by copyright.
%% See http://www.afnic.fr/afnic/web/mentions-legales-whois_en
%%
%% Use '-h' option to obtain more information about this service.
%%
%% [xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx REQUEST] >> -V Md5.1 google.fr
%%
%% RL Net [##########] - RL IP [#########.]
%%
Como você pode ver, whois usou um endereço IPv6 para se conectar ao whois.nic.fr.
Mas, quando faço o mesmo no servidor B
, recebo esse cabeçalho de resposta:
%%
%% This is the AFNIC Whois server.
%%
%% complete date format : DD/MM/YYYY
%% short date format : DD/MM
%% version : FRNIC-2.5
%%
%% Rights restricted by copyright.
%% See http://www.afnic.fr/afnic/web/mentions-legales-whois_en
%%
%% Use '-h' option to obtain more information about this service.
%%
%% [xx.x.xxx.xxx REQUEST] >> -V Md5.1 google.fr
%%
%% RL Net [##########] - RL IP [#########.]
%%
Como você pode ver agora, whois usou o IPv4 no servidor B
.
Por que o servidor B
não usa o IPv6 ao se conectar ao servidor whois? Certamente, ambos têm conexão com o IPv6, mas um deles escolhe usar o IPv6, onde um não. Existe alguma razão para o sistema operacional priorizar os tipos de conexão?
Acontece que é sobre configuração de getaddrinfo, que é controlada em /etc/gai.conf
.
Mais informações sobre como isso pode ser resolvido: link
Não é o sistema operacional, mas o aplicativo que faz a conexão. Se whois
quiser se conectar a n endereço IPv6, o sistema operacional determinará qual endereço de origem (IPv6) será usado para a conexão, a menos que o aplicativo tenha vinculado o endereço de origem explicitamente. Ao se conectar a um endereço IPv4, um endereço IPv4 é usado como fonte. Você não pode usar um endereço de origem IPv6 para se conectar a um endereço de destino IPv4 e vice-versa.
Agora, a pergunta é: por que o whois
escolhe se conectar ao endereço IPv6 do whois.nic.fr
em um servidor e ao endereço IPv4 do outro. Você teria que executar strace
com os dois servidores para ver quais são as diferenças, talvez resolvendo o endereço AAAA no servidor esgotado e a subseqüente Uma pesquisa foi bem-sucedida.