私はUbuntu 17.04にアップグレードし、それは今、新しいDNSリゾルバ機構が最初にUbuntu 16.10で導入されたようです
私は今、時間の50%のDNSルックアップの失敗を取得しています。他の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 などは問題があるようです
Update
私の特定のケースでは、私の /etc/hosts ファイルはシンボリックリンクになっていました (私は熱狂的な stow ユーザなので)。Systemd はこれを何かの理由で嫌い、それを「パーミッションの失敗」とみなします。シンボリックリンクを実際のファイルに置き換えると、systemd は誤動作を止めました
39 None 2016-12-05
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 をいじった場合は再設定してください(”/etc/resolve.conf for dynamic updates?
sudo dpkg-reconfigure resolvconf
Restart systemd-resolved:
sudo systemctl restart systemd-resolved
DNSが動作を開始するはずです。systemd-resolve www.google.com
を試してレスポンスを見ることで確認できます
48 Sajad Bahmani 2017-04-18
systemd-resolved と手動の /etc/resolv.conf 管理を行ったり来たりしていますが、systemd DNS リゾルバの仕組みがまだ安定していないようです
Ubuntu 16.10には少なくとも1つのlibnssのバグがあり、どうやら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
12 moodboom 2016-12-08
Ubuntu 17.04と他のディストロは、ユーザーがかなり強引なDNS解決の対象となる、解決されたシステムドを含むシステムドを包含しています
- SjBの回答にもあるように、DNSSECのサポートは問題を引き起こす可能性があります
- systemd-resolved はすべての DNS リゾルバを ping するので、最速で使用することができます。これは、より複雑な環境では VPN などの問題を引き起こす可能性があります
- DNSサーバーの証明書が検証されているので、時計がズレているとエラーになってしまうことがありました
必ずしもBADな変化ではなく、LOTな変化だと思います。この回答を更新して拡大していきたいと思います
4 moodboom 2017-06-17
簡単に言えば、/etc/systemd/resolved.conf の [Resolve] セクションに “DNSSEC=no” という行があればいいだけです
4 John Ball 2017-09-05
ネームサーバー /etc/systemd/resolved.conf DNS=194.109.xxx.xxx (ルータ上、外部のネームサーバー) を追加するだけです
systemctl restart systemd-resolved
ランドを3から2に変更する必要はなく、dnssecの設定をオフに変更する必要はありません
1 henk 2017-11-20
systemd-resolvedでの具体的な問題の原因をようやく突き止めました。/etc/hosts
はシンボリックリンクで、私はドットファイルに stow を使っているからです。さて… systemd はそれを見るのを拒否して、”パーミッション・エラー” (Sic) を出しました。シンボリックリンクを /etc/hosts ファイルの完全なコピーに置き換えたら、 systemd は再び満足してくれました
systemd の巨大な混乱に不信感を抱くもう一つの理由は、IMHO です。しかし、後戻りはできません。全速力で進んでいます
0 moodboom 2020-01-17