systemd-resolvedでNXDOMAINが返ってくるような名前解決を求めるとnetwork errorになる
解決しなかったので供養です
systmed-resolvedのDNSOverTLSが良い塩梅になったので(
RFE: Certificate checking for Resolveds DNS over TLS feature · Issue #9397 · systemd/systemd · GitHub
)
使おう!ー>うまくいかない(◞‸◟)というやつです
なにがあった
[Resolve] DNSOverTLS=yes DNSSEC=no DNS=2606:4700:4700::1111#1dot1dot1dot1.cloudflare-dns.com 2606:4700:4700::1001#1dot1dot1dot1.cloudflare-dns.com 1.1.1.1#1dot1dot1dot1.cloudflare-dns.com
を/etc/systemd/resolved.conf.d/dns_over_tls.confあたりに置いて、
systemctl start systmed-resolvedすると、
名前解決出来るものは問題ないのだけれど、名前解決が失敗するはずのものdrill sthoeusntahublablabla.com等を行うと、十数秒待たされた後にnetwork errorになる
(本当はエラーの文章をそのまま貼り付けた方が良いのだろうけれど、もうログを出せる状態でないし面倒なので適当)
どうした
LLMNRの無効
nss-resolve returns UNAVAIL for LLMNR resolution failures · Issue #14922 · systemd/systemd · GitHub
これかしら…と思ってLLMNRを無効にしたけれど、特に関係はなかった(◞‸◟)
LLMNRを無効にするには、global設定であるsystemd-resolved側からLLMNRを無効にするのと、
インターフェース毎の設定をsystmed-networkd側でやらないといけないので注意が必要だった
Bug #1777523 “Unable to set systemd/network settings from netpla...” : Bugs : netplan
具体的にはこれ
ログの確認
[Service] Environment=SYSTEMD_LOG_LEVEL=debug
をsystemctl edit systemd-resolvedで加えてjournalctl -efu systemd-resolvedを実行し、
適当な名前解決をするコマンドdrill stohublablabla.comを叩いたログを見た
すると、
Connection failure for DNS TCP stream: Connection refused is:closed
Failed to invoke gnutls_handshake: Error in the push function.
の様なログが大量に流れているのが見えた
これらのログはTransaction 47045 for <photos-ugc.l.googleusercontent.com IN A> on scope dns on wlp0s20u2/* now complete with <attempts-max-reached> from none (unsigned).の様な、attempts-max-reachedという単語がログに出るのと共にログに出なくなっていた
このログは、名前解決に成功しても失敗しても発生していた
なので、名前解決成功時は成功した結果をよしなにして終了するけれど、名前解決失敗時はこのログに出ている作業の終了を待っているのでは…?という感じある
エラーの内容的にも、これらならnetwork errorとdrillの結果が表示されるのも分からないでもない
でもこれらのログでgithubのissueを検索しても、それっぽいのが見付けられなかった(◞‸◟)
おしり
万策付きたのでdnsmasq+dns-over-httpsの環境に戻しました
これの他には、DNSSECのvalidationを有効にすると結構な頻度で見れないサイトが出現する(www.ipa.go.jp等)的な話もあるのだけれど、
まあこれもどうすればよいのか分からんねという感じで終わってしまった
DNSSECのvalidationの問題に関しては、dnsmasq+dns-over-httpsな環境でdnsmasqのdnssec validationを有効にしても発生するので諦めみたいな不死もあるね
しかも、systmed-resolvedで見られなくなるサイトと、dnsmasq+dns-over-httpsで見られなくなるサイトは一緒ではないのでまた良くわからない