ก่อนอื่นถ้าnetworksetup -getdnsservers <service name>
ไม่แสดงอะไรเลยคุณไม่มีรายการใด ๆ ในการตั้งค่าระบบ> Netowrk ภายใต้ "DNS Servers:"
ประการที่สองเป็นสิ่งสำคัญที่จะต้องทราบว่า OS X ไม่ได้จัดการ DNS เหมือนกับระบบส่วนใหญ่ ต่อhttps://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/resolver.5.html เป็นหลักซึ่งหมายความว่า OS X มีไคลเอ็นต์ DNS หลายตัวขึ้นอยู่กับการกำหนดค่าของคุณ ผลลัพธ์ของบริการที่หลากหลายเหล่านี้หมายความว่ามีสถานการณ์ที่การใช้ Safari ในการเข้าถึงเว็บไซต์ ( http://www.example.com ) จะนำคุณไปยังที่อยู่ IP ที่ OS X ได้รับจาก DNS (เช่น 1.2.3.4) ในขณะที่ ในเวลาเดียวกันการขุด
$ dig www.example.com
จะให้ผลลัพธ์ที่แตกต่าง (อาจ 2.3.4.5)
เหตุผลนี้อยู่ในแนวทางที่ OS X จัดการ DNS
หากคุณเรียกใช้$ man dig
คุณได้รับเหนือสิ่งอื่นใดต่อไปนี้:
ประกาศของ Mac OS X คำสั่ง dig ไม่ใช้ชื่อโฮสต์และการแก้ไขที่อยู่หรือกลไกการกำหนดเส้นทางการสืบค้น DNS ที่ใช้โดยกระบวนการอื่นที่ทำงานบน Mac OS X ผลลัพธ์ของการสอบถามชื่อหรือที่อยู่ที่พิมพ์โดยขุดอาจแตกต่างจากกระบวนการอื่น ๆ ที่ใช้เนทิฟเนทิฟของ Mac OS X และกลไกการแก้ไขที่อยู่ ผลลัพธ์ของการสืบค้น DNS อาจแตกต่างจากแบบสอบถามที่ใช้ไลบรารีการกำหนดเส้นทาง Mac OS X DNS
ก็$man nslookup
จะคืนสิ่งที่คล้ายกัน
ประกาศของ Mac OS X คำสั่ง nslookup ไม่ได้ใช้ชื่อโฮสต์และการแก้ไขที่อยู่หรือกลไกการกำหนดเส้นทางการสืบค้น DNS ที่ใช้โดยกระบวนการอื่นที่ทำงานบน Mac OS X ผลลัพธ์ของการสอบถามชื่อหรือที่อยู่ที่พิมพ์โดย nslookup อาจแตกต่างจากกระบวนการอื่น ๆ ที่ใช้เนทิฟเนทิฟของ Mac OS X และกลไกการแก้ไขที่อยู่ ผลลัพธ์ของการสืบค้น DNS อาจแตกต่างจากแบบสอบถามที่ใช้ไลบรารีการกำหนดเส้นทาง Mac OS X DNS
ทั้งหมดนี้เป็นวิธีที่ค่อนข้างยาวในการพูดวิธีที่ดีที่สุดในการดูว่าเซิร์ฟเวอร์ DNS ใดกำลังใช้อยู่คือดูการตั้งค่าระบบ> เครือข่าย
โดยปกติแล้วจะมี "DNS Server:" เข้ามาและ "ค้นหาโดเมน:" จะช่วยให้คุณค้นหาที่อยู่ที่ไม่สมบูรณ์
หาก "เซิร์ฟเวอร์ DNS:" ไม่มีอยู่ OS X จะพยายามใช้ที่อยู่ใน "เราเตอร์:" สำหรับ DNS
และเหนือสิ่งอื่นใดคือความสนุกมีสาธารณูปโภคและกระบวนการอื่น ๆ ที่อาจไม่ได้ใช้ไลบรารีการกำหนดเส้นทาง OS X DNS และพวกเขาจะกดปุ่มเนื้อหาของ /etc/resolv.conf โดยตรง
คำตอบสั้น ๆ คือ:
- หากคุณไปตามเนื้อหาของการตั้งค่าระบบ> เครือข่ายคุณกำลังดูสิ่งเดียวกันกับที่กระบวนการส่วนใหญ่ใช้
- เนื้อหาของการตั้งค่าระบบ> เครือข่ายควรเติม /etc/resolv.conf แต่ไม่เสมอไป
- กระบวนการอื่น ๆ (เช่น dig และ nslookup) กำลังเข้าถึง /etc/resolv.conf โดยตรง
และเหนือสิ่งอื่นใดทั้งหมด - หากคุณไม่ได้ใช้ไคลเอนต์ VPN ที่ติดตั้งไว้ใน OS X เป็นไปได้ว่ามีการใช้เส้นทางและเซิร์ฟเวอร์ DNS เพิ่มเติมซึ่งnetworksetup -getdnsservers <service name>
จะไม่แสดง ไคลเอนต์ VPN ของคุณอาจมีความสามารถในการแสดงเส้นทางและเซิร์ฟเวอร์ DNS ฉันรู้ว่าของฉันทำ
ฉันรู้ว่าสิ่งนี้ไม่ได้ตอบคำถามของคุณอย่างแม่นยำ แต่หวังว่านี่จะช่วยให้คุณรู้ว่าการ "ความจริง" เกี่ยวกับ DNS บน Mac นั้นไม่ใช่เรื่องง่ายเสมอไป โดยทั่วไปแล้วคุณจะปลอดภัยถ้าสมมติว่าเนื้อหาของการตั้งค่าระบบ> เครือข่ายหรือเนื้อหาของnetworksetup -getdnsservers <service name>
ที่คุณจะได้รับ DNS จาก อย่างไรก็ตามหากสิ่งต่าง ๆ ดูประหลาดโปรดจำไว้ว่ามีความเป็นไปได้อื่น ๆ ด้วย ใช้ขุดเพื่อช่วยตรวจสอบว่ามีความแตกต่างที่เคลื่อนไหว
ที่ผ่านมาเพื่อให้ผู้อ่านผู้ที่สงสัยว่าจะได้รับ<service name>
ในการnetworksetup -getdnsservers <service name>
ลองใช้networksetup -listallnetworkservices
บิล