ฉันต้องการแสดงเซิร์ฟเวอร์ DNS ที่ใช้โดยการตั้งค่าเครือข่ายปัจจุบันใน OS X จากบรรทัดคำสั่ง
ฉันต้องการแสดงเซิร์ฟเวอร์ DNS ที่ใช้โดยการตั้งค่าเครือข่ายปัจจุบันใน OS X จากบรรทัดคำสั่ง
คำตอบ:
มีหลายวิธี - ต่อไปนี้เป็นสองวิธี:
cat /etc/resolv.conf
-หรือ-
scutil --dns
dig
หรือnslookup
ไม่จำเป็นต้องให้ภาพที่สมจริงว่าแอพพลิเคชั่น macOS สามารถแก้ไขชื่อโดเมนจากระบบโลคัลได้อย่างไรโดยเฉพาะอย่างยิ่งเมื่อมีการกำหนดค่า DNS หลายโดเมน (เฉพาะโดเมน) เช่นเมื่อใช้ไคลเอนต์ VPN สำหรับหลาย ๆ การเชื่อมต่อพร้อมกัน แทนที่จะใช้nslookup
หรือdig
ใช้dscacheutil -q host -a name somehostname.com
เพื่อทดสอบการแก้ปัญหา DNS โดยคำนึงถึงเซิร์ฟเวอร์ DNS ที่กำหนดค่าทั้งหมดรวมถึงลำดับความสำคัญ
cat /etc/resolv.conf
ดูเหมือนจะไม่ใช่โซลูชันที่ "น่าเชื่อถือ" อีกต่อไป นี่คือการแจ้งเตือนที่ฉันได้รับใน macOS High Sierra เมื่อใช้งาน: (ขออภัยสำหรับการจัดรูปแบบ - ความคิดเห็นไม่รองรับการแบ่งบรรทัดอย่างง่าย) # macOS ประกาศ # # ไฟล์นี้ไม่ได้รับการพิจารณาสำหรับการแก้ไขชื่อโฮสต์ DNS, ความละเอียด # ที่อยู่หรือ กลไกการกำหนดเส้นทางการสืบค้น DNS ใช้โดย # กระบวนการส่วนใหญ่ในระบบนี้ # # ในการดูการกำหนดค่า DNS ที่ใช้โดยระบบนี้ให้ใช้: # scutil --dns
scutil --dns | grep nameserver
ที่จะเพียงแค่ได้รับเซิร์ฟเวอร์ DNS
คำสั่ง shell ต่อไปนี้มีประโยชน์ในการแสดงรายการ DNS ปัจจุบัน:
grep nameserver <(scutil --dns)
หากต้องการกรองออกสำหรับสคริปต์คุณสามารถไพพ์เอาต์พุตawk '{print $3}'
หรือgrep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"
คำสั่ง
scutil --dns | grep nameserver
ถูกต้อง (มีเพียงไวยากรณ์ที่แตกต่างกัน)
networksetup -getdnsservers
ไม่ได้กับเซิร์ฟเวอร์ DNS ที่กำหนด DHCPscutil
ฉันมักจะลืมเกี่ยวกับ 'sc' หมายถึงการกำหนดค่าระบบ? ไม่แน่ใจว่าจะกำหนดค่าระบบมาก ...