PowerDNS가 NXDOMAIN에 대한 AAAA 레코드를 캐시하지만 유효한 A 레코드가 존재합니다.

PowerDNS가 NXDOMAIN에 대한 AAAA 레코드를 캐시하지만 유효한 A 레코드가 존재합니다.

PowerDNS를 사용할 때 이상한 문제가 발생했습니다. 나에게 설명된 초기 문제는 다운된 도메인에 HTTP 요청을 할 수 있지만 staging.corp후속 요청은 DNS 오류로 인해 실패한다는 것입니다.

문제를 발견한 것 같지만 왜 이런 일이 발생하는지, 이것이 유효한 동작인지 또는 PowerDNS 담당자에게 버그를 신고해야 하는지 이해할 수 없습니다.

업스트림 DNS 서버는 유효한 A 레코드를 반환하지만 NXDOMAIN에 대해서는 AAAA 레코드를 반환합니다. 처음 요청이 이루어지면 유효한 A 레코드가 반환되지만 NXDOMAIN이 캐시되고 모든 새 요청이 즉시 NXDOMAIN을 반환하는 것 같습니다.

1단계: DNS가 실행 중인지 확인

root:~# grep -v ^# /etc/powerdns/recursor.conf | grep -v ^$
etc-hosts-file=/etc/powerdns/hosts
export-etc-hosts=on
forward-zones-file=/etc/powerdns/recursor-forward-zones
local-port=53
quiet=yes
setgid=pdns
setuid=pdns


root:~# cat /etc/powerdns/recursor-forward-zones
+staging.corp=10.100.251.99
+.=8.8.8.8
root:~# dig m.emu.staging.corp
 
; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> m.emu.staging.corp
;; global options: +cmd                   
;; Got answer:                                            
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39857           
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
 
;; OPT PSEUDOSECTION:                               
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:                                                              
;m.emu.staging.corp.                IN      A
                       
;; ANSWER SECTION:                                                                                                                
m.emu.staging.corp. 6       IN      A       10.200.145.22

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Mar 31 09:45:47 PDT 2023
;; MSG SIZE  rcvd: 67

2단계: 요청하기

root:~# curl https://m.emu.staging.corp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title></title>   
    <meta HTTP-EQUIV="REFRESH" content="0; url=https://mobile.emu.staging.corp">
</head>
<body>
</body>
</html>

3단계: DNS를 다시 확인하세요.NX 도메인

root:~# dig m.emu.staging.corp

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> m.emu.staging.corp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 15030
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.emu.staging.corp.                IN      A

;; AUTHORITY SECTION:
staging.corp.              165     IN      SOA     ns.corp. dns-admin.corp. 2022052303 10800 7200 2419200 3600

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Mar 31 09:46:03 PDT 2023
;; MSG SIZE  rcvd: 127

업스트림 DNS 서버가 유효한 A 레코드로 응답하고 있습니다.

root:~# dig @10.100.251.99 m.emu.staging.corp a

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @10.100.251.99 m.emu.staging.corp a
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55158
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:  
;m.emu.staging.corp.                IN      A

;; ANSWER SECTION:
m.emu.staging.corp. 10      IN      A       10.200.145.22

;; Query time: 46 msec
;; SERVER: 10.100.251.99#53(10.100.251.99)
;; WHEN: Fri Mar 31 09:46:44 PDT 2023
;; MSG SIZE  rcvd: 56

하지만 NXDOMAIN은AAAA:

root:~# dig @10.100.251.99 m.emu.staging.corp aaaa

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @10.100.251.99 m.emu.staging.corp aaaa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 10062
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.emu.staging.corp.                IN      AAAA

;; AUTHORITY SECTION:
staging.corp.              1800    IN      SOA     ns.corp. dns-admin.corp 2022052303 10800 7200 2419200 3600

;; Query time: 109 msec
;; SERVER: 10.100.251.99#53(10.100.251.99)
;; WHEN: Fri Mar 31 09:46:48 PDT 2023
;; MSG SIZE  rcvd: 127

pdns-recursor를 다시 시작하면 하나의 요청에 대해 다시 작동합니다.

문제를 해결하기 위한 몇 가지 옵션이 표시됩니다.

  1. 업스트림 DNS 서버가 NXDOMAIN 없이 응답하도록 허용

업스트림 DNS 서버가 잘못 작동하는 경우 이 동작을 설명하는 RFC가 있습니까? 지금까지 나는 아무것도 찾지 못했습니다. "이것이 깨졌는데 이것이 이유입니다"라는 문서를 지적할 수 있었으면 좋겠습니다.

  1. AAAA 쿼리를 제거하도록 PowerDNS 변경

이 작업을 수행하는 방법에 대한 문서를 찾을 수 없습니다. 이는 시스템 수준이어야 하며 제가 제공한 컬 명령은 단지 예일 뿐이며 DNS 쿼리는 어디에서나 올 수 있습니다.

답변1

NXDOMAIN은 해당 이름(및 그 아래의 모든 이름)이 존재하지 않음을 의미합니다. 따라서 PowerDNS는 정상적으로 작동하고 있으나, 권한 있는 DNS 서버에 문제가 있습니다.

또한보십시오https://www.rfc-editor.org/rfc/rfc8020.html

관련 정보