การค้นหาชื่อ DNS (เป็น SSH) ไม่ทำงานหลังจากการอัพเกรด Snow Leopard


14

ฉันคิดว่าสิ่งนี้เริ่มต้นด้วยการอัพเดต Snow Leopard ล้างออกไดเรกทอรี. ssh ยังคงมีปัญหา

~: uname -a
ดาร์วิน california-example-com.local 10.0.0 รุ่นเคอร์เนลดาร์วิน 10.0.0: ศุกร์ 31 ก.ค. 22:47:34 PDT 2009; root: xnu-1456.1.25 ~ 1 / RELEASE_I386 i386

~: ssh -V
OpenSSH_5.2p1, OpenSSL 0.9.8k 25 มีนาคม 2552

~: ls -l ~ / .ssh

~: nslookup nevada
เซิร์ฟเวอร์: 10.94.62.3
ที่อยู่: 10.94.62.3 # 53

ชื่อ: nevada.example.com
ที่อยู่: 10.94.62.3

~: ssh nevada
ssh: ไม่สามารถแก้ไขชื่อโฮสต์เนวาด้า: ชื่อโหนดหรือชื่อเซิร์ฟเวอร์ที่ให้ไว้หรือไม่ทราบ

คุณสามารถ ssh ไปที่ (a) nevada.example.com และ (b) 10.94.62.3 ได้ไหม?
สเวน

2
คุณสามารถ ping nevada ได้ไหม "ssh -v nevada" แสดงอะไร
markdrayton

คำถามที่แปลก; คุณใช้ Split DNS และ / หรือสามารถ ping nevada ได้หรือไม่
Chealion

ขอบคุณสำหรับการติดตาม ... คำตอบ: ssh nevada.example.com = ไม่ใช่ ssh 10.94.62.3 = ใช่ (และต้องยืนยันรหัสโฮสต์เพราะฉันได้ล้างโฮสต์ที่รู้จัก) ping nevada = ปัญหาการแก้ไขชื่อ telnet nevada (tho มันไม่เรียกใช้ telnetd) = ปัญหาการระบุชื่อ Split DNS = ไม่ได้ตั้งใจไม่รู้ว่า :-) จากบานหน้าต่างการตั้งค่าเครือข่าย OS X ฉันมี 10.94.62.3 เป็นเซิร์ฟเวอร์ DNS ที่ระบุไว้ก่อนหน้าทั้งสอง โดย ISP ของฉันและ example.com ในรายการโดเมนการค้นหา ระบบอื่น ๆ ในเครือข่ายของฉันสามารถใช้ DNS ตามปกติเพื่อ ssh ถึง nevada (และอื่น ๆ )
Peter Cardona

ขอโทษเกี่ยวกับการขาดของเส้นแบ่งในความคิดเห็นข้างต้น ...
ปีเตอร์คาร์โดนา

คำตอบ:


16

ฉันพบปัญหาเดียวกันและพบว่ามีหัวข้อเกี่ยวกับMac mini ที่มีปัญหา DNSในการสนทนาของ Apple มีประโยชน์อย่างยิ่ง

ประเด็นสำคัญของปัญหา: mDNSResponder ดูเหมือนจะเปลี่ยนลำดับของเซิร์ฟเวอร์ DNS เป็นครั้งคราวและหากมีการสอบถามเซิร์ฟเวอร์ DNS ของ ISP ของคุณก่อนจะไม่ได้รับการบันทึกที่เหมาะสม (หรือหากคุณใช้ DNS แยกคุณจะได้รับ IP สาธารณะของคุณ)

การแก้ไขที่ดีที่สุดสำหรับเรื่องนี้คือเพื่อให้แน่ใจว่า (เช่นเดียวกับคุณ) ว่ามีเพียงเซิร์ฟเวอร์ DNS ที่จำเป็นเท่านั้นที่แสดงอยู่ในการตั้งค่า DNS ของคุณ สิ่งนี้อาจต้องการการลบเซิร์ฟเวอร์ ISP DNS ออกจาก DHCP ของคุณ (ตามที่ฉันต้องทำเช่นกัน - คำขอทั้งหมดจะถูกส่งต่อผ่านเซิร์ฟเวอร์ DNS ภายในเครื่องอยู่ดี)

เหตุผลที่ยูทิลิตี้ชอบdigและnslookupจะประสบความสำเร็จตามปกติคือพวกเขากำลังใช้ BIND และ/etc/resolv.confไม่เหมือนกับส่วนที่เหลือของระบบปฏิบัติการโดยตรง

สำหรับการอ้างอิงในเสือดาวหิมะแคช DNS จะถูกเก็บไว้ในขณะนี้โดย mDNSResponder sudo killall -HUP mDNSResponderและเพื่อที่จะล้างมันที่คุณจำเป็นต้องเริ่มต้นกระบวนการโดยใช้ คุณสามารถรับข้อมูลเพิ่มเติม (การบันทึกการดัมพ์สถานะภายใน ฯลฯ ) โดยใช้แฟล็กต่าง ๆ กับkillallคำสั่ง

"sudo killall -USR1 mDNSResponder" to enable operation logging.
"sudo killall -USR2 mDNSResponder" to enable packet logging.
"sudo killall -HUP mDNSResponder" to clear the DNS cache.
"sudo killall -INFO mDNSResponder" to dump mDNSRepsonder's internal state.

ที่มา: Snoop Doggในเธรดเดียวกันนั้น


ขอบคุณ googling ทำให้ฉันมาที่นี่สิ่งนี้ได้รับการแก้ไข "arp" รายงานว่า IP ไม่ถูกต้องขุดรายงานว่า "ip" ถูกต้อง ไม่มีการล้างจำนวน dns ที่แก้ไขก่อนที่ฉันจะลอง ฉันทราบว่าฉันต้องดำเนินการ dscacheutil -flushcache เช่นกัน ฉันยังชี้ให้เห็นว่าเราเตอร์ท้องถิ่นสามารถทำตัวแปลก ๆ ได้และ ISP ก็ไม่ได้เล่นอย่างยุติธรรมในแง่ของ TTL ในบางครั้ง
Aitch

9

เรามีปัญหาเช่นนี้:

host example.com     <<< WORKED
ping example.com     <<< FAILED

แก้ไขด้วยสิ่งนี้:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

แอปพลิเคชันบน Mac OS X ไม่ใช้กลไกเดียวกันสำหรับ DNS เป็น "host / dig / nslookup"

การใช้ "host / dig / nslookup" มีประโยชน์สำหรับการพิจารณาว่าไม่ใช่ปัญหาเครือข่าย มันเป็นปัญหาของระบบภายในที่แก้ไขด้วยคำสั่งข้างต้น


ว้าวมันใช้งานได้ !!! ฉันกำลังมองหาวิธีแก้ปัญหาทุกที่ !!!! ฉันเพิ่งจะฟอร์แมตและกู้คืนแล็ปท็อปของคุณคุณประหยัดเวลาได้มาก! ขอบคุณ! ขอโทษด้วย แต่ฉันไม่สามารถ upvote :-( หมายเหตุ: DNS ของฉันหยุดทำงานหลังจากที่ฉันใช้ Util OnyX ไม่รู้ว่าทำไมฉันสามารถใช้ dig / nslookup ได้ แต่ไม่มีอะไรอื่นเลย

2

ฉันเคยประสบปัญหาเดียวกัน ... และในขณะที่การรีสตาร์ท mDNSR การตอบกลับดูเหมือนจะ "ทำงาน" การรีสตาร์ทสองครั้งทุก ๆ ชั่วโมงประเภทของ sucks

ดังนั้นสำหรับตอนนี้ฉัน "แก้ไข" ปัญหาโดยใช้dnsmasqในพื้นที่ ในการทำเช่นนั้น:

  • สร้าง dnsmasq (ดาวน์โหลด tgz และmakeหรือbrew install dnsmasq)
  • ใส่ไว้ในdnsmasq.confไฟล์:
resolv-file = resolv.conf
ผู้ใช้ = ไม่มีใคร
กลุ่ม = ไม่มีใคร
อินเตอร์เฟซ = lo0
แคชขนาด = 1024
  • วางสิ่งนี้ลงในresolv.confไฟล์ที่อยู่ในไดเรกทอรีเดียวกับdnsmasq.confไฟล์ (nb: not /etc/resolv.conf ):
nameserver 8.8.8.8
เนมเซิร์ฟเวอร์ 4.2.2.1
เนมเซิร์ฟเวอร์ 4.2.2.2
  • เรียกใช้ด้วยdnsmasq sudo dnsmasq --no-daemon --log-queries -C dnsmasq.confผลลัพธ์ควรมีลักษณะดังนี้:
...
dnsmasq: อ่าน resolv.conf
dnsmasq: ใช้ nameserver 4.2.2.1 # 53
dnsmasq: ใช้ nameserver 4.2.2.2 # 53
dnsmasq: ใช้ nameserver 8.8.8.8 # 53
dnsmasq: read / etc / hosts - 6 ที่อยู่
  • เปิดการตั้งค่าเครือข่ายและตรวจสอบให้แน่ใจว่า127.0.0.1เป็นเซิร์ฟเวอร์ DNS เดียว (ค่ากำหนดเครือข่าย -> ขั้นสูง -> DNS -> เพิ่ม 127.0.0.1)

สิ่งต่าง ๆ ควรเริ่มทำงานได้เป็นอย่างดีอีกครั้ง

เมื่อสิ่งที่กำลังทำงานคุณสามารถทำงานได้dnsmasqโดยไม่ต้อง--no-daemonและ--log-queriesตัวเลือกจึงจะเริ่มต้นในพื้นหลังและคุณไม่จำเป็นต้องให้เปิดหน้าต่างเทอร์มิ


1

ฉันสังเกตเห็นว่าฉันมี 10.94.62.3 ในรายการเซิร์ฟเวอร์ DNS (บานหน้าต่างการตั้งค่าเครือข่าย) ตามด้วย 2 จาก ISP ของฉัน ฉันลบอีก 2 รายการบังคับให้ค้นหาชื่อทั้งหมดถึง 10.94.62.3 สำหรับตำแหน่งนี้และตอนนี้ฉันสามารถแก้ไขชื่อในเครือข่ายของฉันและภายนอกได้

ไม่รู้เลยว่าทำไมมันถึงใช้ได้


1

ฉันเดาว่าเรามีปัญหาที่คล้ายกันดังที่ฉันอธิบายไว้ที่นี่: /apple/50457/nslookup-works-ping-and-ssh-dont-os-x-lion-10-7-3

ฉันเชื่อว่าปัญหาอยู่ภายในการกำหนดค่า searchdomains: ping / ssh พยายามใช้gethostbyname2()ซึ่งล้มเหลวเนื่องจากชื่อไม่ทำงานอีกต่อไป (ใน Lion อย่างน้อย) และ/etc/resolv.confด้วย searchdomains ที่กำหนดค่าจึงไม่สนใจ /etc/hostsเป็นรีสอร์ทสุดท้ายสำหรับgethostbyname2()จึง SSH /etc/hostsทำงานอีกครั้งกับรายการที่เหมาะสมในการ ควรได้รับการแก้ไขโดย Apple imho


0

คุณลอง nevada-example-com.local แล้วหรือยัง


ยังไม่ได้ลอง แต่ได้รับความละเอียดเดียวกัน การเริ่มต้นดูเหมือนไม่มีอะไร (ssh, telnet, ping, http) จะแก้ไขผ่านเซิร์ฟเวอร์ที่ nslookup กำหนดค่าเริ่มต้นไว้ นั่นเป็นอย่างไร อาจมีข้อขัดแย้งระหว่างการตั้งค่าระดับ OS X และไฟล์ / etc / บางไฟล์ที่การใช้ BSD พื้นฐานสนใจ?
Peter Cardona

ไม่ OS X ไม่ได้ใช้ระดับเริ่มต้น - แม้แต่ระบบ syubs BSD
Jeremy L

0
dscacheutil -flushcache

คำสั่งนั้นรีเฟรชแคช DNS ของคุณ

10.94.62.3 เป็นเซิร์ฟเวอร์ DNS ที่คุณเชื่อถือหรือไม่ ถ้าเป็นเช่นนั้นทำไมมีเพียงคนเดียว? คุณควรมีเซิร์ฟเวอร์ DNS อย่างน้อย 2 แห่งเพื่ออ้างถึงเพื่อวัตถุประสงค์ในการเข้าแทนที่ ถ้าคนนั้นลงคุณก็เป็นเป็ด


0

การค้นหาคำสั่งซื้อ DNS ดูเหมือนว่าจะทำงานแตกต่างกันใน Snow Leopard หากคุณไม่สามารถค้นหาโดเมนตรวจสอบเพื่อดูว่าคุณมีเซิร์ฟเวอร์ DNS ที่ไม่ถูกต้องอยู่ในรายการในการตั้งค่าเครือข่ายของคุณ หากคุณใช้การตั้งค่า DHCP มาตรฐานคุณไม่ควรมีเซิร์ฟเวอร์ DNS อยู่ในรายการ ก่อนหน้าการอัปเกรดของฉันฉันมีเซิร์ฟเวอร์ DNS เก่าที่ระบุไว้และมันไม่มีผลอะไรเลย เมื่อฉันอัพเกรดฉันสูญเสีย DNS ทั้งหมด

เปิดการตั้งค่าเครือข่าย> เลือกสนามบิน> ขั้นสูง เลือกแท็บ DNS และลบเซิร์ฟเวอร์ DNS ใด ๆ ที่ไม่ถูกต้อง


0

คุณดูที่คอนโซลแล้วหรือยัง (แอปพลิเคชัน -> ยูทิลิตี้ -> คอนโซล) คุณอาจพบว่า mDNSResponder แสดงขึ้นภายใต้: ข้อมูลการวินิจฉัยและการใช้งาน -> รายงานการวินิจฉัยระบบ

หากระบบขัดข้องเนื่องจากโปรแกรมอื่นซึ่งกำลังโหลดโมดูล (เช่น Little Snitch หรือ Hands Off) คุณอาจเห็นโปรแกรมดังกล่าวอยู่ที่นั่น


-1

ฉันมีปัญหาเดียวกันกับ nslookup การแก้ไขกล่อง windows ของฉัน แต่ ping ให้ฉัน "ไม่ทราบโฮสต์" ฉันลองใช้สิ่งที่ Navdeep แนะนำและไปลบชื่อเซิร์ฟเวอร์ในแท็บ Network Preferences-> Advanced-> DNS มันจะไม่ให้ฉันลบพวกมันออกเป็นสีเทา ในที่สุดฉันก็กดเครื่องหมาย + และพวกเขาก็หายไป ฉันยกเลิกการเพิ่มใหม่และการเปลี่ยนแปลงที่นำไปใช้เมื่อไม่มีเซิร์ฟเวอร์ DNS แสดง ปิงเริ่มทำงานหลังจากนั้น สิ่งที่แปลกคือเซิร์ฟเวอร์เราเตอร์ / DHCP ในพื้นที่ของฉันเป็นรายแรกในรายการและเป็นผู้รับผิดชอบในการแก้ไขกล่อง Windows มันจะต้องเป็นสิ่งที่แปลกกับการสั่งซื้อ ชื่อเซิร์ฟเวอร์อื่น ๆ ที่ระบุไว้เป็น NS ของงานและจะไม่สามารถแก้ไขโฮสต์ windows ได้ ขอบคุณ Navdeep!

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