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응답됩니다. 나는 짧은 호스트 이름을 사용할 때만 위의 오류가 발생한다고 생각합니다 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=아마도 그렇게 될 것 같습니다.

관련 정보