การค้นหา DNS กำหนดค่าสำหรับ OSX Mountain Lion อย่างไร


33

ถ้าฉัน cat resolv.conf ของฉันฉันเห็นข้อความนี้:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

ฉันกำลังพยายามเพิ่มรายการ DNS ฉันแก้ไขไฟล์โฮสต์ของฉันและล้างแคช DNS host servernameแต่ชื่อไม่ได้แก้ไขปัญหาหากฉันใช้ ฉันคิดว่าอาจhostไม่ได้กำหนดค่าให้ดูhostsไฟล์ ฉันจะได้รับรายการใหม่ของฉันเพื่อแก้ไขและ OSX ใช้resolv.confอะไรถ้าไม่?

คำตอบ:


17

เครื่องมือโฮสต์ไม่เพียง แต่แก้ไขชื่อ (เช่นเดียวกับการใช้ตัวแก้ไขชื่อระบบ) แต่จริง ๆ แล้วสอบถามเซิร์ฟเวอร์ dns (ในขณะที่ส่งแพ็กเก็ตไปยัง udp / 53 และอาจเป็น tcp / 53): ไม่รู้จักหรือใช้hostsไฟล์โลคัล.

หากคุณต้องการทดสอบตัวแก้ไขของระบบปฏิบัติการ (ในฟังก์ชั่น, gethostbyname () และฟังก์ชั่น libc ที่คล้ายกัน) คุณสามารถลอง ping ชื่อที่คุณเพิ่มเข้าไป/etc/hostsและมันจะเคารพสิ่งที่คุณใส่ในไฟล์นั้น

นอกจากนี้เมื่อคุณพบการค้นหา DNS บน Mac OSX แล้วไม่ได้ใช้/etc/resolv.confและวิธีที่ถูกต้องในการกำหนดค่าเซิร์ฟเวอร์ DNS ใดที่ถูกสอบถามอยู่ในเครื่องมือการตั้งค่าเครือข่าย gui และ / หรือnetworksetupเครื่องมือบรรทัดคำสั่ง ฉันไม่ทราบแน่ชัดว่าคุณสามารถกำหนดลำดับที่จะลองใช้แหล่งที่มาได้หรือไม่ แต่พฤติกรรมมาตรฐานคือการลอง/etc/hostsก่อนและเซิร์ฟเวอร์ dns หลังจากนั้น


1
ฉันพบเสื้อคลุมสำหรับ peradd สำหรับ getaddrinfo: search.cpan.org/~pevans/Socket-GetAddrInfo-0.22
Ben Flynn

26

ตัวแก้ไข DNS สามารถเพิ่มใน OS X ผ่านnetworksetupคำสั่ง:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

ใส่ชื่อของการเชื่อมต่อเครือข่ายตามความเหมาะสม ตัวแก้ไขเหล่านี้จะปรากฏใน resolv.conf ตามที่สร้างขึ้นโดยอัตโนมัติ แต่การแก้ไขโดยตรงไปที่ resolv.conf จะไม่ส่งผลให้ตัวแก้ไขเหล่านั้นถูกใช้งาน ฉันถือว่าตัวแก้ไขถูกเก็บไว้ในที่ใดที่หนึ่ง ฉันจะค้นหาและรายงานกลับ

แก้ไขเพิ่ม: ดูเหมือนว่าไฟล์ XML plist เก็บเซิร์ฟเวอร์ DNS /Library/Preferences/SystemConfiguration/preferences.plistเป็น

ไฟล์โฮสต์ใน / private / etc / hosts ควรทำงานเพื่อบังคับให้มีการแก้ไขชื่อเฉพาะ (/ etc เป็น symlink ไปยัง / private / etc) คุณสามารถตรวจสอบไวยากรณ์และแก้ไขไฟล์ที่ถูกต้องได้ไหม?


ดังนั้นฉันสามารถใช้คำสั่งนี้เพื่อเพิ่มไฟล์โฮสต์?
Ben Flynn

คุณทำไม่ได้และไม่จำเป็นต้อง
Luke404

ไม่หากคุณต้องการเพิ่มชื่อให้กับไฟล์โฮสต์ให้เพิ่มชื่อโดยตรง ไฟล์โฮสต์ถูกตรวจสอบก่อนเมื่อแก้ไขชื่อแล้วตามด้วยแคชความละเอียดภายในจากนั้นจึงกำหนดค่าเซิร์ฟเวอร์ DNS ของคุณ การใช้คำสั่ง "host" เพื่อทดสอบแม้ว่าจะไม่ตรวจสอบไฟล์โฮสต์ในเครื่อง วิธีง่าย ๆ ในการทดสอบคือใช้ยูทิลิตี้เครือข่ายเช่น ping
phoebus

1
บางครั้งอินเทอร์เฟซรับชื่อโง่ ๆ เพื่อให้ได้ชื่อที่แน่นอนที่คุณต้องการคุณสามารถทำได้networksetup -listallnetworkservices นอกจากนี้หากมีช่องว่างคุณจำเป็นต้องอ้างชื่อทั้งหมดทั้งชื่อเช่นsudo networksetup -setdnsservers 'white space' 8.8.8.8 8.8.4.4
Marcin

2
เป็นไปได้หรือไม่ที่จะกำหนดค่าตัวแก้ไขให้ใช้พอร์ตอื่นที่ไม่ใช่ 53?
Rune FS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.