3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

wgetで失敗するトラブルシューティング

Last updated at Posted at 2021-12-04

はじめに

wgetコマンドでhttp経由でファイルを取得しようとしたところ、次のエラーがでて取得ができなかった。そのトラブルシューティング。

failed: Temporary failure in name resolution.
wget: unable to resolve host address

環境

focal (Ubuntu 20.04)

前置き

結論をいうと、DNSによる名前解決ができなかったことが原因です。自分の環境で設定しているDNSサーバーでは名前解決ができないようで、代わりに、GoogleのPublic DNS(8.8.8.8)を設定すれば解決できた。

DNSサーバーのIPアドレスには、自分が契約をしているインターネットプロバイダーが公開しているDNSサーバーのアドレスを設定するのが普通だと思う。物理的な距離が一番近いため、そこのDNSサーバーで名前解決した方が一番高速だと思われるためだ。そもそも、インターネットプロバイダーと契約したとき、DNSサーバーのIPアドレスには、このIPアドレスを指定してくださいと、契約書に書かれているため、そのとおりに設定しているはずだ。自宅に外向けのDNSサーバーを構築して、そこで名前解決をさせない限り、以降、変更することはない。

それが、各プロバイダーのDNSサーバーを駆逐するかのごとく、GoogleがPublic DNSサーバーを公開しているのだ。

「GoogleのDNSサーバーってたぶんアメリカにあるんでしょ。そんなところまで
参照しにいったら、名前解決に時間がかかるじゃん」って思うだろう。だがどうも、GoogleのPublic DNSサーバーを参照した方が、レスポンスが速いらしい。詳細なベンチマークテストをおこなったわけではないので、どの程度高速になったかは分からない。少なくても体感的には高速度加減はわからない。

やったこと

さて、実際に、GoogleのPublicDNSサーバーを設定してみよう。

DNSサーバーのIPアドレスは**/etc/resolv.confで設定する。ls -l /etc/resolv.confをすると、/run/systemd/resolve/stub-resolv.conf**のシンボリックリンクとなっている。

resolv.confに次の一行を追加する。ルート権限でviを開かないと、保存ができないので注意。

nameserver 8.8.8.8

この後、wgetをすると、すんなりダウンロードができるようになりました。8.8.8.8はプライマリサーバーなので、セカンダリサーバーのIPアドレスも設定しておいた方が無難だろう。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?