Ubuntu 17.04 การค้นหา DNS ที่แก้ไขโดยระบบล้มเหลวโดยการสุ่ม


38

ฉันอัพเกรดเป็น Ubuntu 17.04 และตอนนี้ดูเหมือนว่าจะมีกลไกตัวแก้ไข DNS ใหม่เปิดตัวครั้งแรกใน Ubuntu 16.10

ตอนนี้ฉันได้รับการค้นหา DNS ล้มเหลว 50% ของเวลา การเรียกไปยัง nslookup อื่น ๆล้มเหลวโดยที่ครึ่งหนึ่งของการโทรแก้ไขได้ดีและอีกครึ่งให้สิ่งนี้:

watch -n 1 nslookup google.com

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL

จากสิ่งที่ฉันเข้าใจตอนนี้ที่อยู่ IP ของเซิร์ฟเวอร์ DNS นั้นถูกใช้เพื่อแสดงถึงการแก้ไขระบบซึ่งจะทำการค้นหาเมตาเพื่อหลีกเลี่ยงการสืบค้น DNS ที่ช้าลง (หรือบางอย่าง ... ) ฉันเห็นพฤติกรรมที่เหมือนกันแน่นอนในสองเครื่องที่ฉันอัพเกรดเป็น 17.04 ในสัปดาห์ที่ผ่านมา

ความคิดใด ๆ ที่เป็นปัญหาอยู่ที่นี่และวิธีการแก้ไขที่ถูกต้องหรือไม่

สิ่งต่าง ๆ ทำงานได้ดีก่อนการอัปเกรด (จาก 16.04 หรือ 16.10 ฉันจำไม่ได้ว่าขอโทษด้วย) ฉันคิดว่า 17.04 เป็นรุ่น LTS แต่ตอนนี้ฉันเห็นว่าฉันกระโดดปืนและมันจะไม่ได้รับการพิจารณาจนกว่าจะถึงเดือนเมษายน ดังนั้น ... ที่นี่ฉัน

นอกจากนี้โน้ต ... เบราว์เซอร์ดูเหมือนจะไม่พบปัญหา แต่มี nslookup, ping, git และอื่น ๆ


2
เคล็ดลับสำหรับอนาคต: รุ่น Ubuntu เป็นปีที่จะออกมา.ในเดือนนั้นจะเปิดตัว (ดังนั้นในกรณีของคุณมันจะอยู่ใน04/ 17)
timotree

ฟังดูเหมือนว่าระบบที่ได้รับการแก้ไขแล้วจะทำให้เกิดปัญหาอื่น ๆเช่นกัน
moodboom

คำตอบ:


46

Ubuntu 17.04 ไม่สามารถแก้ไขเซิร์ฟเวอร์ DNS ด้วยการสนับสนุน DNSSEC ตั้งแต่วันที่ 2017-04-18 ปิดการใช้งาน DNSSEC ด้วยภูตนี้:

sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf

เลือกตั้งค่า resolvconf ใหม่หากคุณทำผิดพลาด (บอกว่าใช่ "เตรียม /etc/resolve.conf สำหรับการอัพเดทแบบไดนามิก?"):

sudo dpkg-reconfigure resolvconf

รีสตาร์ทระบบแก้ไขแล้ว:

sudo systemctl restart systemd-resolved

DNS ของคุณควรเริ่มทำงาน คุณสามารถตรวจสอบได้โดยลองsystemd-resolve www.google.comและดูคำตอบ


ขอบคุณสำหรับคำตอบคุณช่วยอธิบายได้ไหม
bertieb

Ubuntu 17.04 ไม่สามารถ (จนถึงที่นี่) แก้ไขเซิร์ฟเวอร์ DNS ด้วยการสนับสนุน DNSSEC ฉันปิดการใช้งาน DNSSEC ด้วยภูตนี้
Sajad Bahmani

ขอบคุณคุณสามารถแก้ไขคำอธิบายนั้นเป็นคำตอบของคุณได้หรือไม่ :)
bertieb

วิธีแก้ปัญหานี้ใช้ไม่ได้สำหรับฉัน - หลังจากตั้งค่านี้ยังคงเมื่อใดก็ตามที่ฉันทำการค้นหาในครั้งแรกฉันได้รับข้อผิดพลาด SERVFAIL หลังจากพยายามสองครั้งจะประสบความสำเร็จและผลก็คือแคช
Guss

1
@SamuelL เกี่ยวกับทีก็เป็นวิธีแฟนซีในการพิมพ์บางสิ่งบางอย่างและส่งไปยังไฟล์ในเวลาเดียวกัน โดยทั่วไปคุณสามารถเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ด้วย> [ตัวอักษรมากกว่า] แต่คุณจะไม่เห็นผลลัพธ์ ทีปล่อยให้มันไปทั้งสองแห่ง Resolvconf "แก้ไขการตั้งค่า"
moodboom

12

ฉันได้สลับไปมาระหว่างการแก้ไข systemd และการจัดการ /etc/resolv.conf ด้วยตนเองและยังไม่พบกลไกการแก้ไข DNS systemd ให้มีความเสถียร

เห็นได้ชัดว่ามีอย่างน้อยหนึ่งข้อผิดพลาด libnssใน Ubuntu 16.10 และเห็นได้ชัดว่ายังอยู่ใน 17.04 มีคนจำนวนมากที่มีปัญหา DNS ตั้งแต่ Ubuntu 16.10 เปิดใช้งานระบบได้รับการแก้ไขนี่คือการวิเคราะห์และนี่เป็นวิธีแก้ปัญหาของบุคคลอื่น ไม่มีใครทำงานให้ฉันจนกว่าฉันจะเขียนทับ /etc/resolv.conf ด้วยตนเองด้วยเซิร์ฟเวอร์ DNS ของ google

nameserver 8.8.8.8   << or another if you don't trust google
nameserver 8.8.4.4

นี่เป็นโซลูชันที่สมบูรณ์แบบหากคุณไม่ต้องการการกำหนดค่า DNS แบบไดนามิก เพียงให้แน่ใจว่าคุณหยุดและปิดการใช้งาน systemd แก้ไข:

sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop

การเปลี่ยนเป็น resolconf ไม่ได้ช่วยแก้ปัญหาของฉันฉันจะกลับไปใช้ systemd-แก้ปัญหาได้อย่างไร (ขอบคุณ)
Edward Moffett

1
ลอง:systemctl enable systemd-resolved.service && systemctl start systemd-resolved.service
moodboom

1
เพื่อนคุณเพิ่งบันทึกระบบ ma !! BRAVO
ปฏิวัติ

ทำงานได้ดีใน 18.04
André M. Faria

4

Ubuntu 17.04 และ distros อื่น ๆ กำลังโอบกอด systemd ซึ่งรวมถึง systemd-modified

  • ดังที่กล่าวไว้ในคำตอบ SjB การสนับสนุน DNSSEC อาจทำให้เกิดปัญหา
  • ระบบได้รับการแก้ไขส่ง Ping ตัวแก้ไข DNS ทั้งหมดเพื่อให้สามารถใช้งานได้เร็วที่สุด สิ่งนี้อาจทำให้เกิดปัญหากับ VPN ฯลฯ ในสภาพแวดล้อมที่ซับซ้อนมากขึ้น
  • ใบรับรองเซิร์ฟเวอร์ DNS ได้รับการตรวจสอบแล้วฉันมีข้อผิดพลาดหากนาฬิกาของฉันเอียง

ฉันไม่คิดว่ามันจำเป็นต้องเป็นการเปลี่ยนแปลงที่ไม่ดี แต่เป็นเพียงการเปลี่ยนแปลงมากมาย ฉันจะพยายามอัปเดตและขยายคำตอบนี้เมื่อฉันเรียนรู้เพิ่มเติม


4

ใส่เพียงคุณเพียงแค่ต้องมีบรรทัด "DNSSEC = no" ในส่วน [แก้ไข] ของ /etc/systemd/resolved.conf

https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1682499/


ขอบคุณสำหรับลิงค์ข้อผิดพลาด ค่าเริ่มต้นจะถูกเปลี่ยนกลับเป็น DNSSEC = ไม่ใช่ในรุ่นที่กำลังจะมีการอัพเดทซึ่งจะทำให้ปัญหานั้นหายไป
moodboom

1

เพียงเพิ่มชื่อเซิร์ฟเวอร์ /etc/systemd/resolved.conf DNS = 194.109.xxx.xxx (บนเราเตอร์ของคุณเซิร์ฟเวอร์ภายนอก)

systemctl รีสตาร์ทระบบแก้ไขแล้ว

ไม่จำเป็นต้องเปลี่ยน rand จาก 3 เป็น 2 ไม่จำเป็นต้องเปลี่ยนการตั้งค่า dnssec เป็น off


น่าเสียดายที่สิ่งนี้เพียงอย่างเดียวไม่สามารถแก้ปัญหา "การร้องขออื่นล้มเหลว" สำหรับฉันได้
moodboom

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