วิธีล้างแคช DNS ใน OS X Yosemite ด้วย Discoveryutil
สารบัญ:
- ล้าง DNS Cache ใน OS X Yosemite 10.10.4 & OS X 10.10.5
- การล้างแคช DNS ใน OS X Yosemite (10.10, 10.10.1, 10.10.2, 10.10.3)
ผู้ใช้ Mac บางรายอาจพบกับสถานการณ์ที่ต้องล้างแคช DNS ใน OS X เพื่อให้เนมเซิร์ฟเวอร์แก้ไขได้อย่างถูกต้อง หรือเพื่อให้คอมพิวเตอร์แต่ละเครื่องสังเกตเห็นการเปลี่ยนแปลงที่อยู่ DNS สิ่งนี้มีความเกี่ยวข้องอย่างยิ่งสำหรับผู้ดูแลระบบ ผู้ดูแลระบบเครือข่าย และนักพัฒนาเว็บ แต่มีบางสถานการณ์ที่ผู้ใช้รายอื่นอาจจำเป็นต้องถ่ายโอนข้อมูลและรีเซ็ตแคช DNS ด้วยเช่นกัน เช่น หากผู้ใช้แก้ไขไฟล์ /etc/hosts และต้องการการเปลี่ยนแปลง เพื่อให้มีผลโดยไม่ต้องรีบูตเครื่อง Mac
ผู้ใช้ Mac ที่ใช้งานมานานจะรู้ว่าการรีเซ็ตแคช DNS มีการเปลี่ยนแปลงใน Mac OS X เกือบทุกเวอร์ชัน และ OS X Yosemite ก็ไม่ต่างกัน อาจเป็นเพราะการค้นพบแทนที่ mDNSResponder แล้วเปลี่ยนกลับเป็น mDNSResponder อีกครั้ง อย่างไรก็ตาม การล้างแคช DNS ใน Yosemite ยังคงเป็นคำสั่งเทอร์มินัล แต่จะแตกต่างกันเล็กน้อยขึ้นอยู่กับรุ่นที่คุณใช้ระบบปฏิบัติการ และจริง ๆ แล้วอนุญาตให้คุณล้าง Multicast DNS หรือ Unicast DNS หรือทั้งสองอย่าง คุณอาจต้องการล้างทั้งสองอย่างเพื่อการวัดผลที่ดี หากคุณพยายามรีเซ็ตแคช DNS ทั้งหมดใน Mac
ล้าง DNS Cache ใน OS X Yosemite 10.10.4 & OS X 10.10.5
ตั้งแต่ OS X 10.10.4 ไปจนถึง 10.10.5 รวมถึง 10.11 Apple ได้ละทิ้ง Discoveryd และแทนที่แล้ว (หรือเปลี่ยนกลับเป็น) mDNSResponder ดังนั้น ในการล้างแคช DNS ใน OS X Yosemite 10.10.4 และ 10.11 El Capitan และน่าจะเป็นต้นไป สตริงคำสั่งจะเป็นดังนี้:
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;บอกว่า cache flushed
คำสั่งนั้นล้างแคช DNS ทั้งหมดสำหรับ OS X 10.10.4+
ผู้ใช้ Mac ที่ใช้งานมานานอาจจำได้ว่าสตริงคำสั่งนั้นเป็นสิ่งที่ทำงานในรุ่นก่อนหน้า Yosemite จากที่กล่าวมา OS X Yosemite เวอร์ชันก่อนหน้าก่อน 10.10.4 จะใช้สตริงคำสั่งอื่นที่กล่าวถึงด้านล่าง
การล้างแคช DNS ใน OS X Yosemite (10.10, 10.10.1, 10.10.2, 10.10.3)
คุณจะต้องใช้ Terminal เพื่อรีเซ็ตแคช คุณสามารถค้นหาแอป Terminal ใน /Applications/Utilities/ หรือเปิดใช้งานด้วย Spotlight หากต้องการล้างแคช DNS ทั้งหมดใน OS X เวอร์ชันล่าสุด ให้กำหนดเป้าหมายทั้ง MDNS (Multicast DNS) และ UDNS (Unicast DNS) ด้วยสองคำสั่งที่แตกต่างกัน
ล้างแคช MDNS
sudo Discoveryutil mdnsflushcache
กดย้อนกลับและป้อนรหัสผ่านผู้ดูแลระบบเมื่อมีการร้องขอ
ล้างแคช UDNS
sudo Discoveryutil udnsflushcaches
อีกครั้ง กด return และป้อนรหัสผ่านผู้ดูแลระบบเมื่อมีการร้องขอ โปรดทราบว่า caches เป็นพหูพจน์ของคำสั่งหลัง ซึ่งเป็นความแตกต่างทางไวยากรณ์เล็กน้อยแต่มีความสำคัญ
ล้างและรีเซ็ตแคช DNS ทั้งหมดใน OS X Yosemite
คุณยังสามารถรวมสองคำสั่งข้างต้นเข้าด้วยกันได้หากต้องการ ต่อไปนี้จะประกาศด้วยวาจาเมื่อล้างแคชแล้ว:
sudo Discoveryutil mdnsflushcache;sudo Discoveryutil udnsflushcaches;Say flushed
แท้จริงแล้วแคช MDNS และ UDNS นั้นแตกต่างกัน แต่ฉันพบว่าสำหรับแคช DNS ที่ใช้งานได้จริงในการล้างข้อมูลจริงใน OS X Yosemite จำเป็นต้องใช้ทั้งสองคำสั่ง เป็นไปได้โดยสิ้นเชิงที่คุณจะต้องเคลียร์อย่างใดอย่างหนึ่งตามความต้องการของคุณเอง
สำหรับผู้ที่สงสัย OS X Yosemite เลิกใช้ mDNSResponder แล้ว ดังนั้นจึงไม่จำเป็นต้องฆ่ากระบวนการ mDNSResponder นั้นเพื่อรีเฟรชแคช DNS เหมือนใน Mac OS X เวอร์ชันก่อนหน้า
กำลังตรวจสอบรายละเอียดแคช DNS ใน OS X Yosemite
หากคุณกำลังเปลี่ยนหรือกำลังจะเปลี่ยน DNS และต้องการดูรายละเอียดบางอย่างเกี่ยวกับสิ่งที่แคชอยู่ในปัจจุบัน คุณสามารถใช้คำสั่งต่อไปนี้:
รับสถิติแคช UDNS:
sudo Discoveryutil udnscachestats
คุณยังสามารถเรียกข้อมูลเฉพาะเกี่ยวกับแคช DNS แบบหลายผู้รับได้ด้วยสิ่งต่อไปนี้:
sudo Discoveryutil mdnscachestats
ทั้งสองอย่างนี้จะให้รายละเอียดเกี่ยวกับจำนวนรายการ DNS ที่ถูกแคช โดยเสนอรายงานที่ควรมีลักษณะดังนี้:
UDNS Cache Stats: Cached 962 of 1750
หากคุณเรียกใช้คำสั่งเหล่านั้นก่อนและหลังเรียกใช้รูปแบบ flushcache คุณจะพบว่าควรรีเซ็ตเป็น 0 รายการแคช เช่น:
MDNS Cache Stats: lo0: Cached 0 of 2000
รู้ได้ไงว่าเปลี่ยน
หลังจากที่คุณล้างแคชแล้ว หากคุณต้องการตรวจสอบว่าเนมเซิร์ฟเวอร์หรือ IP มีการเปลี่ยนแปลงจริงหรือไม่ คุณสามารถใช้คำสั่ง 'dig' กับ URL ดังนี้:
dig osxdaily.com
dig คล้ายกับ nslookup ยกเว้นว่ามันมีเอาต์พุตที่ดีกว่าและรวมรายละเอียดเพิ่มเติมเล็กน้อย รวมเวลาสืบค้น ชุดเซิร์ฟเวอร์ DNS ที่ใช้ในการเข้าถึงโดเมน และการประทับเวลา ซึ่งทั้งหมดนี้สามารถเป็นได้ มีค่าเมื่อแก้ไขปัญหาเนมเซิร์ฟเวอร์ ยังไงก็ตาม หากเวลาค้นหาสำหรับสิ่งนี้แสดงว่าช้า คุณควรใช้เครื่องมือเช่น namebench เพื่อค้นหาเซิร์ฟเวอร์ DNS ที่เร็วกว่าสำหรับคุณ ซึ่งมักจะเป็น Google DNS หรือ OpenDNS
ทราบเคล็ดลับแคช DNS อื่นสำหรับ OS X เวอร์ชันล่าสุดหรือไม่ แจ้งให้เราทราบในความคิดเห็น.