วิธีล้างแคช DNS ใน OS X Yosemite ด้วย Discoveryutil

สารบัญ:

Anonim

ผู้ใช้ 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 เวอร์ชันล่าสุดหรือไม่ แจ้งให้เราทราบในความคิดเห็น.

วิธีล้างแคช DNS ใน OS X Yosemite ด้วย Discoveryutil