unbound / nsd ส่งคืน SERVFAIL เพื่อแก้ไข DNS LAN ท้องถิ่น nsd เพียงอย่างเดียวทำงานได้ดี


9

ฉันใช้ unbound เป็นเซิร์ฟเวอร์ DNS แบบเรียกซ้ำภายในเครื่อง เพิ่งเพิ่ม nsd เพื่อตั้งค่า LAN DNS ในเครื่อง 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

เมื่อผ่านการ unbound แบบโลคอลมันไม่ทำงาน:

$ 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] debug: ข้าม addr ในรายการ donotquery 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 ยกเว้นการเปลี่ยนพอร์ตการเปิดใช้งานสิ่งควบคุมและเพิ่มโซน

ฉันนิ่งงันโดยสิ่งนี้ดังนั้นความคิดใด ๆ จะได้รับการชื่นชม!

คำตอบ:


12

บรรทัดนี้จากบันทึกแสดงถึงปัญหา:

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

หลุดโดยค่าเริ่มต้นปฏิเสธที่จะส่งแบบสอบถาม DNS ใด ๆ ไปยัง localhost เพื่อให้มัน localhost แบบสอบถามตั้งdo-not-query-localhostไปnoในserver-section ของการกำหนดค่าหลุด:

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

ดูเอกสารประกอบสำหรับunbound.confสำหรับคำอธิบายของตัวเลือก


ดูดี แต่การทดสอบอย่างรวดเร็วของฉันไม่ได้แสดงว่าเป็นการแก้ปัญหา ตอนนี้ฉันกำลังทำงานอยู่และจะดูเพิ่มเติมเมื่อฉันกลับถึงบ้าน ขอบคุณ!
คาห์ Yoder

นี่คือคี่จริง: ด้วยการเปลี่ยนแปลงที่ขุดข้างต้นเพื่อไม่ถูกผูกไว้ (ที่สอง) ส่งกลับผลลัพธ์ที่แน่นอนเดียวกันกับผู้ใช้ (SERVFAIL) แต่เมื่อฉันดูบันทึกที่ไม่ถูกผูกไว้ที่สร้างขึ้นในทันทีของแบบสอบถามนั้นแสดงว่าได้รับคำตอบที่ถูกต้องจากอัปสตรีม ไม่มีข้อบ่งชี้ในบันทึกการตอบกลับของ SERVFAIL!
คาห์ Yoder

น่าเสียดายที่ไม่มีคำแนะนำจากฉัน ทั้งหมดที่ฉันสามารถพูดได้คือการลบdo-not-query-localhostตัวเลือกใน nameserver ของฉันให้ฉัน SERVFAIL เมื่อค้นหาโซนต้นขั้วในขณะที่การแทรกอีกครั้งทำให้การทำงานอีกครั้ง
olav

คิดว่าผมจะยอมรับเรื่องนี้และขุดบางมากขึ้นและอาจจะขอให้ติดตามในสิ่งที่ยังคงเกิดขึ้น ....
คาห์ Yoder

1
+1 เพื่อตอบ: การถอนเงินเนื่องจากคำตอบนี้ให้คำแนะนำที่ชัดเจนซึ่งช่วยได้ บางทีสถานการณ์ของฉันอาจไม่เหมือนกับการโพสต์ต้นฉบับ แต่คำแนะนำยังช่วยนำไปสู่การแก้ไขอย่างรวดเร็วเกี่ยวกับสิ่งที่ไม่ทำงาน
TOOGAM

0

สำหรับคำถามเกี่ยวกับ Unbound และ NSD คุณสามารถใช้รายชื่อผู้รับจดหมายที่ดำเนินการโดย NLnet Labs ( https://www.nlnetlabs.nl/support/mailing-lists/ ) ในรายการจดหมายเหล่านี้มีชุมชนที่ยอดเยี่ยมที่ตอบสนองได้ดีมาก (รวมถึงผู้พัฒนาซอฟต์แวร์ของ Unbound และ NSD)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.