ข้อผิดพลาดในการค้นหา DNS ของ Debian 12: ซ่อมแซม systemd-resolved

หาก Debian 12 แสดงข้อความ “Temporary failure in name resolution” ให้ตรวจสอบบริการ resolver, /etc/resolv.confลิงก์ และเซิร์ฟเวอร์ DNS ที่แสดงตามresolvectlลำดับ การรีสตาร์ทบริการจะช่วยได้เฉพาะเมื่อบริการหยุดทำงานเท่านั้น ลิงก์เสียหรือเซิร์ฟเวอร์ต้นทางที่ไม่สามารถเข้าถึงได้ต้องใช้วิธีแก้ไขอื่น

คำแนะนำเหล่านี้ใช้ได้กับระบบ Debian 12 (Bookworm) ที่กำหนดค่าให้ใช้ ตัวแก้ไข DNS systemd-resolvedDebian ได้แยกตัวแก้ไข DNS นั้นออกเป็นแพ็กเกจแยกต่างหากและไม่ได้กำหนดให้เป็นค่าเริ่มต้น ดังที่อธิบายไว้ในบันทึกการเผยแพร่ Debian 12หากการติดตั้งของคุณใช้ตัวจัดการ DNS อื่น ให้ใช้ตัวจัดการนั้นเป็นหลักแทนที่จะบังคับใช้การตั้งค่าเหล่านี้กับมัน

1. ระบุจุดที่การแก้ไขชื่อล้มเหลว

เริ่มต้นด้วยการกำหนดเส้นทางเครือข่ายและการค้นหาชื่อโฮสต์ รันคำสั่งเหล่านี้ในเครื่องหรือในเทอร์มินัลที่จะเปิดค้างไว้หากมีการเปลี่ยนแปลงเครือข่าย:

ip -br address
ip route
ping -c 2 1.1.1.1
resolvectl status
resolvectl query debian.org
getent ahosts debian.org

เส้นทางเริ่มต้นและการเชื่อมต่อ IP ตัวเลขที่ใช้งานได้ แสดงว่าเครื่องสามารถเข้าถึงเครือข่ายได้โดยไม่ต้องใช้ DNS การที่ ping ไม่สำเร็จเพียงอย่างเดียวไม่ได้พิสูจน์ว่าเส้นทางเสียเสมอไป เครือข่ายอาจบล็อกการตอบกลับ ICMP echo หากอินเทอร์เฟซไม่มีที่อยู่หรือเส้นทาง ให้แก้ไขการเชื่อมต่อเครือข่ายก่อน

resolvectl statusแสดงเซิร์ฟเวอร์ DNS และโดเมนที่กำหนดไว้ทั่วโลกหรือสำหรับแต่ละอินเทอร์เฟซresolvectl queryทดสอบตัวแก้ไขชื่อโฮสต์ของ systemd และgetent ahostsทดสอบเส้นทางการค้นหาชื่อโฮสต์ที่แอปพลิเคชัน Linux ใช้กันทั่วไป ความแตกต่างนี้ช่วยในการแยกแยะสาเหตุของปัญหา

การสังเกตตรวจสอบถัดไป
ไม่มีที่อยู่หรือเส้นทางเริ่มต้นแก้ไขการตั้งค่าอินเทอร์เฟซ เกตเวย์ หรือ DHCP ก่อนแก้ไขการตั้งค่า DNS
resolvectlไม่สามารถเชื่อมต่อกับบริการได้ตรวจสอบว่าได้systemd-resolvedติดตั้งและใช้งานอยู่หรือไม่
resolvectl queryใช้งานได้, ใช้งานgetentไม่ได้ตรวจสอบ/etc/resolv.confและกำหนดค่าโฮสต์ NSS
การค้นหาทั้งสองครั้งล้มเหลวแม้ว่าเส้นทางจะใช้งานได้ก็ตามตรวจสอบที่อยู่ DNS ต้นทาง การกำหนดเส้นทาง DNS และการเข้าถึงไฟร์วอลล์
เทอร์มินัล Debian พร้อมคำสั่ง ip route, resolvectl status และ getent hosts สำหรับตรวจสอบการเชื่อมต่อ DNS
มุมมองเทอร์มินัลจะจัดกลุ่มเส้นทางเครือข่ายเริ่มต้น การกำหนดเซิร์ฟเวอร์ DNS และการค้นหาชื่อโฮสต์ระดับแอปพลิเคชันสำหรับการวินิจฉัยเบื้องต้น

2. ตรวจสอบให้แน่ใจว่าได้ติดตั้งและเปิดใช้งาน systemd-resolved แล้ว

ใน Debian 12 การมีอยู่ของ systemd ไม่ได้หมายความว่าแพ็คเกจ resolver แยกต่างหากจะได้รับการติดตั้งเสมอไป ตรวจสอบแพ็คเกจและหน่วยก่อนทำการเปลี่ยนแปลงไฟล์ DNS ใดๆ:

dpkg-query -W -f='${Status}\n' systemd-resolved
systemctl status systemd-resolved --no-pager

หากติดตั้งแพ็กเกจแล้วแต่บริการไม่ทำงาน ให้เริ่มบริการและเปิดใช้งานสำหรับการบูตครั้งต่อไป:

sudo systemctl enable --now systemd-resolved
systemctl is-active systemd-resolved

คำสั่งสุดท้ายควรรายงานผลลัพธ์activeหากอุปกรณ์ทำงานล้มเหลว ให้ตรวจสอบข้อความแสดงข้อผิดพลาดจริงแทนที่จะรีสตาร์ทอุปกรณ์ซ้ำๆ:

journalctl -u systemd-resolved -b --no-pager -n 60

หากไม่พบแพ็กเกจ ให้ติดตั้งsudo apt install systemd-resolvedหลังจากที่คุณมีสิทธิ์เข้าถึงคลังแพ็กเกจแล้วเท่านั้น การติดตั้ง/etc/resolv.confแพ็กเกจนี้จะเปลี่ยนการควบคุมของระบบ ดังนั้นโปรดตรวจสอบการตั้งค่า NetworkManager, VPN หรือ static DNS ก่อน เอกสารของ Debian ได้ระบุการเปลี่ยนแปลงแพ็กเกจนี้ไว้ในบันทึกการอัปเกรด Bookwormแล้ว

เทอร์มินัล Debian แสดงคำสั่ง systemctl status systemd-resolved โดยมีสถานะเป็น Active: active (กำลังทำงาน)
หน้าจอแสดงสถานะการบริการจะแสดงให้เห็นว่าควรดูที่ใดสำหรับข้อความแจ้งการโหลดหน่วย สถานะการทำงาน และข้อความเริ่มต้นการทำงาน

3. ซ่อมแซมลิงก์ตัวแก้ไขเฉพาะในกรณีที่ลิงก์นั้นผิดพลาดเท่านั้น

ตัวจัดการพอร์ต มาตรฐานsystemd-resolvedจะรับฟังที่พอร์ต127.0.0.53. ไฟล์ที่แนะนำสำหรับการใช้งานร่วมกันคือ/run/systemd/resolve/stub-resolv.confซึ่งสามารถเชื่อมโยงได้จาก/etc/resolv.conf. ตรวจสอบโหมดปัจจุบันของคุณก่อน:

ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
resolvectl status

การเชื่อมโยงไป/run/systemd/resolve/resolv.confยังก็เป็นโหมดที่รองรับเช่นกัน แต่โปรแกรมที่ใช้โหมดนี้จะติดต่อ DNS ต้นทางโดยตรงแทนที่จะใช้ stub ในเครื่อง อย่าบอกว่าลิงก์นั้นเสียเพียงเพราะมันแตกต่างออกไปคู่มือบริการ systemd-resolved ของ Debian อธิบายโหมดที่รองรับไว้

หากคุณตั้งใจใช้ stub ในเครื่อง บริการกำลังทำงานอยู่ ตัวรับฟัง stub ถูกเปิดใช้งาน และ stub ที่มีอยู่/etc/resolv.confหายไป ค้างอยู่ หรือชี้ไปยังตัวแก้ไขที่ล้าสมัย ให้กู้คืนลิงก์ที่แนะนำ ก่อนอื่นให้สำรองไฟล์หรือลิงก์ที่มีอยู่ ข้ามขั้นตอนการคัดลอกหากไม่มีไฟล์อยู่:

sudo cp -a /etc/resolv.conf /etc/resolv.conf.dns-backup
sudo ln -sfn /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
cat /etc/resolv.conf

อย่าใช้งานการแทนที่นั้นบนโฮสต์ที่มีบริการอื่นจัดการอยู่แล้ว การเพิ่มรายการ /etc/resolv.confในเครื่องnameserver 127.0.0.53ยังต้องมีตัวรับฟังแบบ stub ที่ใช้งานได้ การเขียนที่อยู่เพียงอย่างเดียวไม่ได้สร้างบริการ DNS บนเครื่องระยะไกล ให้คงวิธีการเข้าถึงที่สองไว้ก่อนที่จะแก้ไขการตั้งค่าตัวแก้ไข

เทอร์มินัล Debian แสดงลิงก์สัญลักษณ์ /etc/resolv.conf ที่ชี้ไปยังไฟล์ stub-resolv.conf ที่ได้รับการแก้ไขโดย systemd
การตรวจสอบลิงก์สัญลักษณ์จะแสดงเป้าหมายที่คาดหวังเมื่อ Debian ถูกกำหนดค่าให้ใช้ stub ที่แก้ไขโดย systemd ในเครื่องโดยเจตนา

4. แก้ไขปัญหาเซิร์ฟเวอร์ DNS ต้นทางที่หายไปหรือไม่สามารถเข้าถึงได้

เมื่อresolvectl statusไม่พบเซิร์ฟเวอร์ DNS ต้นทางที่เหมาะสม หรือเซิร์ฟเวอร์ที่กำหนดค่าไว้ไม่สามารถเข้าถึงได้ ให้แก้ไขแหล่งที่มาของการกำหนดค่านั้น การตั้งค่า DNS แบบไดนามิกอาจมาจาก DHCP, NetworkManager, systemd-networkd หรือ VPN ตรวจสอบว่าอินเทอร์เฟซใดเป็นตัวนำเส้นทางเริ่มต้น และเซิร์ฟเวอร์ DNS ใดเป็นของอินเทอร์เฟซนั้น

สำหรับการทดสอบวินิจฉัยเบื้องต้นบนเครือข่ายที่อนุญาตให้ใช้ DNS สาธารณะ ให้กำหนดตัวแก้ไข DNS สาธารณะที่รู้จักให้กับอินเทอร์เฟซนั้น แทนที่ens33ด้วยอินเทอร์เฟซจริงจากip -br address:

sudo resolvectl dns ens33 1.1.1.1 1.0.0.1
resolvectl query debian.org

ที่อยู่ทั้งสองนี้ได้รับการบันทึกไว้โดยCloudflare ว่าเป็นที่อยู่ตัวแก้ไข DNS สาธารณะ การเปลี่ยนแปลง นี้resolvectl dnsเป็นการกำหนดค่าขณะทำงาน ผู้จัดการเครือข่ายอาจแทนที่เมื่อการเชื่อมต่อใหม่ หากการค้นหาใช้งานได้แล้ว ให้แก้ไขแหล่ง DNS ถาวรแทนที่จะพึ่งพาคำสั่งชั่วคราวนี้

ด้วย NetworkManager คุณสามารถตรวจสอบการเชื่อมต่อที่ใช้งานอยู่nmcli connection show --activeและปรับการตั้งค่า DNS หรือพฤติกรรม DHCP ของการเชื่อมต่อดังกล่าวได้ ส่วนด้วย systemd-networkd ให้ใส่DNS=การตั้งค่าที่ต้องการลงใน.networkไฟล์ที่เกี่ยวข้อง แล้วทำการรีโหลดหรือกำหนดค่าเครือข่ายใหม่ในเวลาที่เหมาะสม โปรดดูคู่มือ systemd.network ของ Debianและคู่มือการกำหนดค่า NetworkManager ของ Debianการเชื่อมต่ออินเทอร์เฟซที่ได้รับการจัดการใหม่สามารถขัดจังหวะเซสชัน SSH ได้

ควรใช้เซิร์ฟเวอร์ DNS ขององค์กรหรือ VPN สำหรับชื่อภายใน ไม่สามารถสันนิษฐานได้ว่าตัวแก้ไข DNS สาธารณะจะตอบสนองต่อโซนส่วนตัว การบังคับให้ทุกการสอบถามไปยังตัวแก้ไขเหล่านั้นอาจทำให้ DNS แบบแยกส่วนเสียหายหรือเปิดเผยชื่อโฮสต์ภายในได้DNS=รายการส่วนกลางใน resolved.conf resolved.confสามารถทำงานควบคู่ไปกับ DNS ต่อลิงก์แทนที่จะแทนที่โดยอัตโนมัติ โปรดดูคู่มือ resolved.conf ของ Bookworm

5. ล้างแคชและตรวจสอบว่าเส้นทางการค้นหาทั้งสองทำงานได้ถูกต้อง

หลังจากแก้ไขบริการ ลิงก์ตัวแก้ไข หรือการกำหนดค่าต้นทางแล้ว ให้ล้างคำตอบที่แคชไว้และทดสอบอีกครั้ง:

sudo resolvectl flush-caches
resolvectl query debian.org
getent ahosts debian.org
resolvectl status

การแก้ไขจะมีประสิทธิภาพเมื่อresolvectl queryที่อยู่ส่งคืน ที่getent ahostsอยู่บันทึกส่งคืน และเซิร์ฟเวอร์ DNS ที่ตั้งใจไว้ยังคงมองเห็นได้หลังจากเครือข่ายเชื่อมต่อใหม่ คำสั่งทั้งสองทดสอบอินเทอร์เฟซที่แตกต่างกัน ดังนั้นอย่าถือว่าความสำเร็จในคำสั่งหนึ่งเป็นหลักฐานว่าทุกแอปพลิเคชันได้รับการแก้ไขแล้ว คู่มือ resolvectl ของ Debian อธิบายเกี่ยวกับการสอบถาม สถานะ และการล้างแคช

เทอร์มินัล Debian แสดงผลลัพธ์จากคำสั่ง resolvectl query debian.org และ getent ahosts debian.org ซึ่งส่งคืนระเบียนที่อยู่ ตามด้วยคำสั่ง flush-caches
หน้าจอแสดงผลสุดท้ายจะแสดงการตรวจสอบสองรายการ ซึ่งทั้งสองรายการควรส่งคืนระเบียนที่อยู่หลังจากแก้ไขการกำหนดค่า DNS เสร็จแล้ว

หากresolvectl queryสำเร็จแต่getentยังคงล้มเหลว ให้ตรวจสอบgrep "^hosts:" /etc/nsswitch.confและยืนยันว่าโมดูล NSS ที่เหมาะสมdnsหรือติดตั้งแล้วresolveอยู่ในเส้นทางการค้นหา หากทั้งสองอย่างยังคงล้มเหลว ให้ตรวจสอบบันทึกการแก้ไขและข้อจำกัดของไฟร์วอลล์ใดๆ เกี่ยวกับการรับส่งข้อมูล DNS จากนั้นทดสอบโดยใช้ที่อยู่ DNS ขององค์กร เราเตอร์ หรือผู้ให้บริการจริง การค้นหาที่สำเร็จเพียงครั้งเดียวไม่เพียงพอ: ทำซ้ำการตรวจสอบหลังจากเชื่อมต่อใหม่และหลังจากรีบูตเพื่อตรวจสอบการแก้ไขอย่างถาวร

ฝากความเห็น

ข้อผิดพลาดในการค้นหา DNS ของ Debian 12: ซ่อมแซม systemd-resolved

ข้อผิดพลาดในการค้นหา DNS ของ Debian 12: ซ่อมแซม systemd-resolved

กู้คืนการค้นหา DNS บน Debian 12 โดยตรวจสอบ systemd-resolved ซ่อมแซม resolv.conf เมื่อจำเป็น และตรวจสอบการแก้ไข DNS ต้นทางและการแก้ไขแอปพลิเคชัน

Ubuntu 24.04 ไม่แสดงเสียง HDMI ใช่ไหม? กู้คืนเอาต์พุต

Ubuntu 24.04 ไม่แสดงเสียง HDMI ใช่ไหม? กู้คืนเอาต์พุต

ตั้งค่า Ubuntu ให้ตรวจจับจอภาพหรือทีวีของคุณเป็นอุปกรณ์ส่งสัญญาณเสียง เลือกอุปกรณ์นั้นในการตั้งค่าเสียง และตรวจสอบการเชื่อมต่อหรือรายการอุปกรณ์ PipeWire หากไม่มี HDMI

แก้ไขข้อผิดพลาดลายเซ็น APT โดยการซ่อมแซมคีย์ที่เก็บข้อมูล

แก้ไขข้อผิดพลาดลายเซ็น APT โดยการซ่อมแซมคีย์ที่เก็บข้อมูล

แก้ไขคำเตือนการตรวจสอบลายเซ็น APT ของ Ubuntu อย่างปลอดภัย โดยการระบุแหล่งที่มาที่ล้มเหลว รีเฟรชคีย์ที่ได้รับการตรวจสอบแล้ว และตรวจสอบผลลัพธ์โดยไม่ต้องปิดใช้งานระบบรักษาความปลอดภัย

วิธีการแปลงค่าแรงดันไฟฟ้าสามเฟส กระแสไฟฟ้า กำลังไฟฟ้า (kW) กำลังไฟฟ้าแรงสูง (kVA) และตัวประกอบกำลัง

วิธีการแปลงค่าแรงดันไฟฟ้าสามเฟส กระแสไฟฟ้า กำลังไฟฟ้า (kW) กำลังไฟฟ้าแรงสูง (kVA) และตัวประกอบกำลัง

เรียนรู้สูตรสมดุลสามเฟสและวิธีการแปลงแรงดัน กระแส กำลังไฟฟ้า (kW) กำลังไฟฟ้าแรงสูง (kVA) และตัวประกอบกำลังทีละขั้นตอน พร้อมตัวอย่างการคำนวณและข้อจำกัดที่ต้องตรวจสอบ

จำกัดการใช้งาน CPU และหน่วยความจำของคำสั่งด้วย cgroups ใน Ubuntu

จำกัดการใช้งาน CPU และหน่วยความจำของคำสั่งด้วย cgroups ใน Ubuntu

เรียกใช้งานเวิร์กโหลดภายในขอบเขต systemd ด้วย CPUQuota และ MemoryMax จากนั้นตรวจสอบขีดจำกัดผ่าน cgroup v2

เข้ารหัส Pi-hole Upstream DNS บน Ubuntu Server 24.04

เข้ารหัส Pi-hole Upstream DNS บน Ubuntu Server 24.04

ตั้งค่า dnscrypt-proxy เป็นบริดจ์ DoH ในเครื่องของ Pi-hole บน Ubuntu 24.04 โดยกำหนดให้รับฟังเฉพาะ localhost เลือกตัวแก้ไข และตรวจสอบก่อนเปลี่ยน DNS

วิธีใช้งานท่าทางสัมผัสบนทัชแพดใน Ubuntu 24.04 บน Wayland

วิธีใช้งานท่าทางสัมผัสบนทัชแพดใน Ubuntu 24.04 บน Wayland

ตรวจสอบการตั้งค่าทัชแพดของ Ubuntu ยืนยันการใช้งาน Wayland และทดสอบการปัดนิ้วในตัวของ GNOME ก่อนที่จะแก้ไขปัญหาแอปหรือฮาร์ดแวร์

สร้าง RAID 1 Mirror สำหรับ Debian 12 โดยใช้ mdadm

สร้าง RAID 1 Mirror สำหรับ Debian 12 โดยใช้ mdadm

สร้างและตรวจสอบความถูกต้องของอาร์เรย์ข้อมูล RAID 1 สองดิสก์สำหรับ Debian 12 ฟอร์แมตอย่างปลอดภัย และกำหนดค่าให้ประกอบและเมานต์หลังจากรีบูต

เข้ารหัส Swap ของ Debian 12 ด้วยคีย์ใหม่ทุกครั้งที่บูตเครื่อง

เข้ารหัส Swap ของ Debian 12 ด้วยคีย์ใหม่ทุกครั้งที่บูตเครื่อง

ตั้งค่าการเข้ารหัสแบบสุ่มคีย์สำหรับพาร์ติชัน swap ที่มีอยู่ของ Debian 12 ตรวจสอบการแมป dm-crypt ที่ใช้งานอยู่ และทำความเข้าใจข้อดีข้อเสียของการจำศีล

วิธีจำกัดสิทธิ์การเข้าถึง SSH ให้กับผู้ใช้เฉพาะในไดเร็กทอรีที่กำหนดบน Ubuntu 24.04 (คู่มือ SFTP Chroot)

วิธีจำกัดสิทธิ์การเข้าถึง SSH ให้กับผู้ใช้เฉพาะในไดเร็กทอรีที่กำหนดบน Ubuntu 24.04 (คู่มือ SFTP Chroot)

จำกัดการเข้าถึงบัญชี SSH ของ Ubuntu 24.04 ให้เฉพาะโฟลเดอร์ SFTP ที่กำหนดไว้ โดยใช้ chroot, สิทธิ์การเข้าถึงที่เหมาะสม, กฎการจับคู่ และการทดสอบที่ปลอดภัย โดยไม่ให้สิทธิ์การเข้าถึงเชลล์