DNS tidak menyelesaikan pada Mac OS X


102

Beberapa rekan kerja saya mengalami masalah pada Mac mereka - resolusi DNS tidak berfungsi di bawah Mac OS X. Mereka menjalankan Snow Leopard 10.6.8. Mereka dapat menggunakan DNS di mesin virtual Windows 7 (VMware Fusion 3.1.3) yang berjalan di bawah OS X. Komputernya adalah MacBook Pro 15 ", model awal 2011.

Hal-hal yang telah mereka coba yang belum berhasil:

  • menyalakan / mematikan bandara
  • me-reboot
  • menggunakan koneksi kabel bukan wifi
  • menghapus kredensial koneksi dan menambahkannya lagi
  • mematikan firewall Mac
  • menggunakan IP statis tetap
  • pengaturan server DNS secara manual
  • me-restart mDNSResponder
  • perbaikan dari pertanyaan lain ini

Respons EDIT Jawaban Martín:

Dapatkah Anda melakukan ping DNS yang ingin Anda gunakan?

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

Apakah alamat IP dari DNS yang ingin Anda gunakan?

Ini adalah server DNS perusahaan yang diberikan bersama DHCP, ini berfungsi dengan baik untuk orang lain. Saya juga mencoba Google 8.8.4.4 dan 205.171.3.65 (yang saya temukan dari Tolok Ukur DNS GRC menjadi yang tercepat).

Sudahkah Anda mencoba menggunakan 8.8.8.8 (google) atau OpenDNS 208.67.222.222 atau 208.67.220.220?

Tidak berfungsi, lihat output Google Chrome:

Server di www.apple.com tidak dapat ditemukan, karena pencarian DNS gagal. DNS adalah layanan jaringan yang menerjemahkan nama situs web ke alamat Internetnya. Kesalahan ini paling sering disebabkan oleh tidak adanya koneksi ke Internet atau jaringan yang salah konfigurasi. Ini juga dapat disebabkan oleh server DNS yang tidak responsif atau firewall yang mencegah Google Chrome mengakses jaringan.

Bisakah Anda melakukan ping host tersebut?

$ 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

membuat pengguna kosong

Akun pengguna tamu telah dibuat, masalah DNS masih ada ketika menggunakan akun tamu.

nslookup dan gali keduanya berfungsi dengan baik

$ 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

juga membersihkan cache DNS sudah dilakukan tetapi tidak membantu

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

EDIT 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

Terjadi bagi saya di singa juga.
dkagedal

Terjadi pada saya di Mavericks, 10.9.4
greg7gkb

Ini terlihat seperti masalah historis yang membusuk kehidupan pengguna dan admin jaringan dari Leopard ke Yosemite. Jika seseorang masih melihat masalah ini, tolong laporkan dengan jelas jika Anda memiliki lebih dari satu antarmuka yang aktif dan terlebih lagi mendapatkan konfirmasinya. dari server DHCP (dari berbagai sisi). Mengapa? Saya tidak pernah melihat masalah seperti itu pada Unix lain dan tidak ada pada Mac saya (saya punya banyak), tetapi tidak satu pun dari mereka memiliki lebih dari satu antarmuka berbicara ke sumber info DNS.
dan

Cobalah untuk mengubah konfigurasi DNS Anda (ubah urutan atau hapus entri), yang menyelesaikan masalah yang sama untuk saya
mems

Jawaban:


91

Ternyata solusinya adalah dengan memantulkan mDNSResponder:

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

Ini diperoleh oleh rekan kerja yang berbeda dari pertanyaan Server Fault ini .

OS X 10.10.0 - 10.10.3, Yosemite

Rupanya , mDNSResponder tidak ada di Yosemite (OS X 10.10). Anda dapat memulai kembali descoveryd sebagai gantinya untuk memperbaiki masalah ini.

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

Di OSX 10.10.4 mDNSResponder telah diperkenalkan kembali . Jadi gunakan yang pertama akan bekerja lagi.


5
Tapi ini bukan jawaban yang memuaskan. Saya perlu tahu bagaimana menghentikannya agar tidak terjadi.
dkagedal

1
@dkagedal Ini sebenarnya jawaban yang sama baiknya dengan yang akan kita dapatkan - ini terjadi karena mac Anda cache entri DNS untuk menghindari memukul server DNS Anda (kemungkinan router Anda) untuk setiap pencarian DNS - yang sering terjadi. Cache ini diperlukan, dan bagus, tetapi alangkah baiknya jika ada perilaku yang lebih baik ketika entri tidak ditemukan (saya anggap ini bug). Bagaimanapun, ada beberapa batas waktu dalam cache; ketika saya menunggu sekitar 10 menit di mesin saya, situasi ini teratasi dengan sendirinya. Bagi sebagian besar pengguna, perilaku yang ada baik-baik saja, jadi tidak mungkin diubah oleh Apple dalam waktu dekat.
Matt

2
Tentu saja ini tidak sebagus yang didapatnya. Tidak ada OS lain yang memiliki masalah ini. Tidak ada yang salah dengan DNS, catatan untuk www.google.com tidak hilang, hanya cache MacOS yang entah bagaimana kehilangannya dan tidak akan mengambilnya kembali. Dan itu adalah bug yang perlu diperbaiki.
dkagedal

1
Mendapat masalah ini pada 10.9 dan solusi bekerja dengan sempurna. Dalam kasus saya, DNS menyelesaikan untuk nama lengkap tetapi tidak pendek.
sorin

1
@Matteo Mungkin file tidak harus ada, atau mungkin jawabannya perlu diperbarui untuk Yosemite. Apakah Anda memiliki masalah ini? Apakah menjalankan perintah itu memperbaikinya?
CajunLuke

10

Sebenarnya, saya pikir Anda mungkin ingin menggunakannya

scutil --dns

scutil -r hostname

Perintah-perintah ini menggunakan toko dinamis dalam configd, tidak seperti flatfiles di / etc, yang sering hanya dibaca dalam mode pengguna tunggal dan untuk sistem non jaringan.

man scutil   # or

scutil --help  

3
Anda tidak menjelaskan mengapa perintah ini akan membantu masalah ini. Apakah mereka seimbang? Atau ini dimaksudkan sebagai komentar untuk salah satu jawaban lain atau sesuatu?
dkagedal

Satu keuntungan yang mungkin dari scutil adalah bahwa ia dapat bekerja terlepas dari apakah komputer memiliki discoveryd atau mDNSResponder. Itu berasal dari sebelum perkenalan mereka.
DA Vincent

1
perintah-perintah ini tidak menyelesaikan masalah
Radu Simionescu

8

Saya pernah mengalami masalah yang sama ... Dan ketika me-restart mDNSResponder tampaknya "bekerja", me-restart beberapa kali setiap jam agak menyebalkan.

Jadi, untuk saat ini, saya telah "memecahkan" masalah dengan menjalankan dnsmasq secara lokal. Untuk melakukannya:

  • Bangun dnsmasq (unduh tgz dan makeatau brew install dnsmasq)
  • Masukkan ini ke dalam dnsmasq.conffile:

    resolv-file=resolv.conf
    user=nobody
    group=nobody
    interface=lo0
    cache-size=1024
    
  • Letakkan ini di resolv.conffile yang ada di direktori yang sama dengan dnsmasq.conffile (nb: not /etc/resolv.conf ):

    nameserver 8.8.8.8
    nameserver 4.2.2.1
    nameserver 4.2.2.2
    
  • Jalankan dnsmasqdengan sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf. Outputnya akan terlihat seperti:

    ...
    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
    
  • Buka Preferensi Jaringan dan pastikan itu 127.0.0.1adalah satu-satunya server DNS (preferensi jaringan -> lanjutan -> DNS -> tambahkan 127.0.0.1)

Segala sesuatu harus mulai bekerja dengan baik lagi.

Setelah semuanya berfungsi, Anda dapat menjalankan dnsmasqtanpa opsi --no-daemondan --log-queries, jadi itu akan dimulai di latar belakang dan Anda tidak perlu membuka jendela Terminal.


Saya hanya ingin menunjukkan bahwa setelah 16 jam penuh menjelajahi Internet, ini adalah satu - satunya solusi yang saya temukan yang memungkinkan saya menyelesaikan nama-nama internal perusahaan DAN memungkinkan perpecahan jaringan berfungsi dengan baik. Terima kasih banyak atas komentar ini.
Ron Thompson

Saya juga menunjukkan bahwa pada OS X El Capitan, untuk mengatur skrip ini, saya membungkus openconnectperintah saya dalam skrip python, bersama dengan perintah seperti networksetup -setdnsservers 127.0.0.1dan networksetup -setsearchdomains "$COMPANY_NAME".com. Tambahkan dnsmasqperintah Anda dan semuanya siap! Saya akhirnya memiliki solusi VPN yang stabil berkat komentar ini.
Ron Thompson

Untuk pembaca masa depan, saya merasa paling mudah untuk hanya ssh ke dalam kotak saya di tempat kerja, menentukan IP yang dimilikinya untuk server nama, dan kemudian meng-hardcode IP tersebut ke resolv.conf saya di bawah 8.8.8.8 (server DNS Google). Itu memungkinkan semua nama non perusahaan untuk menyelesaikan dengan benar tanpa harus melalui server perusahaan, yang menurut saya berguna untuk privasi dan kecepatan. Sejauh hardcoding berjalan, IP-IP itu tidak akan berubah dalam waktu dekat, dan jika ya, saya tidak akan menjadi satu-satunya yang terpengaruh dan sepele untuk mengedit dua baris.
Ron Thompson

Dikatakan bahwa alamat 127.0.0.1 sudah digunakan, ketika saya mencoba memulai dnsmasq. Apa yang harus saya lakukan? High Sierra
IceFire

@IceFire Saya tahu ini sudah tua tapi itu berarti sudah ada layanan yang terikat pada port itu (53). Secara teknis itu berarti mendapatkan kesalahan EADDRINUSE tapi saya tidak akan pergi ke sana :) Adapun jawaban ini saya merasa menarik. Saya memiliki masalah yang sama tetapi saya pikir (harapan) bagi saya bahwa jawaban yang lain akan menyelesaikannya hanya bahwa saya tidak perlu mengaktifkannya setidaknya untuk jaringan rumah saya karena saya memiliki server DNS otoritatif sendiri (dan satu kebetulan adalah lokal dan apa yang saya gunakan). Otoh sebagai pengguna Unix lama fakta saya bisa menggunakan /etc/resolv.conf menarik tetapi akan mencoba yang lain terlebih dahulu.
Pryftan

7

Resolusi nama di bawah OSX (dan UNIX secara umum) diambil dari alamat IP DNS dalam file yang terletak di /etc/resolv.conf (yang dihasilkan oleh OS X secara otomatis sejauh yang saya ingat).

Karena Anda sudah mencoba hampir semua hal yang muncul di pikiran saya, saya ingin bertanya kepada Anda:

  • Bisakah Anda melakukan ping DNS yang ingin Anda gunakan?
  • Apakah alamat IP dari DNS yang ingin Anda gunakan?
  • Sudahkah Anda mencoba menggunakan 8.8.8.8 (google) atau OpenDNS 208.67.222.222 atau 208.67.220.220?
  • Bisakah Anda melakukan ping host tersebut?

Akhirnya, tes yang biasanya bagus terdiri dari membuat pengguna kosong dan melihat apakah pengguna baru itu menunjukkan masalah yang sama. Jika tidak, maka Anda dapat mulai menggali apa yang dimiliki oleh pengguna Anda saat ini yang dapat menyebabkan masalah; jika itu juga gagal, maka Anda tahu ini adalah sesuatu yang lebih "sistem" terkait.

Lihat juga di sekitar Konsol untuk melihat apakah Anda dapat menemukan sesuatu yang mungkin terkait (dan ingin menempel di sini).

Terakhir, Mac Anda dilengkapi dengan dua perintah DNS penting, nslookupdan dig.

Jadi untuk menyelesaikan www.apple.com menggunakan server google, Anda harus mengetik:

nslookup "host untuk menyelesaikan" "server DNS yang akan digunakan". Misalnya:

$ 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 adalah perintah lama (yang seharusnya tidak digunakan lagi beberapa tahun yang lalu dan digantikan oleh DIG, tetapi sintaksinya yang mudah digunakan terlalu bagus untuk dibunuh, saya kira.), "Penggantian" -nya adalah dig, perintah yang jauh lebih kuat, yang sintaksisnya lebih gila.

Untuk melakukan kueri yang sama, Anda harus mengetik:

gali @ 8.8.8.8 www.apple.com

Dan inilah hasilnya:

$ 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

Seperti yang Anda lihat, menggali jauh lebih banyak "verbose" (yang bagus untuk men-debug apa yang sedang terjadi). Kekuatan penggalian berasal dari fakta bahwa Anda dapat menentukan jenis permintaan apa yang ingin Anda lakukan (Antara lain).

Bagaimanapun, beri tahu kami output yang tepat dari perintah ini.


Lihat edit saya untuk pertanyaan.
CajunLuke

@CajunLuke hmmmm menarik ... Saya keberatan menambahkan output dari: cat /etc/resolv.conf ke pertanyaan Anda?
Martin Marconcini

Diedit. (Padding untuk membuat komentar pas.)
CajunLuke

@CajunLuke saya bingung. Mari kita kembali ke root ... ini hanya terjadi pada mesin ini, dan hanya di bawah OSX, VM tidak masalah. Saya mulai curiga bahwa Parallels atau VMware mungkin menyebabkan masalah. Jenis jaringan apa yang digunakan para VM ini? Dijembatani Bersama?
Martin Marconcini

1
Atau jika Anda ingin benar-benar singkat, Anda selalu dapat melakukan ... menggali + pendek apple.com ...
Pryftan

6

Saya memiliki gejala yang sama persis sama (dan menghabiskan pemecahan masalah sementara) tetapi saya bisa mengatasinya ketika saya menyadari bahwa saya mengacaukan /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistdan apa yang saya lakukan entah bagaimana ditafsirkan sebagai cacat. Saya dipulihkan dari cadangan dan mesin dapat menyelesaikan nama host lagi.

Sebelum datang ke solusi, saya juga menyadari bahwa saya dapat menelusuri internet jika saya menggunakan proxy SOCKS5 melalui ssh -Ddan mencoba pencarian DNS melalui terowongan.


1
Perusahaan saya telah mengalami masalah ini selama berbulan-bulan, setiap kali membawa Mac ke "Genius bar" yang satu-satunya solusi adalah menghapus hard drive dan memulai dari awal. Saya melihat posting Anda, dan menghapus com.apple.mDNSResponder.plist, reboot, dan masalahnya terpecahkan. Kuharap aku bisa membesarkanmu satu miliar kali.
Thomas Thorogood

1
Apakah catatan hapus com.apple.mDNSResponder.plist! Saya melakukannya sesuai saran @TomThorogood. Saya kesulitan untuk kembali. Bahkan saya mengembalikan file dan me-restart saya tidak bisa mendapatkan respon dari internet. Dari sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistmembantu.
Pavel Binar

5

Saya memiliki masalah yang sangat, sangat mirip, kecuali gejalanya sedikit berbeda.

Pengguna saya tidak dapat menyelesaikan nama apa pun (NAS lokal, Google, dll.) Tetapi seorang pengguna tamu di iMac yang sama (OS X 10.7.4) bekerja dengan baik.

Pembilasan dan memulai kembali mDNSResponder seperti yang disebutkan bekerja untuk sementara waktu. Sementara itu akan tetap berfungsi ketika iMac dimasukkan ke mode sleep, itu akan selalu gagal setelah reboot.

Ketika flush / restart berhenti berfungsi saya mencari alasan / solusi lain dan saya menemukan bahwa itu terkait dengan firewall saya. Saya tidak tahu apa yang disebabkan oleh pengaturan firewall (OS X) saya, tetapi jika saya mengembalikan pengaturan firewall itu berfungsi.

Untuk mengembalikan pengaturan default yang saya gunakan:

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

Jelas setiap aturan khusus akan dihapus dengan pengembalian ini.

Saya ingin membagikan versi saya tentang masalah ini karena telah menyebabkan saya sedih dan kehilangan selama berbulan-bulan dan posting ini adalah koleksi terbaik dari solusi yang mungkin di internet!


4

Saya mengalami masalah ini pada Yosemite (10,10). Ternyata daemon kunci,, discoveryddimatikan karena terlalu banyak mengkonsumsi 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 

Anehnya, me-reboot tidak menyebabkannya dimulai ulang.

Saya secara manual me-restart layanan dengan:

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

dan sekarang semuanya baik-baik saja.


1
Ini adalah solusi untuk saya di Yosemite juga. Beberapa detail: host, gali, dan Chrome berfungsi dengan baik, tetapi ping, telnet, ssh, firefox, dan safari tidak dapat menyelesaikan nama host. Solusi ini memperbaiki masalah saya.
Ryan Hoegg

Mengganggu ini terjadi sepanjang waktu untuk saya. Harus me-restart layanan.
Callum Rogers

2

Saya mengalami masalah yang sama dengan 10.6.8. Perjalanan pertama ke Apple Store menghasilkan pemulihan sistem. Tapi, setelah itu, DNS rusak lagi ketika saya di luar negeri dan tidak memiliki DVD sistem. Pada saat itu saya menemukan utas ini dan menghapus /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistper @freezedpeanuts dan @Tom Thorogood.

Itu memperbaiki masalah, tetapi, luar biasa, DNS pecah untuk ketiga kalinya beberapa hari kemudian. Saya memburu gambar sistem 10.6.3 dan:

  1. Disalin /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistdari gambar sistem.
  2. sudo chown root /System/Library/LaunchDaemons/com.apple.mDNS*
  3. Di-boot ulang

Itu memperbaiki masalah.

Itu rusak secara berkala untuk saya sekarang (sebulan sekali atau lebih), dan prosedur pemulihan turun ke langkah-langkah di atas, kecuali bukannya me-reboot Anda bisa:

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


2

Harap perhatikan siapa pun yang masih memiliki masalah, Anda mungkin harus menghapus server DNS publik apa pun hingga cache dihapus.


1
Mungkin kita harus menyebutkan support.apple.com/en-au/HT203244 .
DA Vincent

@ Davidincent Beberapa tahun terlambat, tetapi tautan itu mengecewakan. Ini jelas merupakan bug Apple tetapi mereka menghubungkannya dengan kesalahan pengguna.
weberc2

2

Saya memiliki masalah yang sama dengan OP. Menggunakan alat networksetup, saya menemukan bahwa untuk nama jaringan yang diberikan, beberapa DNS yang salah telah dikonfigurasi:

networksetup -getdnsservers <networkname>

terdaftar 192.168.0.1 sebagai DNS. Menggunakan scutil --dns, saya mendapatkan hasil yang sebanding, daftar resolver # 2 yang digunakan nameserver [0]: 192.168.0.1.

Menggunakan perintah

networksetup -setdnsservers <networkname> 192.168.188.1 8.8.8.8

Saya dapat mengkonfigurasi ulang DNS untuk jaringan yang diberikan dan menyelesaikan nama-nama mesin lokal dan global ketika terhubung ke VPN.


2

Ini mungkin tidak akan membantu siapa pun, tetapi seandainya, saya tidak sengaja beberapa waktu yang lalu, membuat file di folder, ketika DNS turun untuk domain tertentu:

/ etc / resolver /

dan ini mencegah nama tertentu dari diselesaikan, dua tahun kemudian.


Terima kasih banyak, ini masalah saya. Saya telah debugging selama berjam-jam, dan ketika saya mencari di / etc / resolver saya tentu saja menemukan file yang disebut "test", dengan IP erronous ...
keyser

Persis masalah saya. Saya hanya menyadari ini setelah saya berlari scutil --dnsdan memperhatikan bahwa resolver # 8 menambahkan nameserver khusus untuk domain saya yang bermasalah. Saya pertama kali mencoba menghapusnya melalui scutilantarmuka baris perintah tetapi tidak berhasil. Dan kemudian saya entah bagaimana menemukan /etc/resolver... haleluya! Jawaban ini sangat berguna untuk menjelaskan gagasan DNS pada macOS.
Llude

2

Dalam kasus saya, semuanya baik-baik saja: mDNSResponder sedang berjalan dan bekerja, host/ nslookupbekerja, keduanya /etc/resolv.confdan networksetupmelaporkan server DNS yang benar, dll. Meskipun demikian, resolusi DNS secara umum (misalnya dengan ping) secara tak terelakkan berhenti bekerja di beberapa titik beberapa jam setelah boot

Masalah khusus ini mungkin agak tidak mungkin, tetapi saya akan mendokumentasikannya di sini sebagai jawaban.

Saya hanya memperhatikan ketika mesin mulai melambat, tetapi ada banyak proses yang identik berjalan . sensu-clientkhususnya.

Kami sudah mengkonfigurasi di launchd dengan file plist ini:

<?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>

The -bbendera untuk sensu-clientmembuat garpu ke latar belakang, bertindak sebagai daemon. Namun, semua launchdmelihat bahwa proses asli dihentikan, jadi (sesuai dengan KeepAlivebendera) itu me-restart itu. Ini menyisakan ribuan proses bercabang di latar belakang, dan bahkan launchd tidak akan lebih bijaksana dengan kenyataan bahwa itu sedang berjalan.

Saya percaya bahwa beberapa ribu proses ini (semua sensu-client, perangkat lunak yang telah kami buat konfigurasi launchd) mungkin telah secara bersamaan membuat permintaan ke mDNSResponder, secara efektif menghasilkan penolakan layanan cache cache DNS secara lokal . Membunuh proses ini dan memperbaiki plist yang diberikan ke launchd akhirnya menyelesaikan masalah.

Perbaikan plist adalah hanya untuk menghapus -bflag (background / daemonise) dari doa sensu-client. Perhatikan bahwa ini bukan kesalahan sensu; plist ini ditulis oleh seorang mantan administrator sistem di perusahaan ini.


2

Berikut adalah beberapa perintah lanjutan yang dapat membantu memecahkan masalah DNS:

  • Jalankan diguntuk mendaftar server nama root.
  • Jalankan dig example.comuntuk menjalankan pencarian DNS untuk example.comdomain.
  • Daftar port hardware Anda dengan: networksetup -listallhardwareports.
  • Memeriksa output dari paket DHCP / BOOTP bahwa klien diterima dari server DHCP / BOOTP oleh: ipconfig getpacket en0.
  • Periksa konfigurasi DNS Anda dengan: scutil --dns.
  • Memverifikasi bahwa mDNSResponderproses sedang berjalan oleh: ps wuax | grep mDNSResponder.
  • Entri terjemahan terjemahan ARP oleh: arp -ad(jalankan man arpuntuk bantuan). sumber

Untuk mDNSResponderproses debug , perintah berikut ini dapat membantu:

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

Perintah di atas akan mengirimkan SIGINFOsinyal ke proses yang akan membuang rincian debug ke dalam output log yang dapat dibaca dan dianalisis.


1

Mematikan dan menghidupkan Wi-Fi lagi membantu.

MacBook Pro dengan 10.9.1

Apalagi jika Anda mematikan wifi lalu reboot. Penundaan tambahan dan mulai tanpa koneksi IP / jaringan memastikan permintaan untuk bergabung kembali dengan jaringan memiliki peluang yang lebih baik untuk berhasil.


1
Meskipun pertanyaannya mungkin memerlukan beberapa pengeditan, masih dikatakan (pada saat menulis komentar ini) bahwa para pekerja sudah mencoba mematikan dan menghidupkan Wi-Fi lagi. Mungkin kita bisa menarik kembali jawaban ini?
DA Vincent

Saya tidak memiliki reputasi yang cukup untuk menambahkan komentar ke posting mematikan wifi dan kemudian, tapi itu berhasil untuk saya. Mencabut jawabannya akan konyol.

+1 untuk saran untuk mencoba lagi. Jawaban berganda membantu banyak orang, dan setiap router memiliki waktu tunggu dan perilaku yang berbeda.
bmike

1

Sayangnya tidak ada yang membantu saya, dan ternyata setelah satu jam mencoba mencari tahu dan memukul kepala saya di atas meja kopi .. sesuatu, entah bagaimana, di suatu tempat ... menghapus /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistfile, dan merupakan alasan saya memiliki masalah ini.

Menyadari ini ketika saya melihat pesan kesalahan ini: /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist: No such file or directory

Ini salinan versi dari El Capitan: https://gist.github.com/tripflex/e7147690d1768dc74b1dd626614573c0

Berikut kode dari intisari itu:

<?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

Ternyata, untuk menyelesaikan masalah Anda harus mengkonfigurasi domain pencarian dan menambahkannya ke bidang domain pencarian di bawah System Preferences dns configuration. Pada dasarnya, domain pencarian akan berfungsi seperti halnya .local, tetapi sebaliknya.

Anda harus mengatur domain pencarian Anda sebagai zona master di server dns Anda agar ini berfungsi.


0

Saya punya masalah serupa dengan menemukan server host. Kami memiliki 21 iMac yang berjalan dari Server (El Capitan, baru-baru ini ditingkatkan) dan hanya satu yang tidak akan mengikat. Cara mengatasinya biasanya cukup sederhana melalui Users and Groups di SysPref. Menghapus server host dan mengikat kembali, menemukan server yang tersedia di opsi dropdown, tetapi untuk beberapa alasan yang tidak diketahui server terdaftar sebagai unkown-00-00-12-34-56-78.home, yang saya temukan adalah alamat MAC dari server. Saya menjalankan ini di terminal:

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

dan

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

kembali untuk mengikat ke server di SysPref dan opsi nama server yang benar muncul sebentar dan kemudian berubah kembali menjadi "unkown-00-00-12-34-56-78.home" tepat di depan mataku!


0

Saat mengikuti perintah dari jawaban yang diterima:

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

Anda mungkin mengalami peringatan:

Operasi tidak diizinkan saat Perlindungan Integritas Sistem digunakan

Anda harus mematikannya. Seluruh instruksi di sini: https://www.howtogeek.com/230424/how-to-disable-system-integrity-protection-on-a-mac-and-why-you-shouldnt/


0

Dalam kasus saya, saya telah menginstal OpenDNS di masa lalu dan itu tidak dihapus dengan bersih. Ada beberapa proses terkait dns yang berjalan seperti DNSdnscrypt-proxy. Saya tidak bisa memaksa berhenti mereka di Activity Monitor tetapi saya bisa menghentikan mereka memulai kembali dengan menghapus file .plist di Library / LaunchDaemons.


0

Buka Pengaturan -> Jaringan -> Tingkat Lanjut -> DNS. Kemudian buat perubahan apa pun pada DNS (atur ulang entri DNS Anda, misalnya). Kemudian klik "Ok" diikuti oleh "Terapkan" di layar berikutnya. Jangan tertipu dengan berpikir bahwa perubahan tertentu yang Anda buat adalah signifikan; itu keajaiban tombol "Terapkan".

~ $  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

Apa yang berhasil bagi saya adalah menghapus semua entri server dari Server DNS dan Domain Pencarian dari:

System Preferences → Network → Advanced ... → DNS


-1

Setelah memutakhirkan dari Snow Leopard di Mac Book lama ke Mountain Lion, sistem tidak dapat menyelesaikan DNS. Pembilasan, restart, tidak ada yang membantu. Mengubah WiFi ke titik akses yang berbeda (ponsel saya) membantu.

Mountain Lion menambahkan bidang klien baru ke pengaturan jaringan DHCP. Mengisi bidang ini sepertinya membuat jalur akses wifi bahagia. Membiarkannya kosong berarti tidak ada yang berhasil, meskipun koneksi wifi sepertinya berhasil.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.