概要:キャッシュされたCNAME NODATAルックアップが原因で、DNS Aレコードのルックアップは解決できません。
詳細:メールログはDNSルックアップでエラーを報告します:
Host or domain name not found. Name service error for name=google.com type=A: Host found but no data record of requested type
解決のデバッグを有効にした後、dnsルックアップが最初にドメインのCNAMEレコードを照会することがわかります。多くの場合、これはCNAMEを持たないルートドメインであり、ルックアップは正しくNODATAを返します。
ただし、後続のAルックアップが実行されると、Aルックアップを行う代わりに、CNAMEルックアップのNODATA結果がキャッシュから返されます。
次のコマンドを発行して、これを一貫して再作成できます。
~$ Dig google.com CNAME
~$ Dig google.com A
デバッグログの結果は次のとおりです。
Aug 08 11:09:04 leopard systemd-resolved[555]: Transaction 17304 for <domain.com IN CNAME> scope dns on eth0/*.
Aug 08 11:09:04 leopard systemd-resolved[555]: Using feature level UDP+EDNS0 for transaction 17304.
Aug 08 11:09:04 leopard systemd-resolved[555]: Using DNS server 8.8.8.8 for transaction 17304.
Aug 08 11:09:04 leopard systemd-resolved[555]: Sending query packet with id 17304.
Aug 08 11:09:04 leopard systemd-resolved[555]: Processing query...
Aug 08 11:09:04 leopard systemd-resolved[555]: Processing incoming packet on transaction 17304. (rcode=SUCCESS)
Aug 08 11:09:04 leopard systemd-resolved[555]: Added NODATA cache entry for google.com IN CNAME 1799s
Aug 08 11:09:04 leopard systemd-resolved[555]: Transaction 17304 for <google.com IN CNAME> on scope dns on eth0/* now complete with <success> from network (unsigned).
Aug 08 11:09:04 leopard systemd-resolved[555]: Sending response packet with id 22860 on interface 1/AF_INET.
Aug 08 11:09:04 leopard systemd-resolved[555]: Freeing transaction 17304.
Aレコード検索の結果:
Aug 08 11:09:37 leopard systemd-resolved[555]: Processing query...
Aug 08 11:09:51 leopard systemd-resolved[555]: Got DNS stub UDP query packet for id 3119
Aug 08 11:09:51 leopard systemd-resolved[555]: Looking up RR for google.com IN A.
Aug 08 11:09:51 leopard systemd-resolved[555]: NODATA cache hit for google.com IN A
Aug 08 11:09:51 leopard systemd-resolved[555]: Transaction 45189 for <google.com IN A> on scope dns on eth0/* now complete with <success> from cache (unsigned).
Aug 08 11:09:51 leopard systemd-resolved[555]: Freeing transaction 45189.
Aug 08 11:09:51 leopard systemd-resolved[555]: Sending response packet with id 3119 on interface 1/AF_INET.
詳細:サーバーはLEMPスタックを実行しています。 nginxはすべてのリクエストの前にDNSルックアップを行い、CNAMEルックアップ、Aルックアップ、AAAAルックアップの順に開始するようです。これにより、CNAME NODATAがキャッシュされます。その後、メールサーバーがメールを送信しようとすると、キャッシュされたNODATAレコードが解決から取得され、上記のエラーが発生します。
質問:これは予想される動作ですか(Aルックアップに対してCNAMEが返されます)?キャッシュされたCNAMEルックアップがAルックアップに対して返されないように変更できる構成はありますか?
診断情報:
~$ ip route
default via 85.159.215.1 dev eth0 proto static
85.159.215.0/24 dev eth0 proto kernel scope link src 85.159.215.159
~$ Sudo systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 2 (eth0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 8.8.8.8
8.8.4.4
~$ cat /etc/resolv.conf
nameserver 127.0.0.53
これは、現時点でUbuntu 18.04が使用しているsystemdのバージョンの本当の問題のようです。 https://github.com/systemd/systemd/issues/98 およびランチパッドでも https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/ 1818527
ただし、Ubuntuがsystemdバージョンをアップグレードするかどうかはわかりません。