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 โดยไม่ต้องหยุดแคช

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