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

ผู้ใช้ Mac บางรายอาจพบกับสถานการณ์ที่ต้องล้างแคช DNS ใน OS X สำหรับเซิร์ฟเวอร์ชื่อเพื่อแก้ไขอย่างถูกต้องหรือสำหรับการเปลี่ยนแปลงที่อยู่ DNS บางอย่างเพื่อสังเกตเห็นโดยคอมพิวเตอร์แต่ละเครื่อง สิ่งนี้มีความเกี่ยวข้องกับผู้ดูแลระบบผู้ดูแลระบบเครือข่ายและนักพัฒนาเว็บ แต่มีสถานการณ์ที่ผู้ใช้รายอื่น ๆ จำเป็นต้องถ่ายโอนข้อมูลและรีเซ็ตแคช DNS ด้วยเช่นถ้าผู้ใช้แก้ไขไฟล์ / etc / hosts และต้องมีการเปลี่ยนแปลง จะมีผลโดยไม่ต้องรีบู๊ตเครื่อง Mac

ผู้ใช้ Mac ระยะยาวจะรู้ว่าการรีเซ็ตแคช DNS มีการเปลี่ยนแปลงในเกือบทุกเวอร์ชันของ Mac OS X และ OS X Yosemite ไม่แตกต่างกันเนื่องจากมีการค้นพบว่าแทนที่ mDNSResponder แล้วเปลี่ยนกลับไปเป็น mDNSResponder อีกครั้ง โดยไม่คำนึงถึงการล้างแคช DNS ใน Yosemite จะยังคงเป็นคำสั่ง terminal แต่แตกต่างเล็กน้อยขึ้นอยู่กับรุ่นที่แน่นอนที่คุณใช้ในระบบปฏิบัติการและจะช่วยให้คุณสามารถล้างทั้ง DNS แบบหลายผู้รับหรือ DNS แบบ Unicast หรือทั้งสองอย่างได้ คุณอาจต้องการล้างทั้งมาตรการที่ดีหากคุณกำลังพยายามรีเซ็ตแคช DNS ทั้งหมดใน Mac

ล้างแคช DNS ใน OS X Yosemite 10.10.4 และ OS X 10.10.5

จาก OS X 10.10.4 ซึ่งเคลื่อนที่ไปข้างหน้าจนถึง 10.10.5 รวมถึง 10.11 แอ็ปเปิ้ลได้ยกเลิกการค้นพบแล้วและแทนที่มัน (หรือย้อนกลับไปหา) mDNSResponder ดังนั้นเพื่อล้างแคช DNS ใน OS X Yosemite 10.10.4 และ 10.11 El Capitan และสันนิษฐานว่าเป็นต้นไปสตริงคำสั่งมีดังนี้:

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say 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 Cache

sudo discoveryutil mdnsflushcache

ตีกลับและป้อนรหัสผ่านผู้ดูแลระบบเมื่อได้รับการร้องขอ

ล้าง UDNS Cache

sudo discoveryutil udnsflushcaches

กด return อีกครั้งและป้อนรหัสผ่านผู้ดูแลระบบเมื่อได้รับการร้องขอ โปรดทราบว่าแคชเป็นพหูพจน์กับคำสั่งหลังซึ่งเป็นความแตกต่างของไวยากรณ์ที่บอบบาง แต่มีความสำคัญ

ล้างข้อมูลและรีเซ็ต DNS Caches ทั้งหมดใน 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 cache:

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 มีการเปลี่ยนแปลงจริงหรือไม่คุณสามารถใช้คำสั่ง 'ขุด' ด้วย URL แบบนี้ได้:

dig osxdaily.com

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

ทราบเคล็ดลับ cache DNS อื่นสำหรับ OS X รุ่นล่าสุดหรือไม่? แจ้งให้เราทราบในความคิดเห็น.