로컬 LAN DNS를 확인하는 SERVFAIL을 반환하는 바인딩 해제/nsd입니다. nsd만으로도 잘 작동합니다

로컬 LAN DNS를 확인하는 SERVFAIL을 반환하는 바인딩 해제/nsd입니다. nsd만으로도 잘 작동합니다

나는 로컬 재귀 DNS 서버로 언바운드를 사용하고 있습니다. 로컬 LAN DNS를 설정하기 위해 nsd를 추가했습니다. nsd는 포트 53530에서 수신 대기 중이며 정상적으로 작동합니다.

$ dig @127.0.0.1 data2.datanet.home -p 53530

; <<>> DiG 9.9.2-P2 <<>> @127.0.0.1 data2.datanet.home -p 53530
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59577
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

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

;; ANSWER SECTION:
data2.datanet.home.     600     IN      A       192.168.1.62

;; AUTHORITY SECTION:
datanet.home.           600     IN      NS      ns1.datanet.home.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53530(127.0.0.1)
;; WHEN: Mon Jun 15 07:16:24 2015
;; MSG SIZE  rcvd: 81

로컬 언바운드를 통과할 때 작동하지 않습니다.

$ dig @127.0.0.1 data2.datanet.home

; <<>> DiG 9.9.2-P2 <<>> @127.0.0.1 data2.datanet.home
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 47645
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

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

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jun 15 07:18:02 2015
;; MSG SIZE  rcvd: 47

다음은 자세한 내용이 포함된 언바운드 로그에서 얻은 내용입니다. 4

Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: validator operate: query router.datanet.home. A IN
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: validator: pass to next module
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: mesh_run: validator module exit state is module_wait_module
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: iterator[module 1] operate: extstate:module_state_initial event:
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: process_request: new external request event
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: iter_handle processing q with state INIT REQUEST STATE
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: resolving router.datanet.home. A IN
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: request has dependency depth of 0
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: use stub datanet.home. NS IN
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: cache delegation returns delegpt
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: DelegationPoint<datanet.home.>: 0 names (0 missing), 1 addrs (0 r
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug:    ip4 127.0.0.1 port 53530 (len 16)
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: iter_handle processing q with state INIT REQUEST STATE (stage 2)
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: resolving (init part 2):  router.datanet.home. A IN
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: use stub datanet.home. NS IN
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: iter_handle processing q with state INIT REQUEST STATE (stage 3)
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: resolving (init part 3):  router.datanet.home. A IN
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: iter_handle processing q with state QUERY TARGETS STATE
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: processQueryTargets: router.datanet.home. A IN
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: processQueryTargets: targetqueries 0, currentqueries 0 sentcount
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] info: DelegationPoint<datanet.home.>: 0 names (0 missing), 1 addrs (0 r
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug:    ip4 127.0.0.1 port 53530 (len 16)
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: attempt to get extra 3 targets
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: skip addr on the donotquery list ip4 127.0.0.1 port 53530 (len 1
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: No more query targets, attempting last resort
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: configured stub servers failed -- returning SERVFAIL
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: store error response in message cache
Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: return error response SERVFAIL

특히 이것은 무엇입니까? [1947:0] 디버그: donotquery 목록에서 addr을 건너뜁니다. ip4 127.0.0.1 포트 53530(len 1 그게 핵심인 것 같지만 왜 그렇게 말하는지 잘 모르겠습니다.

내 전체 unbound.conf는 다음과 같습니다.

server:
  interface: 127.0.0.1
  interface: 192.168.1.50
  use-syslog: yes
  username: "unbound"
  directory: "/etc/unbound"
  trust-anchor-file: trusted-key.key
  access-control: 192.168.1.0/24 allow
  verbosity: 2
  local-zone: "1.168.192.in-addr.arpa" nodefault
remote-control:
  control-enable: yes
  control-interface: 127.0.0.1
  control-port: 8953
  server-key-file: "/etc/unbound/unbound_server.key"
  server-cert-file: "/etc/unbound/unbound_server.pem"
  control-key-file: "/etc/unbound/unbound_control.key"
  control-cert-file: "/etc/unbound/unbound_control.pem"

stub-zone:
  name: "datanet.home"
  stub-addr: 127.0.0.1@53530
#  stub-first: yes
stub-zone:
  name: "1.168.192.in-addr.arpa"
  stub-addr: 127.0.0.1@53530

nsd.conf에는 주석이 많아서 붙여넣어야 할지 확신할 수 없지만 어쨌든 nsd는 제대로 작동하는 것 같습니다. 포트 변경, 제어 기능 활성화 및 영역 추가를 제외하면 포함된 예제 conf와 거의 동일합니다.

나는 이것 때문에 당황스러워서 어떤 아이디어라도 감사하겠습니다!

답변1

로그의 다음 줄은 문제를 나타냅니다.

Jun 15 06:12:39 pizza.yoderdev.com unbound[1947]: [1947:0] debug: skip addr on the donotquery list ip4 127.0.0.1 port 53530 (len 1

기본적으로 바인딩 해제는 localhost에 대한 DNS 쿼리 전송을 거부합니다. localhost를 쿼리할 수 있도록 하려면 언바운드 구성의 - 섹션에서 do-not-query-localhost를 설정하십시오.noserver

server:
  interface: 127.0.0.1
  interface: 192.168.1.50
  [...]
  do-not-query-localhost: no

에 대한 설명서를 참조하세요.언바운드.conf옵션에 대한 설명입니다.

답변2

분할-수평 DNS 컨텍스트에서 동일한 문제가 발생했습니다. 언바운드 로그에"들어오는 스크러빙된 패킷"(NSD에서 획득)에는 문제의 IP 주소/CNAME 항목이 포함되어 있지만 그 이후에는"마무리 처리 중", 후자는 통과되지 않습니다.

domain-insecure: "datanet.home"결국 Unbound v1.12.0 및 NSD v4.3.3을 사용하여 이에 상응하는 기능을 추가하면 이 문제가 해결되었습니다.

답변3

다음 옵션이 있다는 점을 제외하면 거의 동일한 구성으로 유사한 오류 메시지가 표시되었습니다.

    tls-upstream: yes

이 옵션을 사용하면 바인딩되지 않은 상태에서 전달된 영역과 스텁 영역 모두에 대한 업스트림 쿼리가 전송 시에만 TLS를 통해 수행될 것으로 예상하게 됩니다. 그러나 스텁 영역을 호스팅하는 NSD 권한 서버는 TLS 없이 로컬 연결로만 구성되었습니다. 이로 인해 SERVFAIL 응답이 발생할 수도 있습니다.

적절한 구성은 스텁 영역이 TLS 전송용으로 구성되지 않은 경우 섹션 내에서 tls-upstream로 설정하고 대신 으로 no설정하는 것 입니다.forward-tls-upstreamyesforward-zone

관련 정보