DNS ไม่ได้รับการแก้ไขใน Mac OS X


101

เพื่อนร่วมงานของฉันบางคนมีปัญหากับ Mac ของพวกเขา - การแก้ปัญหา DNS ไม่ทำงานภายใต้ Mac OS X พวกเขากำลังเรียกใช้ Snow Leopard 10.6.8 พวกเขาสามารถใช้ DNS ในเครื่องเสมือน Windows 7 (VMware Fusion 3.1.3) ที่ทำงานภายใต้ OS X คอมพิวเตอร์รุ่นนี้มีขนาด 15 "MacBook Pros รุ่นต้นปี 2011

สิ่งที่พวกเขาได้ลองซึ่งไม่ได้ผล:

  • การเปิด / ปิดสนามบิน
  • บูตเครื่องใหม่
  • ใช้การเชื่อมต่อแบบมีสายแทน wifi
  • ลบข้อมูลรับรองการเชื่อมต่อและเพิ่มอีกครั้ง
  • ปิดไฟร์วอลล์ Mac
  • ใช้คงที่ IP
  • การตั้งค่าเซิร์ฟเวอร์ DNS ด้วยตนเอง
  • รีสตาร์ท mDNSResponder
  • การแก้ไขจากคำถามอื่นนี้

แก้ไขคำตอบของMartín:

คุณสามารถ ping DNS ที่คุณต้องการใช้ได้หรือไม่?

$ ping apple.com
ping: cannot resolve apple.com: Unknown host

ที่อยู่ IP ของ DNS ที่คุณต้องการใช้คืออะไร

นี่คือเซิร์ฟเวอร์ DNS ของ บริษัท ที่มอบให้กับ DHCP มันทำงานได้ดีสำหรับคนอื่น ๆ ฉันได้ลองใช้ Google 8.8.4.4 และ 205.171.3.65 ของ Google (ซึ่งฉันพบจากการเปรียบเทียบ DNS ของ GRC ว่าเร็วที่สุด)

คุณได้ลองใช้ 8.8.8.8 (Google) หรือใด ๆ ของ OpenDNS 208.67.222.222 208.67.220.220 หรือ?

ไม่ทำงานดูผลลัพธ์ของ Google Chrome:

ไม่พบเซิร์ฟเวอร์ที่ www.apple.com เนื่องจากการค้นหา DNS ล้มเหลว DNS เป็นบริการเครือข่ายที่แปลชื่อเว็บไซต์เป็นที่อยู่อินเทอร์เน็ต ข้อผิดพลาดนี้มักเกิดจากการไม่มีการเชื่อมต่อกับอินเทอร์เน็ตหรือเครือข่ายที่กำหนดค่าผิดพลาด นอกจากนี้ยังอาจเกิดจากเซิร์ฟเวอร์ DNS ที่ไม่ตอบสนองหรือไฟร์วอลล์ทำให้ Google Chrome ไม่สามารถเข้าถึงเครือข่ายได้

คุณสามารถปิงโฮสต์เหล่านั้นได้หรือไม่

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from
8.8.8.8: icmp_seq=0 ttl=58 time=3.925 ms

การสร้างผู้ใช้เปล่า

บัญชีผู้ใช้ของแขกถูกสร้างขึ้นปัญหา DNS ยังคงอยู่ที่นั่นเมื่อใช้บัญชีของผู้เยี่ยมชม

ค้นหาและขุดทั้งสองทำงานได้ดี

$ nslookup www.apple.com 8.8.8.8
Server:  8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
www.apple.com canonical name = www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net canonical name = www.apple.com.edgekey.net.
www.apple.com.edgekey.net canonical name = e3191.c.akamaiedge.net.
Name: e3191.c.akamaiedge.net
Address: 184.24.141.15

 

$ dig @8.8.8.8 www.apple.com
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 www.apple.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11298
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;www.apple.com.   IN A
;; ANSWER SECTION:
www.apple.com.  1041 IN CNAME www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net. 38 IN CNAME www.apple.com.edgekey.net.
www.apple.com.edgekey.net. 8794 IN CNAME e3191.c.akamaiedge.net.
e3191.c.akamaiedge.net. 17 IN A 184.24.141.15
;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Oct 4 09:25:28 2011
;; MSG SIZE  rcvd: 158

•การล้างแคช DNS ก็เสร็จสิ้นเช่นกัน แต่ก็ไม่ได้ช่วยอะไร

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

แก้ไข 2 :

$ cat /etc/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.
#
domain {redacted}.com
nameserver 8.8.8.8
nameserver 208.67.222.222

สำหรับสิงโตก็เกิดขึ้นเช่นกัน
dkagedal

เกิดขึ้นกับฉันที่ Mavericks, 10.9.4
greg7gkb

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

ลองเปลี่ยนการกำหนดค่า DNS ของคุณ (เปลี่ยนลำดับหรือลบรายการ) ที่แก้ไขปัญหาเดียวกันสำหรับฉัน
mems

คำตอบ:


91

ปรากฎทางออกคือการตีกลับ mDNSR ตอบกลับ:

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

สิ่งนี้ได้มาจากผู้ร่วมงานคนอื่นจากคำถามข้อผิดพลาดเซิร์ฟเวอร์นี้

OS X 10.10.0 - 10.10.3, Yosemite

เห็นได้ชัดว่า mDNSResponder ไม่มีอยู่ใน Yosemite (OS X 10.10) คุณสามารถรีสตาร์ท descoveryd แทนเพื่อแก้ไขปัญหาเหล่านี้

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

OS X 10.10.4+, Yosemite

ใน OSX 10.10.4 mDNSResponder ได้รับการแนะนำอีกครั้ง ดังนั้นใช้อันแรกจะทำงานได้อีกครั้ง


5
แต่นี่ไม่ใช่คำตอบที่น่าพอใจจริงๆ ฉันจำเป็นต้องรู้วิธีหยุดมันไม่ให้เกิดขึ้นตั้งแต่แรก
dkagedal

1
@dkagedal นี่เป็นคำตอบที่ดีตามที่เราจะได้รับ - สิ่งนี้เกิดขึ้นเพราะ mac ของคุณแคชรายการ DNS เพื่อหลีกเลี่ยงการชนเซิร์ฟเวอร์ DNS (อาจเป็นเราเตอร์ของคุณ) สำหรับการค้นหา DNS ทุกครั้ง - ซึ่งเกิดขึ้นมาก แคชนี้เป็นสิ่งที่จำเป็นและดี แต่มันจะดีถ้ามีพฤติกรรมที่ดีขึ้นเมื่อไม่พบรายการ (ฉันพิจารณาข้อผิดพลาดนี้) ไม่ว่าในกรณีใด ๆ จะมีการหมดเวลาในแคช เมื่อฉันรอ 10 นาทีหรือมากกว่านั้นบนเครื่องของฉันสถานการณ์เช่นนี้แก้ไขได้เอง สำหรับผู้ใช้ส่วนใหญ่พฤติกรรมที่มีอยู่ก็ดีดังนั้น Apple ไม่น่าจะเปลี่ยนแปลงได้ในเวลาไม่นาน
Matt

2
แน่นอนว่ามันไม่ดีเท่าที่ควร ระบบปฏิบัติการอื่นไม่มีปัญหานี้ ไม่มีอะไรผิดปกติกับ DNS ระเบียนสำหรับ www.google.com จะไม่หายไปมันเป็นเพียงแคช MacOS ที่ทำหายและจะไม่เรียกคืน และนั่นเป็นข้อบกพร่องที่ต้องแก้ไข
dkagedal

1
รับปัญหานี้เมื่อ 10.9 และวิธีแก้ปัญหาทำงานได้อย่างสมบูรณ์ ในกรณีของฉัน DNS แก้ไขสำหรับชื่อเต็ม แต่ไม่ใช่ชื่อย่อ
sorin

1
@Matteo บางทีไฟล์นั้นไม่จำเป็นต้องมีอยู่หรืออาจต้องมีการอัพเดตคำตอบสำหรับ Yosemite คุณมีปัญหานี้หรือไม่? การรันคำสั่งเหล่านั้นแก้ไขได้หรือไม่?
CajunLuke

10

ที่จริงฉันคิดว่าคุณอาจต้องการใช้

scutil --dns

scutil -r hostname

คำสั่งเหล่านี้ใช้ไดนามิกสโตร์ใน configd ซึ่งตรงข้ามกับไฟล์ flatfiles ใน / etc ซึ่งมักจะอ่านได้ในโหมดผู้ใช้คนเดียวและสำหรับระบบที่ไม่ได้เชื่อมต่อเครือข่าย

man scutil   # or

scutil --help  

3
คุณไม่ได้อธิบายว่าทำไมคำสั่งเหล่านี้จะช่วยแก้ไขปัญหานี้ พวกเขาทำยัง หรือนี่หมายถึงเป็นการแสดงความคิดเห็นต่อหนึ่งในคำตอบหรืออะไร?
dkagedal

ข้อดีอย่างหนึ่งที่เป็นไปได้ของ scutil คือมันอาจทำงานได้ไม่ว่าคอมพิวเตอร์นั้นจะมีระบบ Discoveryd หรือ mDNSResponder ก็ตาม มันเริ่มจากก่อนที่จะมีการแนะนำ
DA Vincent

1
คำสั่งเหล่านี้ไม่สามารถแก้ปัญหาได้
Radu Simionescu

7

การจำแนกชื่อภายใต้ OSX (และ UNIX ทั่วไป) นำมาจากที่อยู่ IP ของ DNS ในไฟล์ที่อยู่ใน /etc/resolv.conf (OS X ใดที่สร้างโดยอัตโนมัติเท่าที่ฉันจำได้)

เนื่องจากคุณได้ลองทำทุกอย่างที่อยู่ในใจของฉันแล้วฉันต้องการถามคุณ:

  • คุณสามารถ ping DNS ที่คุณต้องการใช้ได้หรือไม่
  • ที่อยู่ IP ของ DNS ที่คุณต้องการใช้คืออะไร
  • คุณลองใช้ 8.8.8.8 (google) หรือ OpenDNS 208.67.222.222 หรือ 208.67.220.220 ใด ๆ
  • คุณสามารถปิงโฮสต์เหล่านั้นได้หรือไม่

ในที่สุดการทดสอบที่ดีมักจะประกอบด้วยการสร้างผู้ใช้เปล่าและดูว่าผู้ใช้ใหม่นั้นแสดงปัญหาเดียวกันหรือไม่ หากไม่เป็นเช่นนั้นคุณสามารถเริ่มขุดสิ่งที่ผู้ใช้ปัจจุบันของคุณมีซึ่งอาจทำให้เกิดปัญหา ถ้ามันล้มเหลวคุณก็รู้ว่านี่เป็นสิ่งที่เกี่ยวข้องกับ "ระบบ" มากกว่า

ลองดูรอบ ๆ คอนโซลเพื่อดูว่าคุณสามารถมองเห็นสิ่งที่อาจเกี่ยวข้องหรือไม่ (และต้องการวางที่นี่)

สุดท้าย แต่ไม่ท้ายสุดMac ของคุณมาพร้อมกับคำสั่ง DNS ที่สำคัญสองคำสั่งnslookupและdig

ดังนั้นเพื่อแก้ไข www.apple.com โดยใช้เซิร์ฟเวอร์ของ Google คุณต้องพิมพ์:

nslookup "โฮสต์เพื่อแก้ไข" "เซิร์ฟเวอร์ DNS ให้ใช้" เช่น:

$ nslookup www.apple.com 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
www.apple.com   canonical name = www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net    canonical name = www.apple.com.edgekey.net.
www.apple.com.edgekey.net   canonical name = e3191.c.akamaiedge.net.
Name:   e3191.c.akamaiedge.net
Address: 184.24.141.15

NSLookup เป็นคำสั่งเก่า (ซึ่งควรจะเลิกเมื่อหลายปีก่อนและแทนที่ด้วย DIG แต่ไวยากรณ์ที่ใช้งานง่ายนั้นดีเกินกว่าที่จะฆ่าฉันเดา), "การแทนที่" ของมันคือdigคำสั่งที่ทรงพลังมากกว่าซึ่งไวยากรณ์ มันบ้ามากขึ้น

ในการทำแบบสอบถามเดียวกันคุณจะต้องพิมพ์:

dig @ 8.8.8.8 www.apple.com

และนี่คือผลลัพธ์:

$ dig @8.8.8.8 www.apple.com

; <<>> DiG 9.7.3 <<>> @8.8.8.8 www.apple.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17356
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.apple.com.         IN  A

;; ANSWER SECTION:
www.apple.com.      1782    IN  CNAME   www.isg-apple.com.akadns.net.
www.isg-apple.com.akadns.net. 42 IN CNAME   www.apple.com.edgekey.net.
www.apple.com.edgekey.net. 21581 IN CNAME   e3191.c.akamaiedge.net.
e3191.c.akamaiedge.net. 2   IN  A   184.24.141.15

;; Query time: 26 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Oct  3 21:21:49 2011
;; MSG SIZE  rcvd: 158

อย่างที่คุณเห็นขุดได้มากกว่า "verbose" (ซึ่งเป็นการดีที่จะทำการดีบั๊กสิ่งที่เกิดขึ้น) พลังของการขุดมาจากข้อเท็จจริงที่ว่าคุณสามารถระบุประเภทของการสืบค้นที่คุณต้องการดำเนินการ (เหนือสิ่งอื่นใด)

ในกรณีใด ๆ แจ้งให้เราทราบผลลัพธ์ที่แน่นอนของคำสั่งเหล่านี้


ดูการแก้ไขคำถามของฉัน
CajunLuke

@CajunLuke hmmmm ที่น่าสนใจ ... ฉันคิดว่าการเพิ่มผลลัพธ์ของ: cat /etc/resolv.conf คำถามของคุณ?
Martin Marconcini

แก้ไข (แพ็ดดิ้งเพื่อให้พอดีกับความคิดเห็น)
CajunLuke

@CajunLuke ฉันงง ลองย้อนกลับไปที่รูท ... มันเกิดขึ้นกับเครื่องนี้และภายใต้ OSX เท่านั้น, VMs ก็โอเค ฉันเริ่มสงสัยว่า Parallels หรือ VMware อาจทำให้เกิดปัญหา VMs เหล่านี้ใช้เครือข่ายประเภทใด bridged? ที่ใช้ร่วมกัน?
Martin Marconcini

1
หรือถ้าคุณต้องการสั้นจริงๆคุณสามารถทำได้ ... ขุด + short a apple.com ...
Pryftan

7

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

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

  • สร้าง dnsmasq (ดาวน์โหลด tgz และmakeหรือbrew install dnsmasq)
  • ใส่ไว้ในdnsmasq.confไฟล์:

    resolv-file=resolv.conf
    user=nobody
    group=nobody
    interface=lo0
    cache-size=1024
    
  • วางสิ่งนี้ลงในresolv.confไฟล์ที่อยู่ในไดเรกทอรีเดียวกับdnsmasq.confไฟล์ (nb: not /etc/resolv.conf ):

    nameserver 8.8.8.8
    nameserver 4.2.2.1
    nameserver 4.2.2.2
    
  • เรียกใช้ด้วยdnsmasq sudo dnsmasq --no-daemon --log-queries -C dnsmasq.confผลลัพธ์ควรมีลักษณะดังนี้:

    ...
    dnsmasq: reading resolv.conf
    dnsmasq: using nameserver 4.2.2.1#53
    dnsmasq: using nameserver 4.2.2.2#53
    dnsmasq: using nameserver 8.8.8.8#53
    dnsmasq: read /etc/hosts - 6 addresses
    
  • เปิดการตั้งค่าเครือข่ายและตรวจสอบให้แน่ใจว่า127.0.0.1เป็นเซิร์ฟเวอร์ DNS เพียงตัวเดียว (ค่ากำหนดเครือข่าย -> ขั้นสูง -> DNS -> เพิ่ม 127.0.0.1)

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

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


ฉันต้องการจะชี้ให้เห็นว่าหลังจาก 16 ชั่วโมงติดต่อกันทางอินเทอร์เน็ตนี่เป็นทางออกเดียวที่ฉันพบว่าทั้งสองช่วยให้ฉันสามารถแก้ไขชื่อ บริษัท ภายในและอนุญาตให้เครือข่ายแยกทำงานได้อย่างถูกต้อง ขอบคุณมากสำหรับความคิดเห็นนี้
Ron Thompson

ฉันยังต้องการชี้ให้เห็นว่าใน OS X El Capitan ในการสั่งซื้อไปยังสคริปต์การตั้งค่านี้ผมห่อของฉันopenconnectคำสั่งในสคริปต์หลามพร้อมกับคำสั่งเช่นและnetworksetup -setdnsservers 127.0.0.1 networksetup -setsearchdomains "$COMPANY_NAME".comเพิ่มในdnsmasqคำสั่งของคุณและมันพร้อมแล้ว! ในที่สุดฉันก็มีโซลูชัน VPN ที่เสถียรขอบคุณความคิดเห็นนี้
Ron Thompson

สำหรับผู้อ่านในอนาคตฉันพบว่ามันง่ายที่สุดเพียงแค่ใส่ลงในกล่องที่ทำงานตรวจสอบว่า IP ใดที่มีสำหรับเซิร์ฟเวอร์ชื่อและจากนั้น hardcode IP เหล่านั้นลงใน resolv.conf ของฉันด้านล่าง 8.8.8.8 (เซิร์ฟเวอร์ DNS googles) ที่ช่วยให้ชื่อ บริษัท ที่ไม่ได้แก้ไขทั้งหมดอย่างถูกต้องโดยไม่ต้องผ่านเซิร์ฟเวอร์ของ บริษัท ซึ่งฉันพบว่ามีประโยชน์สำหรับความเป็นส่วนตัวและความเร็ว ตราบใดที่การเข้ารหัสยังคงดำเนินต่อไป IP เหล่านั้นจะไม่เปลี่ยนแปลงตลอดเวลาในเร็ว ๆ นี้และหากเป็นเช่นนั้นฉันจะไม่ได้รับผลกระทบใด ๆ เลยและควรแก้ไขสองบรรทัด
Ron Thompson

มันบอกว่าที่อยู่ 127.0.0.1 มีการใช้งานแล้วเมื่อฉันพยายามเริ่ม dnsmasq ฉันต้องทำอะไร? High Sierra
IceFire

@ IceFire ฉันรู้ว่านี่เก่า แต่นั่นก็หมายความว่ามีบริการที่ผูกไว้กับพอร์ตนั้นแล้ว (53) ในทางเทคนิคนั่นหมายถึงมันได้รับEADDRINUSEข้อผิดพลาดแต่ฉันจะไม่ไปที่นั่น :) สำหรับคำตอบนี้ฉันคิดว่ามันน่าสนใจ ฉันมีปัญหาที่คล้ายกัน แต่ฉันคิดว่า (หวัง) สำหรับฉันว่าคำตอบอื่น ๆ จะแก้ไขได้เฉพาะที่ฉันไม่จำเป็นต้องเปิดใช้งานอย่างน้อยสำหรับเครือข่ายในบ้านของฉันเนื่องจากฉันมีเซิร์ฟเวอร์ DNS ที่เชื่อถือได้ของตัวเอง ท้องถิ่นและสิ่งที่ฉันใช้) Otoh เป็นผู้ใช้ Unix ที่ใช้งานจริงนาน ๆ ครั้งฉันสามารถใช้/etc/resolv.confได้ แต่จะลองอีกอันก่อน
Pryftan

6

ฉันมีอาการเดียวกันที่เหมือนกัน (และใช้เวลาสักครู่ในการแก้ไขปัญหา) แต่ฉันสามารถแก้ไขได้เมื่อฉันรู้ว่าฉันยุ่งกับ/System/Library/LaunchDaemons/com.apple.mDNSResponder.plistอะไรและสิ่งที่ฉันทำถูกตีความว่าผิดรูปแบบ ฉันกู้คืนจากข้อมูลสำรองและเครื่องก็สามารถแก้ไขชื่อโฮสต์ได้อีกครั้ง

ก่อนที่จะมาแก้ปัญหาฉันก็รู้ว่าฉันสามารถท่องอินเทอร์เน็ตได้ถ้าฉันใช้พร็อกซี SOCKS5 ผ่านssh -Dและลองค้นหา DNS ผ่านอุโมงค์


1
บริษัท ของฉันมีปัญหานี้มาหลายเดือนหลายเดือนนำ Mac ไปที่ "Genius bar" ซึ่งมีวิธีแก้ไขปัญหาเดียวคือการล้างฮาร์ดไดรฟ์และเริ่มต้นใหม่ ฉันเห็นโพสต์ของคุณและลบ com.apple.mDNSResponder.plist รีบูตและปัญหาได้รับการแก้ไข ฉันหวังว่าฉันจะสามารถโหวตคุณเป็นพันล้านครั้ง
โทมัส Thorogood

1
อย่าลบหมายเหตุcom.apple.mDNSResponder.plist! ฉันทำตามที่ @TomThorogood แนะนำ ฉันมีเวลากลับยาก แม้ฉันจะนำไฟล์กลับมาและรีสตาร์ทฉันก็ไม่สามารถรับการตอบสนองใด ๆ จากอินเทอร์เน็ต ยิ่งsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistกว่าช่วย
Pavel Binar

5

ฉันมีปัญหาคล้ายกันมากยกเว้นอาการแตกต่างกันเล็กน้อย

ผู้ใช้ของฉันไม่สามารถแก้ไขชื่อใด ๆ (ท้องถิ่น NAS, Google ฯลฯ ) แต่ผู้ใช้ของผู้เยี่ยมชมใน iMac เดียวกัน (OS X 10.7.4) ทำงานได้ดี

การล้างและรีสตาร์ท mDNSR การตอบกลับตามที่กล่าวถึงใช้งานได้ระยะหนึ่ง ในขณะที่มันจะยังคงทำงานเมื่อ iMac อยู่ในโหมดสลีปมันจะล้มเหลวเสมอเมื่อรีบูตเครื่อง

เมื่อฟลัช / รีสตาร์ทหยุดทำงานฉันค้นหาเหตุผล / วิธีแก้ไขปัญหาอื่น ๆ และฉันพบว่ามันเกี่ยวข้องกับไฟร์วอลล์ของฉัน ฉันไม่ทราบว่าการตั้งค่าไฟร์วอลล์ (OS X) ของฉันเป็นสาเหตุอะไร แต่ถ้าฉันกู้คืนการตั้งค่าไฟร์วอลล์ที่ใช้งานได้

ในการกู้คืนการตั้งค่าเริ่มต้นที่ฉันใช้:

sudo cp /usr/libexec/ApplicationFirewall/com.apple.alf.plist /Library/Preferences/com.apple.alf.plist

เห็นได้ชัดว่ากฎที่กำหนดเองใด ๆ จะถูกลบด้วยการกู้คืนนี้

ฉันต้องการแชร์เวอร์ชันของปัญหานี้เพราะมันทำให้ฉันเสียใจและเป็นเดือนและโพสต์นี้เป็นคอลเล็กชั่นที่ดีที่สุดของการแก้ปัญหาที่เป็นไปได้ในเน็ต!


4

ฉันพบปัญหานี้ใน Yosemite (10.10) ปรากฎว่า daemon สำคัญdiscoverydถูกฆ่าตายเนื่องจากใช้ CPU มากเกินไป

2014/10/22 3:50:07.000 PM kernel[0]: process discoveryd[49] thread 1251 caught burning CPU! It used more than 50% CPU (Actual recent usage: 68%) over 180 seconds. thread lifetime cpu usage 90.016372 seconds, (74.516637 user, 15.499735 system) ledger info: balance: 90007570271 credit: 90007570271 debit: 0 limit: 90000000000 (50%) period: 180000000000 time since last refill (ns): 131905306167 

การรีบูตเครื่องอย่างแปลกประหลาดไม่ได้ทำให้รีสตาร์ท

ฉันรีสตาร์ทบริการด้วยตนเอง:

sudo launchctl kickstart -k system/com.apple.networking.discoveryd

และตอนนี้ทั้งหมดเป็นอย่างดี


1
นี่เป็นวิธีแก้ปัญหาสำหรับฉันที่ Yosemite เช่นกัน รายละเอียดบางอย่าง: โฮสต์, ขุดและ Chrome ทำงานได้ดี แต่ ping, telnet, ssh, firefox และ Safari ไม่สามารถแก้ไขชื่อโฮสต์ได้ วิธีนี้แก้ไขปัญหาของฉันได้
Ryan Hoegg

ที่น่ารำคาญเกิดขึ้นตลอดเวลาสำหรับฉัน ต้องเริ่มบริการใหม่
Callum Rogers

2

ฉันมีปัญหาเดียวกันกับ 10.6.8 การเดินทางครั้งแรกไปที่ Apple Store ทำให้ระบบกู้คืนได้ แต่หลังจากนั้น DNS ก็แตกอีกครั้งขณะที่ฉันอยู่ต่างประเทศและไม่มี DVD ระบบมาด้วย ในเวลานั้นฉันพบกระทู้นี้และลบ/System/Library/LaunchDaemons/com.apple.mDNSResponder.plistต่อ @freezedpeanuts และ @Tom Thorogood

มันแก้ไขปัญหาได้ แต่น่าแปลกใจที่ DNS พังเมื่อสองสามวันต่อมา ฉันตามล่าระบบอิมเมจของ 10.6.3 และ:

  1. คัดลอก/System/Library/LaunchDaemons/com.apple.mDNSResponder.plistมาจากอิมเมจระบบ
  2. sudo chown root /System/Library/LaunchDaemons/com.apple.mDNS*
  3. รีบูต

ที่แก้ไขปัญหา

มันจะหยุดพักเป็นระยะ ๆ สำหรับฉันในตอนนี้ (เดือนละครั้งหรือมากกว่านั้น) และขั้นตอนการกู้คืนจะดำเนินไปตามขั้นตอนข้างต้นยกเว้นคุณสามารถรีบูตเครื่องแทน:

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


2

โปรดทราบว่าทุกคนยังคงมีปัญหาอยู่คุณอาจต้องลบเซิร์ฟเวอร์ DNS สาธารณะใด ๆ จนกว่าจะล้างแคช


1
บางทีเราควรจะพูดถึงsupport.apple.com/en-au/HT203244
DA Vincent

@Davincent ไม่กี่ปีที่ผ่านมา แต่ลิงค์นั้นน่าผิดหวัง เห็นได้ชัดว่าเป็นข้อบกพร่องของ Apple แต่เกิดจากข้อผิดพลาดของผู้ใช้
weberc2

2

ฉันดูเหมือนปัญหาเดียวกันกับ OP เมื่อใช้เครื่องมือ networksetup ฉันพบว่าสำหรับชื่อเครือข่ายที่กำหนดมีการกำหนดค่า DNS ผิดบางอย่าง:

networksetup -getdnsservers <networkname>

แสดงรายการ 192.168.0.1 เป็น DNS การใช้ scutil --dns ฉันได้ผลลัพธ์ที่เปรียบเทียบกันได้รายการที่ resolver # 2 ใช้เนมเซิร์ฟเวอร์ [0]: 192.168.0.1

การใช้คำสั่ง

networksetup -setdnsservers <networkname> 192.168.188.1 8.8.8.8

ฉันสามารถกำหนดค่า DNS ใหม่สำหรับเครือข่ายที่กำหนดและแก้ไขชื่อของเครื่องในและนอกโลกเมื่อเชื่อมต่อกับ VPN


2

ในกรณีของฉันทุกอย่างก็ใช้ได้: mDNSR ตอบกลับทำงานและทำงานhost/ nslookupทำงานทั้งคู่/etc/resolv.confและnetworksetupรายงานเซิร์ฟเวอร์ DNS ที่ถูกต้อง ฯลฯ แม้จะมีการแก้ไขปัญหา DNS โดยทั่วไป (เช่นด้วยping) หยุดทำงานในบางจุดหลังจากนั้นไม่กี่ชั่วโมง รองเท้า

ปัญหาเฉพาะนี้อาจไม่น่าเป็นไปได้ แต่ฉันจะบันทึกไว้ที่นี่เป็นคำตอบต่อไป

ฉันสังเกตเห็นเมื่อเครื่องเริ่มช้าลง แต่มีกระบวนการที่เหมือนกันจำนวนมากกำลังทำงานอยู่ sensu-clientโดยเฉพาะ

เรากำหนดค่ามันใน launchd ด้วยไฟล์ plist นี้:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
  <dict>
  <key>KeepAlive</key>
  <true/>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/etc/sensu</string>
  <key>UserName</key>
  <string>root</string>
  <key>Label</key><string>org.sensuapp.sensu-client</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/bin/sensu-client</string>
      <string>-d/etc/sensu/conf.d/</string>
      <string>-b</string>
    </array>
  </dict>
</plist>

-bธงเพื่อsensu-clientทำให้มันแยกไปที่พื้นหลังทำหน้าที่เป็นภูต อย่างไรก็ตามสิ่งที่launchdเห็นทั้งหมดคือกระบวนการดั้งเดิมถูกยกเลิกดังนั้น (ตามKeepAliveธง) จะรีสตาร์ท สิ่งนี้ทำให้กระบวนการแยกทางหลายพันกระบวนการเป็นพื้นหลังและแม้กระทั่ง launchd ก็จะไม่ฉลาดเท่ากับความจริงที่ว่ามันกำลังทำงานอยู่

ผมเชื่อว่าสิ่งเหล่านี้หลายพันกระบวนการ (ทั้งหมดsensu-client, ซอฟแวร์ที่เราได้เขียนการตั้งค่าสำหรับ launchd) อาจจะได้รับพร้อม ๆ กันทำให้การร้องขอไปยัง mDNSResponder ได้อย่างมีประสิทธิภาพส่งผลให้การปฏิเสธในท้องถิ่นในการให้บริการของแคช DNS การฆ่ากระบวนการเหล่านี้และแก้ไข plist ที่กำหนดให้กับ launchd ในที่สุดก็แก้ปัญหาได้

การแก้ไข Plist เป็นเพียงการลบ-bธง (พื้นหลัง / daemonise) จากการร้องขอ sensu-client โปรดทราบว่านี่ไม่ใช่ความผิดของ sensu โปรแกรมนี้เขียนโดยผู้ดูแลระบบคนเดิมของ บริษัท นี้


2

ต่อไปนี้เป็นคำสั่งขั้นสูงเล็กน้อยที่สามารถช่วยแก้ไขปัญหา DNS:

  • รันdigเพื่อแสดงรายการเซิร์ฟเวอร์รูทชื่อ
  • เรียกใช้dig example.comเพื่อเรียกใช้การค้นหา DNS สำหรับexample.comโดเมน
  • networksetup -listallhardwareportsรายชื่อพอร์ตฮาร์ดแวร์ของคุณโดย:
  • ตรวจสอบการส่งออกของแพ็คเก็ต DHCP / BOOTP ที่ลูกค้าได้รับการยอมรับจากเซิร์ฟเวอร์ DHCP / BOOTP ipconfig getpacket en0โดย:
  • ตรวจสอบการตั้งค่า DNS scutil --dnsของคุณโดย:
  • ตรวจสอบว่าขั้นตอนการทำงานอยู่โดย:mDNSResponderps wuax | grep mDNSResponder
  • ล้างรายการแปล ARP โดย: arp -ad(เรียกใช้man arpเพื่อขอความช่วยเหลือ) แหล่ง

หากต้องการดีบักmDNSResponderกระบวนการคำสั่งต่อไปนี้อาจช่วยได้:

(sleep 1 && sudo killall -INFO mDNSResponder &); log stream | grep mDNSResponder

คำสั่งข้างต้นจะส่งSIGINFOสัญญาณไปยังกระบวนการซึ่งจะถ่ายโอนข้อมูลการดีบักลงในเอาต์พุตของล็อกซึ่งสามารถอ่านและวิเคราะห์ได้


1

การปิดและเปิด Wi-Fi ช่วยได้อีกครั้ง

MacBook Pro พร้อม 10.9.1

โดยเฉพาะอย่างยิ่งถ้าคุณปิด wifi แล้วรีบูต ความล่าช้าเป็นพิเศษและเริ่มต้นด้วยการไม่มีการเชื่อมต่อ IP / เครือข่ายทำให้มั่นใจได้ว่าการร้องขอเพื่อเข้าร่วมเครือข่ายมีโอกาสที่ดีกว่าที่จะประสบความสำเร็จ


1
แม้ว่าคำถามอาจต้องมีการแก้ไข แต่ก็ยังพูด (ในขณะที่เขียนความคิดเห็นนี้) ว่าคนงานได้ลองปิด Wi-Fi แล้วเปิดใหม่อีกครั้ง บางทีเราอาจตอบคำตอบนี้ได้ไหม
DA Vincent

ฉันไม่มีชื่อเสียงพอที่จะเพิ่มความคิดเห็นในโพสต์เมื่อปิด wifi แล้วเปิดใหม่ แต่นั่นก็ใช้ได้สำหรับฉัน การถอนคำตอบนั้นจะไร้สาระ

+1 สำหรับคำแนะนำให้ลองอีกครั้ง คำตอบหลายคำตอบช่วยให้ผู้คนมากมายและเราเตอร์แต่ละคนมีเวลาและพฤติกรรมที่แตกต่างกัน
bmike

1

นี่อาจจะไม่ช่วยใครเลย แต่ในกรณีที่ฉันบังเอิญไปเมื่อไม่นานมานี้ได้สร้างไฟล์ในโฟลเดอร์เมื่อ DNS ไม่ทำงานสำหรับโดเมนใดโดเมนหนึ่ง:

/ etc / จำแนก /

และนี่คือการป้องกันไม่ให้ชื่อที่เฉพาะเจาะจงจากที่เคยได้รับการแก้ไขสองปีต่อมา


ขอบคุณมากนี่เป็นปัญหาของฉัน ฉันได้ทำการดีบั๊กเป็นเวลาหลายชั่วโมงและเมื่อฉันดูใน / etc / resolver ฉันพบไฟล์ที่เรียกว่า "test" พร้อมด้วย IP ที่ผิดพลาด ...
keyser

1

น่าเสียดายที่ไม่มีสิ่งใดช่วยฉันได้และกลับกลายเป็นเวลาหนึ่งชั่วโมงหลังจากที่พยายามคิดออกและทุบหัวของฉันกับโต๊ะกาแฟ .. บางสิ่งบางอย่างที่ไหนสักแห่ง ... ลบ /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistไฟล์และเป็นสาเหตุที่ฉันมีปัญหานี้

ตระหนักถึงสิ่งนี้เมื่อฉันเห็นข้อความแสดงข้อผิดพลาดนี้: /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist: No such file or directory

นี่คือสำเนาของเวอร์ชันจาก El Capitan: https://gist.github.com/tripflex/e7147690d1768dc74b1dd626614573c0

นี่คือรหัสจากส่วนสำคัญ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.apple.mDNSResponder.reloaded</string>
    <key>OnDemand</key>
    <false/>
    <key>InitGroups</key>
    <false/>
    <key>UserName</key>
    <string>_mdnsresponder</string>
    <key>GroupName</key>
    <string>_mdnsresponder</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/mDNSResponder</string>
    </array>
    <key>MachServices</key>
    <dict>
        <key>com.apple.mDNSResponder</key>
        <true/>
            <key>com.apple.mDNSResponder.dnsproxy</key>
            <true/>
    </dict>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <key>SockFamily</key>
            <string>Unix</string>
            <key>SockPathName</key>
            <string>/var/run/mDNSResponder</string>
            <key>SockPathMode</key>
            <integer>438</integer>
        </dict>
    </dict>
    <key>POSIXSpawnType</key>
    <string>Interactive</string>
    <key>EnablePressuredExit</key>
    <false/>
</dict>
</plist>

0

ตามที่ปรากฏออกมาเพื่อแก้ปัญหาที่คุณต้องกำหนดค่าโดเมนการค้นหาและเพิ่มลงในฟิลด์โดเมนการค้นหาภายใต้การตั้งค่าระบบการกำหนดค่า DNS โดยทั่วไปโดเมนการค้นหาจะทำงานในลักษณะเดียวกับที่. local ทำ แต่จะเป็นเช่นนั้น

คุณต้องตั้งค่าโดเมนการค้นหาของคุณเป็นโซนหลักในเซิร์ฟเวอร์ dns ของคุณเพื่อให้สิ่งนี้ทำงานได้


0

ฉันมีปัญหาคล้ายกันกับการค้นหาเซิร์ฟเวอร์โฮสต์ เรามี iMacs 21 เครื่องที่ทำงานจากเซิร์ฟเวอร์ (El Capitan, อัพเกรดล่าสุด) และมีเพียงเครื่องเดียวเท่านั้นที่จะไม่ผูกมัด การแก้ไขมักจะง่ายผ่านผู้ใช้และกลุ่มใน SysPref การลบเซิร์ฟเวอร์โฮสต์และการเชื่อมโยงใหม่ค้นหาเซิร์ฟเวอร์ที่มีอยู่ในตัวเลือกแบบเลื่อนลง แต่ด้วยเหตุผลที่ไม่ทราบสาเหตุบางประการเซิร์ฟเวอร์ถูกระบุว่าเป็นรายการunkown-00-00-12-34-56-78.homeซึ่งฉันพบว่าเป็นที่อยู่ MAC ของเซิร์ฟเวอร์ ฉันวิ่งไปที่เทอร์มินัล:

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

และ

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

กลับไปผูกกับเซิร์ฟเวอร์ใน SysPref และตัวเลือกชื่อเซิร์ฟเวอร์ที่ถูกต้องปรากฏขึ้นในเวลาสั้น ๆ แล้วเปลี่ยนกลับเป็น "unkown-00-00-12-34-56-78.home" ต่อหน้าต่อตาฉัน!


0

เมื่อทำตามคำสั่งจากคำตอบที่ยอมรับแล้ว:

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

คุณอาจพบว่ามีคำเตือน:

ไม่อนุญาตการดำเนินการในขณะที่การป้องกันระบบสมบูรณ์

คุณต้องปิดมัน คำแนะนำทั้งหมดที่นี่: https://www.howtogeek.com/230424/how-to-disable-system-integrity-protection-on-a-mac-and-why-you-shouldnt/


0

ในกรณีของฉันฉันเคยติดตั้ง OpenDNS มาก่อนและไม่ได้ลบออกหมดจด มีกระบวนการที่เกี่ยวข้องกับ DNS หลายตัวที่ทำงานอยู่เช่น DNSdnscrypt-proxy ฉันไม่สามารถบังคับให้ออกจากพวกเขาในการตรวจสอบกิจกรรม แต่ฉันสามารถหยุดพวกเขาจากการเริ่มต้นใหม่เมื่อเริ่มต้นใหม่โดยการลบไฟล์. plist ใน Library / LaunchDaemons


0

ไปที่การตั้งค่า -> เครือข่าย -> ขั้นสูง -> DNS จากนั้นทำการเปลี่ยนแปลงใด ๆ กับ DNS (เรียงลำดับรายการ DNS ของคุณใหม่) จากนั้นคลิก "ตกลง" ตามด้วย "สมัคร" ในหน้าจอถัดไป อย่าหลงคิดว่าการเปลี่ยนแปลงที่คุณทำมีความสำคัญ มันเป็นความมหัศจรรย์ของปุ่ม "ใช้งาน"

~ $  time nslookup www.google.com
;; connection timed out; no servers could be reached


real    0m21.041s
user    0m0.006s
sys     0m0.010s

 ~ $  time nslookup www.google.com
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   www.google.com
Address: 172.217.5.4


real    0m0.079s
user    0m0.006s
sys     0m0.010s

0

สิ่งที่ได้ผลสำหรับฉันคือการลบรายการเซิร์ฟเวอร์ทั้งหมดจากเซิร์ฟเวอร์ DNS และโดเมนการค้นหาจาก:

การตั้งค่าระบบ→เครือข่าย→ขั้นสูง ... → DNS


-1

หลังจากอัปเกรดจาก Snow Leopard บน Mac Book เก่าเป็น Mountain Lion ระบบไม่สามารถแก้ไข DNS ได้ ล้างเริ่มต้นใหม่ไม่มีอะไรช่วย การเปลี่ยน WiFi เป็นจุดเชื่อมต่ออื่น (โทรศัพท์ของฉัน) ช่วย

Mountain Lion เพิ่มเขตข้อมูลไคลเอ็นต์ใหม่ให้กับการตั้งค่าเครือข่าย DHCP การกรอกข้อมูลในฟิลด์นี้ดูเหมือนจะทำให้จุดเชื่อมต่อ wifi มีความสุข ปล่อยให้มันว่างเปล่าหมายความว่าไม่มีอะไรได้รับถึงแม้ว่าการเชื่อมต่อ wifi ดูเหมือนจะประสบความสำเร็จ

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