Ubuntu 20.04 LTSでDNSの設定をする。

apt updateのときに、たまに「ホストが解決できません」みたいなエラーが出ることがあります。どうやらDNSの応答が遅いのが原因のひとつらしい。

なので、パフォーマンスが良いとされているパブリックなDNSサービスを利用して様子を窺ってみましょう。例えば、以下のようなサービスがあります。

  • Quad9
    • IPv4:9.9.9.9、149.112.112.112
    • IPv6:2620:fe::fe、2620:fe::9
  • Google
    • IPv4:8.8.8.8、8.8.4.4
    • IPv6:2001:4860:4860::8888、2001:4860:4860::8844
  • 1.1.1.1
    • IPv4:1.1.1.1、1.0.0.1
    • IPv6:2606:4700:4700::1111、2606:4700:4700::1001

Ubuntuでは時折、OSのバージョンアップに伴って設定箇所があっちこっちに移動してしまったりするのですが、20.04(Focal)の場合を以下に。

Wi-Fi

設定 → Wi-Fi で、現在接続しているネットワークの歯車アイコンをクリック。

dns_wifi01.png

IPv4接続の場合は、"IPv4" セクションに移動して、"DNS" の「自動」をオフ。アドレス欄に所望のDNSのアドレスを入力して "適用" をクリック。

dns_wifi02.png

いちどWi-Fiをオフにして再接続すると、変更が反映されます。

有線

設定 → ネットワーク で、「有線」の歯車アイコンをクリック。

dns_wired01.png

で、以下同文。

dns_wired02.png

こちらも、一度切断してから再接続すると変更が反映されます。

正しく設定されたかどうか、現在使用しているDNSを確認するには、端末を開いて

$ cat /var/run/systemd/resolve/resolv.conf

としてみます。

dns_resolve.png

上の出力例のように、nameserver のところに先ほど設定したものが表示されていれば成功です。

他の方法として、上記のようなネットワークごとの設定をまっさらにした状態で、/etc/systemd/resolved.conf に

DNS=9.9.9.9 149.112.112.112

とか書いてやって(アドレスはスペース区切りで列挙です)、サービスの再起動、すなわち

$ sudo systemctl restart systemd-resolved

としてやれば、このマシンのネットワーク全体に効くDNS設定が可能な筈なのですが、何が悪いのか、うちでは勝手にIPv6接続のネームサーバーアドレスが優先設定されてしまって上手くいかないのだな。どこかで IPv4のみ使用する という設定を明示的にしてやらなくてはいけないのだろうな…と想像しつつ、それはまた今度にしよう。

ともあれ「ホストが解決できない」エラーの出現は、パブリックDNSを設定することで皆無になりました。

カテゴリ: