Google chromeブラウザをFedora 18にインストールしました。yum upgrade
を使用してソフトウェアを更新しようとすると、次のエラーが報告され、chromeを更新できません。
http://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2404:6800:4005:c00::88: Network is unreachable"
Dl.google.comはIPv6アドレスに解決されるようですが、IPv6を使用していないため、ping dl.google.com
は期待どおりにIPv4アドレスを返します。
# ping dl.google.com
PING dl.l.google.com (74.125.128.93) 56(84) bytes of data.
考えられる理由は何ですか、これをどのように修正できますか?
デフォルトでは、yumはホスト/ドメイン名のIPv4アドレスとIPv6アドレスの両方を解決します。以下のWiresharkスクリーンショットを参照してください(pythonプログラムがわからないので、ネットワークトラフィックのキャプチャを見つける唯一の方法ですyumがホスト名を解決する方法を説明します)。
IPv4アドレスのみを解決するには、ip_resolve=4
またはip_resolve=ipv4
configをyum.conf
に追加するだけです(詳細はman yum.conf
を参照)。 Fedoraの場合、rootアカウントを使用してターミナルから次のコマンドを実行します。
echo "ip_resolve=4" >> /etc/yum.conf
IPv6アドレスのみを解決するには、上記のip_resolve=4
をip_resolve=6
に変更します。
wget
およびcurl
# To resolve IPv4 address only
wget -4
curl -4
# To resolve IPv6 address only
wget -6
curl -6
Host
Host
には-4
および-6
オプションもありますが、同じ意味のwgetとcurlはありません。これらはHost
にIPv4/IPv6トランスポートを使用してホストをクエリするように強制します名前。
# To resolve IPv4 address only
Host -t A
# To resolve IPv6 address only
Host -t AAAA
=編集=
yum
wasは、ipv4とipv6の両方を正しく試行していることがわかります。また、glibcのDNSリゾルバーは、コンピューターにルーティング可能なipv6アドレスがないことを正しく検出したため、ipv4アドレスを優先しました。ただし、glibcは引き続きipv6アドレスを返しました。これは、優先リストの一番下にipv6アドレスを置くだけです。
したがって、yum
は最後にipv6アドレスを試しました。残念ながら、yum
は最後のエラーのみを表示したようです。したがって、yum
はipv6のエラーのみを示しました-すでに失敗すると予想されていました! -そして、ipv4のエラーが何であるかを示しませんでした。
=以前の回答-これは問題について完全に間違っていました=
私はyumについて知りません。エラーには、Happy Eyeballsの実装がない、つまりipv4へのフォールバックがないようです。ありis ipv6アドレス...
$ホストdl.google.com dl.google.comはdl.l.google.comのエイリアスです。 dl.l.google.comはアドレス173.194.34.132 ...多くのランダムに並べ替えられたアドレス... dl.l.google.comはアドレス173.194.34.137を持っています dl.l.google.comはIPv6アドレス2a00:1450:400c:c06を持っています:: 5d
どうやらこれがうまくいかない場合の回避策は、/ etc/gai.confを編集してprecedence ::ffff:0:0/96 100
行のコメントを外すことです。これにより、ipv4アドレスが優先されます。
私は通常それがうまくいくはずだと思います。リンクローカルipv6アドレスがありますが、サイトローカルipv4アドレス(またはNATなしのパブリックアドレス)です。 libc DNSリゾルバーは、ipv4宛先を優先する必要があります。これはRFC 3484で指定されています。
これはTeredoスタイルの問題なのでしょうか。ルーター(Apple Airport)など)が信頼できないトンネルを介してグローバルIPV6アドレスを割り当てましたか?私のコンピューター(グローバルipv6なし)は次のようになります:
$ ip addr | grep inet6 inet6 :: 1/128 scope Host inet6 fe80 :: 215:afff:fe9f:fcd2/64 scope link
追加することでIPv6を完全に無効にできます
net.ipv6.conf.all.disable_ipv6 = 1
/etc/sysctl.d
内のファイル(例:/etc/sysctl.d/disable-ipv6.conf
)。