私はLANでDHCPサービスを提供するためにdnsmasqを使用します。 dnsmasqはDNSサービスも提供します。
ホストが DHCP を介して IP アドレスを取得すると、dnsmasq はfoo
DHCP 割り当て IP アドレスを提供し、その名前に対する DNS クエリに応答します。次のように:foo
foo
$ 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-resolved
IPアドレスを提供するsystemd-resolved
のではなく。これは以下で見ることができます。 (注:異なるIPアドレスを持つ別のサーバーで実行されます。)SERVFAIL
foo
dnsmasq
dig
$ 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
応答されます。私は短いホスト名を使用するときにのみ上記のエラーが発生すると思いますSERVFAIL
。dig
私の質問は、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=
おそらくそうです。