Debian 如何选择 IPv4 和 IPv6 连接或确定其优先级?

Has*_*ğır 5 linux debian ipv6 ipv4 whois

我将用一个例子来解释我的问题。我有两台服务器,A并且B都运行 Debian 7.8,都具有与 Internet 的双栈连接(我不知道这是否重要,但它们甚至具有相同数量的 IPv6 地址),并且它们都有相同版本的 whois安装(没有任何配置文件)。

现在,当我从服务器访问 whois google.fr (我选择了 whois.nic.fr 因为它显示了您连接的 IP)时A,我得到了这个响应头:

%%
%% 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 [#########.]
%%
Run Code Online (Sandbox Code Playgroud)

如您所见,whois 使用 IPv6 地址连接到 whois.nic.fr。

但是,当我在 server 上执行相同操作时B,我得到以下响应标头:

%%
%% 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 [#########.]
%%
Run Code Online (Sandbox Code Playgroud)

正如您现在所看到的,whois 在服务器上使用了 IPv4 B

B为什么服务器在连接到 whois 服务器时不使用 IPv6?它们肯定都与 IPv6 建立了连接,但其中之一选择使用 IPv6,而另一方则没有。操作系统有什么理由优先考虑连接类型吗?

Has*_*ğır 3

原来是关于 getaddrinfo 的配置,它是在/etc/gai.conf.

有关如何解决此问题的更多信息:https://askubuntu.com/questions/32298/prefer-a-ipv4-dns-lookups-before-aaaaipv6-lookups