たとえば、私の問題を説明しましょう。 2台のサーバーがあり、どちらもDebian 7.8を実行しており、A
どちらB
もインターネットにデュアルスタックで接続されています(これは重要なのかわかりませんが、IPv6アドレスの数は同じです)、どちらも同じバージョンを持っています。 whoisがインストールされました(構成ファイルなし)。
サーバーからwhois google.frにアクセスすると(接続しているIPが表示されるため、whois.nic.frを選択しました)、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 [#########.]
%%
ご覧のとおり、whoisはIPv6アドレスを使用してwhois.nic.frに接続します。
ただし、サーバーで同じ操作を実行すると、次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 [#########.]
%%
ご覧のとおり、whoisはサーバーでIPv4を使用していますB
。
B
whoisサーバーに接続するときにサーバーがIPv6を使用しないのはなぜですか?どちらも間違いなくIPv6に接続されていますが、それらの1つはIPv6を使用することを選択し、もう1つはそうではありません。オペレーティングシステムが接続タイプに優先順位を付ける理由はありますか?
答え1
にある getaddrinfo の構成に関することがわかりました/etc/gai.conf
。
この問題を解決する方法に関する追加情報:https://askubuntu.com/questions/32298/prefer-a-ipv4-dns-lookups-before-aaaaipv6-lookups
答え2
接続を確立するのはオペレーティングシステムではなくアプリケーションです。 n個のIPv6アドレスに接続しようとすると、オペレーティングwhois
システムは、アプリケーションがソースアドレスを明示的にバインドしない限り、接続に使用する(IPv6)ソースアドレスを決定します。 IPv4 アドレスに接続すると、IPv4 アドレスがソースとして使用されます。 IPv6 送信元アドレスを使用して IPv4 宛先アドレスに接続できず、その逆も同様です。
これで問題は、whois
あるサーバーではIPv6アドレスに接続し、whois.nic.fr
別のサーバーではIPv4アドレスに接続することを選択する理由です。違いを確認するには、両方のサーバーを実行する必要がありますstrace
。おそらく、後続のAルックアップが成功している間に、1つのサーバーでAAAAアドレスタイムアウトを解決する必要があるかもしれません。