Ubuntu 17.04にアップグレードしたところ、Ubuntu 16.10で初めて導入されたnew DNS resolver mechanismが搭載されたようです。
現在、DNSルックアップが50%の確率で失敗します。 その他の nslookupへの呼び出しはすべて失敗しており、半分はうまく解決し、半分はこのような結果になります。
watch -n 1 nslookup google.com
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find google.com: SERVFAIL
私の理解では、その DNS サーバーの IP アドレスは systemd-resolved を表すのに使用されており、DNS クエリが遅くならないようにある種のメタ検索を行っています。 この1週間で17.04にアップグレードした2台のマシンで、まったく同じ動作を確認しています。
何が問題なのか、そしてそれに対処する正しい方法はありますか?
アップグレード前は正常に動作していました(16.04か16.10、どちらかは忘れました、すみません)。 17.04はLTSリリースだと思っていたのですが、早とちりしてしまい、4月にならないと安定版とは言えないようです。 それで...私はここにいます。
ブラウザには問題がないようですが、nslookup, ping, gitなどには問題があります。
Ubuntu 17.04では、2017-04-18の時点でDNSSECをサポートするDNSサーバーを解決できません。 このデーモンでDNSSECを無効にしてください。
sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf
必要に応じて、resolvconfをいじった場合は再設定してください("prepare /etc/resolve.conf for dynamic updates?"にyesと言ってください)。
sudo dpkg-reconfigure resolvconf
systemd-resolvedを再起動します。
sudo systemctl restart systemd-resolved
DNSが動き出すはずです。systemd-resolve www.google.com` を実行して、応答を見ることで確認できます。
私はsystemd-resolvedと手動の/etc/resolv.confの管理を行ったり来たりしていますが、systemdのDNSリゾルバメカニズムはまだ安定していません。
Ubuntu 16.10には少なくとも1つのlibnss bugがあり、どうやら17.04にもまだあるようだ。 Ubuntu 16.10でsystemd-resolvedをオンにしてから、DNSの問題を抱えている人がたくさんいて、ここが一つの分析で、ここが別の人'の回避策です。 私の場合は、/etc/resolv.confをgoogle'のDNSサーバーで手動で上書きするまで、どれもうまくいきませんでした。
nameserver 8.8.8.8 << or another if you don't trust google
nameserver 8.8.4.4
ダイナミックDNSの設定を必要としないのであれば、これは完全に有効な解決策です。 ただ、systemd-resolvedを止めて無効にしてください。
sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
Ubuntu 17.04をはじめとするディストロはsystemdを採用しており、systemd-resolvedが含まれているため、ユーザーはかなり強引なDNS解決を強いられます。
必ずしも悪い変更ではないと思いますが、変更点が多いですね。 もっと知りたいことがあれば、この回答を更新したり拡大したりしてみます。