Flush DNS บน Linux: SystemD-Resolved, NetworkManager และ NSCD

เผยแพร่แล้ว: 2025-09-26

เมื่อระบบ Linux ของคุณทำงานผิดปกติในขณะที่เข้าถึงเว็บไซต์ - หรือแก้ไขโดเมนที่ไม่ถูกต้อง - อาจถึงเวลาที่จะล้างแคช DNS เช่นเดียวกับแคชของเบราว์เซอร์แคช DNS เก็บข้อมูลชั่วคราวที่ช่วยปรับปรุงความเร็วในการท่องเว็บและลดเวลาแฝง อย่างไรก็ตามเมื่อแคชนี้ล้าสมัยหรือเสียหายมันสามารถนำไปสู่ปัญหาการเชื่อมต่อ สิ่งนี้มีความสำคัญอย่างยิ่งในสถานการณ์การพัฒนาหรือเครือข่ายที่ชื่อโดเมนเปลี่ยนไปบ่อยครั้ง ในบทความนี้เราจะสำรวจวิธีการล้างแคช DNS ในระบบ Linux ที่ใช้SystemD-Resolved,NetworkManagerหรือNSCD(Name Service Cache Daemon)

ทำความเข้าใจการแคช DNS ใน Linux

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

ในการแจกแจงที่ทันสมัยคุณมักจะพบหนึ่งในระบบแก้ไขดังต่อไปนี้:

  • Systemd-Resolved: ทั่วไปในการแจกแจงใหม่เช่น Ubuntu 18.04+ และ Fedora
  • NetworkManager: มักจะทำงานร่วมกับ SystemD ที่ได้รับการแก้ไขหรือแบ็กเอนด์อื่น
  • NSCD(ชื่อบริการแคช Daemon): พบในระบบ UNIX แบบดั้งเดิมและระบบ Linux ขององค์กร

แต่ละระบบเหล่านี้จัดการการแคช DNS แตกต่างกันซึ่งหมายถึงวิธีการล้างแคชก็แตกต่างกันไป ลองเดินผ่านรายละเอียดแต่ละอันกันเถอะ

ฟลัชชิง DNS แคชในระบบที่ได้รับการแก้ไข

SystemD-Resolvedเป็นบริการที่จัดทำโดยSystemDเพื่อจัดการการสืบค้น DNS และการแคช มันกลายเป็นมาตรฐานในการแจกแจง Linux กระแสหลักมากมาย คุณสามารถตรวจสอบได้ว่าระบบของคุณใช้ระบบที่ได้รับการแก้ไขหรือไม่โดยการรัน:

 systemctl is-active systemd-resolved

หากเปิดใช้งานให้ดำเนินการล้างแคช DNS ด้วยคำสั่งต่อไปนี้:

 sudo systemd-resolve --flush-caches

เพื่อยืนยันว่าแคชได้รับการล้างหรือดูสถิติปัจจุบันคุณสามารถใช้:

 systemd-resolve --statistics

คำสั่งนี้แสดงตัวชี้วัดเช่นจำนวนรายการแคชฮิตและพลาดช่วยให้คุณมั่นใจได้ว่าแคชล้างจะสำเร็จ

การกำหนดค่าและการดีบักที่ได้รับการแก้ไข SystemD

สำหรับผู้ใช้ขั้นสูงการกำหนดค่าของบริการอยู่ใน /etc/systemd/resolved.conf คุณสามารถปรับการตั้งค่าเช่นเซิร์ฟเวอร์ DNS หรือพฤติกรรมทางเลือก หากคุณประสบปัญหา DNS แบบถาวรให้พิจารณาตรวจสอบบันทึก journalctl สำหรับการแก้ไขระบบ:

 journalctl -u systemd-resolved

สิ่งนี้จะเป็นประโยชน์อย่างไม่น่าเชื่อเมื่อแก้ไขปัญหาการแก้ปัญหาโดเมนที่เกิดจากการกำหนดค่าผิดปกติของ DNS หรือการเป็นพิษแคช

การใช้ NetworkManager เพื่อรีเฟรช DNS

NetworkManager เป็นยูทิลิตี้ที่จัดการการกำหนดค่าเครือข่ายโดยอัตโนมัติในการแจกแจง Linux จำนวนมากรวมถึงสภาพแวดล้อมเดสก์ท็อปเช่น GNOME และ KDE ในขณะที่ NetworkManager ไม่ได้แคช DNS แต่มักจะกำหนดว่าบริการใด (เช่น SystemD-Resolved) จัดการ DNS

ในการรีเฟรชการตั้งค่า DNS โดยใช้ NetworkManager คุณสามารถรีสตาร์ทบริการ:

 sudo systemctl restart NetworkManager

วิธีนี้ทางอ้อมบังคับให้ DNS Resolution ใหม่โดยการเริ่มต้นการเชื่อมต่อและบริการที่เกี่ยวข้อง หากคุณต้องการได้รับเม็ดละเอียดมากขึ้นคุณสามารถปิดการใช้งานและเปิดใช้งานอินเตอร์เฟสเครือข่ายเฉพาะอีกครั้ง ตัวอย่างเช่น:

 nmcli networking off nmcli networking on

หรือสำหรับอุปกรณ์เฉพาะ:

 nmcli device disconnect eth0 nmcli device connect eth0

วิธีนี้มีประโยชน์อย่างยิ่งเมื่อสลับระหว่างเครือข่ายหรือแก้ไขปัญหาการแพร่กระจายโดเมนหลังจากการเปลี่ยนแปลง DNS

ตรวจสอบการตั้งค่า DNS ด้วย NMCLI

หากคุณต้องการตรวจสอบว่า DNS NetworkManager ของคุณใช้คำสั่ง:

 nmcli dev show | grep DNS

จะแสดงรายการที่อยู่ DNS ที่ใช้งานอยู่ในปัจจุบัน สิ่งนี้มีประโยชน์เมื่อตรวจสอบว่าการตั้งค่า DNS จาก DHCP หรือที่อยู่คงที่ถูกนำไปใช้อย่างถูกต้อง

Flushing DNS ด้วย NSCD (ชื่อบริการแคช Daemon)

ในขณะที่มันเป็นเรื่องธรรมดาในระบบเดสก์ท็อป Linux ที่ทันสมัย​​NSCDยังคงใช้ในสภาพแวดล้อมขององค์กรและมรดก มันแคชชื่อคำขอบริการเพื่อเพิ่มความละเอียดสำหรับชื่อโฮสต์รหัสผ่านและวัตถุฐานข้อมูลอื่น ๆ ก่อนอื่นตรวจสอบให้แน่ใจว่าติดตั้งและทำงาน:

 sudo systemctl status nscd

หากใช้งานได้การล้างแคช DNS นั้นตรงไปตรงมา:

 sudo nscd -i hosts

คำสั่งนี้บอกให้ NSCD เป็นโมฆะ (-i) รายการแคชสำหรับชื่อโฮสต์ หากคุณต้องการล้างทุกอย่างไม่ใช่แค่รายการ DNS ให้ใช้:

 sudo nscd -I

ที่จะโหลดการกำหนดค่าทั้งหมดและข้อมูลแคชสำหรับฐานข้อมูลที่รองรับทั้งหมด

การกำหนดค่าและการตรวจสอบ NSCD

NSCD ได้รับการกำหนดค่าผ่าน /etc/nscd.conf คุณสามารถเปิดหรือปิดการแคชสำหรับประเภทข้อมูลต่างๆเช่น:

  • passwd
  • กลุ่ม
  • เจ้าภาพ

ไฟล์นั้นมีความสามารถดีทำให้เข้าถึงได้อย่างสมเหตุสมผล การตรวจสอบบันทึกผ่าน journalctl -u nscd ช่วยให้คุณจับตาดูพฤติกรรมของมันและระบุปัญหาที่อาจเกิดขึ้น

วิธีการพิจารณาว่าคุณใช้กลไกการแคชแบบใด

ไม่แน่ใจว่าระบบ Linux ของคุณอยู่ในระบบแคช DNS ใด นี่คือการตรวจสอบอย่างรวดเร็วบางอย่าง:

  • systemd-resolve --status ส่งคืนเอาต์พุตที่มีความหมายหรือไม่? ถ้าใช่ระบบของคุณน่าจะใช้ ระบบที่ได้รับการแก้ไข
  • nscd -g มีรายการตารางหรือไม่? คุณอาจใช้ NSCD
  • resolvectl ทำงานในระบบของคุณหรือไม่? นั่นเป็นคิวที่ดีสำหรับ การแก้ไขระบบ
  • ติดตั้ง dnsmasq หรือ BIND หรือไม่? ชี้ไปที่การตั้งค่าขั้นสูงที่ต้องใช้ขั้นตอนแยกต่างหาก

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

เหตุใดการล้าง DNS เป็นประจำจึงเป็นประโยชน์

ในขณะที่การแคช DNS ช่วยเพิ่มประสิทธิภาพ แต่ก็อาจเป็นปัญหาได้ นี่คือเหตุผลว่าทำไมและเมื่อใดที่คุณอาจต้องการล้าง:

  • หลังจากเปลี่ยนรายการ DNS:แคชที่ไม่ผ่านการล้างอาจชี้ไปที่เซิร์ฟเวอร์ IPS หรือ DNS เก่า
  • การแก้ไขปัญหาการเชื่อมต่อ:แคชที่เสียหายหรือเป็นพิษนำไปสู่การแก้ปัญหาที่ล้มเหลว
  • สถานการณ์การพัฒนายุค:เมื่อทำการทดสอบการโยกย้ายโดเมนหรือสลับระหว่างเซิร์ฟเวอร์การจัดเตรียมและการผลิต

การล้างแคช DNS เป็นประจำจะช่วยรักษาสุขภาพของระบบและหลีกเลี่ยงปัญหาการเข้าถึงไซต์ที่ไม่คาดคิดโดยเฉพาะอย่างยิ่งสำหรับผู้ใช้พลังงานผู้ดูแลระบบและนักพัฒนา

เคล็ดลับและเครื่องมือขั้นสูง

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

  • DNSMASQ:ทำหน้าที่เป็นผู้ส่งต่อ DNS ที่มีน้ำหนักเบาด้วยความสามารถในการแคช
  • ผูก (ชื่อ):เซิร์ฟเวอร์ DNS ระดับองค์กรพร้อมการแคชโซนที่ปรับได้และการหมดอายุที่กำหนดเอง
  • dig และ nslookup :เครื่องมือการดีบักเพื่อทดสอบเร็กคอร์ด DNS แบบเรียลไทม์
  • host :เรียบง่ายและตรงไปตรงมาสำหรับการสืบค้นบันทึก DNS โดยไม่ต้องหยุดแคช
ทำไมต้องเปลี่ยน keybinds ใน SurvivalCraft 2?

ความคิดสุดท้าย

การล้างแคช DNS ของคุณใน Linux เป็นงานที่ตรงไปตรงมา - เมื่อคุณรู้ว่าเครื่องมือหรือบริการใดที่จัดการความละเอียด DNS ในระบบของคุณ ไม่ว่าคุณจะใช้ ระบบที่ได้รับการแก้ไข,NetworkManagerหรือNSCDทำความเข้าใจว่าการดำเนินงานแต่ละอย่างจะทำให้คุณมีทักษะในการแก้ไขสถานการณ์การแก้ไขปัญหาที่เกี่ยวข้องกับ DNS ได้อย่างรวดเร็ว การรักษาแคช DNS ของคุณให้สะอาดไม่ได้เป็นเพียงแค่สุขอนามัยที่ดี - มันเป็นสิ่งจำเป็นสำหรับการแก้ไขชื่อโดเมนที่เชื่อถือได้และแม่นยำในภูมิทัศน์เครือข่ายแบบไดนามิกในปัจจุบัน