systemd-resolvdが短いホスト名に対して上流のDNSリゾルバを透過的に照会できないのはなぜですか?

systemd-resolvdが短いホスト名に対して上流のDNSリゾルバを透過的に照会できないのはなぜですか?

私はLANでDHCPサービスを提供するためにdnsmasqを使用します。 dnsmasqはDNSサービスも提供します。

ホストが DHCP を介して IP アドレスを取得すると、dnsmasq はfooDHCP 割り当て IP アドレスを提供し、その名前に対する DNS クエリに応答します。次のように:foofoo

$ dig foo @$dnsmasq_ip

; <<>> DiG 9.16.1-Ubuntu <<>> foo @[snip]
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13710
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;foo.                                   IN      A

;; ANSWER SECTION:
foo.                    0       IN      A       192.168.0.[snip]

;; Query time: 0 msec
;; SERVER: 192.168.0.22#53(192.168.0.22)
;; WHEN: Sun May 01 21:03:03 PDT 2022
;; MSG SIZE  rcvd: 51

ただし、dnsmasqサーバーに直接クエリしない場合、DNSクエリはsystemd-resolvedIPアドレスを提供するsystemd-resolvedのではなく。これは以下で見ることができます。 (注:異なるIPアドレスを持つ別のサーバーで実行されます。)SERVFAILfoodnsmasqdig

$ dig foo 

; <<>> DiG 9.16.1-Ubuntu <<>> foo
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 13439
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;foo.                                   IN      A

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun May 01 21:06:53 PDT 2022
;; MSG SIZE  rcvd: 35

dig完全修飾ドメイン名を要求すると、結果が照会systemd-resolvedされdnsmasq応答されます。私は短いホスト名を使用するときにのみ上記のエラーが発生すると思いますSERVFAILdig

私の質問は、systemd-resolved短いホスト名のクエリがなぜ透過的に渡されないのかということです。短いホスト名のリレーを有効にする方法はありますか?

ベストアンサー1

systemd-resolved短いホスト名を透過的に照会できないのが特徴のようです。無効にできる機能です。

レガシー glibc スタブパーサとの互換性

AレコードとAAAAレコードの単一ラベル名は、ユニキャストDNSを使用して解決されません(ResolveUnicastSingleLabel =でオーバーライドされない限り、solve.conf(5)を参照)。これは、resolv.conf(5)で設定されたno-tld-queryオプションと似ています。

源泉:https://systemd.network/systemd-resolved.service.html

注:これが実際に問題が解決するかどうかは確認できませんでしたが、ResolveUnicastSingleLabel=おそらくそうです。

おすすめ記事