DNS Çözünürlüğü Ping ve kıvrılma başarısız, ancak kazma


11

DNSMasq'ı yerel bir DNS sunucusu olarak çalıştırıyorum, bu yüzden çözebilirim *.local.pcfdev.io(burada tartışıldığı gibi PCF Dev Çevrimdışı Mac OS X ile kullanma ). Her şeyi ilk kurduğumda işe yaradı.

Benim MacBook birkaç yeniden başlatıldıktan sonra daha sonra birkaç gün, çevrimdışı iken ben gibi artık çözmek şeyler yapabilirsiniz api.local.pcfdev.iokullanarak curlveya ping. Ancak, digdoğru olanı yapar.

$ dig api.local.pcfdev.io

; <<>> DiG 9.8.3-P1 <<>> api.local.pcfdev.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46877
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;api.local.pcfdev.io.       IN      A

;; ANSWER SECTION:
api.local.pcfdev.io.    0       IN      A       192.168.11.11

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Sep  6 10:17:44 2016
;; MSG SIZE  rcvd: 53

$ curl api.local.pcfdev.io
curl: (6) Could not resolve host: api.local.pcfdev.io

Ben ekleyerek denedim -AlwaysAppendSearchDomainsbir argüman olarak /usr/sbin/mDNSResponderiçinde /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistve birlikte mDNSResponder yeniden launchctl, ama boşuna.


GÜNCELLEME 1

Doğru yerel IP'de kesinlikle bir şeyler dinleniyor:

$ nslookup api.local.pcfdev.io
Server:     127.0.0.1
Address:        127.0.0.1#53

Name:   api.local.pcfdev.io
Address: 192.168.11.11

$ ping api.local.pcfdev.io
ping: cannot resolve api.local.pcfdev.io: Unknown host

$ telnet 192.168.11.11 80
Trying 192.168.11.11...
Connected to 192.168.11.11.
Escape character is '^]'.

HTTP/1.1 400 Bad Request

Connection closed by foreign host.

GÜNCELLEME 2

Aşağıdaki DNS sunucularını Ağ Tercihleri ​​dışında kaldırma önerisini denedikten sonra 127.0.0.1hiçbir şeyi çözemiyorum. Bazı hata ayıklama günlüğü almak başardı mDNSResponder:

mDNSResponder[91]:  74: DNSServiceCreateConnection START PID[32612](ping)
mDNSResponder[91]:  74: Error socket 75 created 00000000 00000001
mDNSResponder[91]:  74: DNSServiceQueryRecord(15000, 0, api.local.pcfdev.io., Addr) START PID[32612]()
mDNSResponder[91]:  74: Error socket 75 closed  00000000 00000001 (0)
mDNSResponder[91]:  74: DNSServiceQueryRecord(api.local.pcfdev.io., Addr) ADD    0 api.local.pcfdev.io. Addr
mDNSResponder[91]:  74: Cancel 00000000 00000001
mDNSResponder[91]:  74: DNSServiceQueryRecord(api.local.pcfdev.io., Addr) STOP PID[32612]()
mDNSResponder[91]:  74: DNSServiceCreateConnection STOP PID[32612](ping)

Ayrıca önerilen cevapta açıklandığı gibi gözlemledim nslookupve dighiçbir şey tarafından oturum açmasına neden değil mDNSResponder, ancak diğer araçlar ( ping, curl) yapar.

Bu yüzden ya herhangi bir nedenden dolayı dnsmasqçalışmıyor (TCP bağlantısı kurabilirim 127.0.0.1:53) ya mDNSResponderda kullanmıyor gibi görünüyor.


GÜNCELLEME 3

etc/resolve.confwifi bağdaştırıcım etkin olduğunda varlığını durdurur, ancak bir ağa bağlı değilim. Bu nedenle CLI araçları yerel dnsmasqsunucuyu kullanmıyor olabilir mi?


Ağ bağdaştırıcınız şans eseri mi? Sistem Tercihleri'nde 'Ağ'a giderseniz, bağdaştırıcının yanında, dnsmasq'ın kullanım için yapılandırıldığı yeşil bir nokta var mı?
mango

Şey, wi-fi olmayan bir trendeyim, muhtemelen.
EngineerBetter_DJ

1
Özellikle, wifi adaptörü kapalı mı? Eğer öyleyse, (aslında internete bağlı olmasa bile) wifi adaptörü açıkken tekrar deneyin. Kurulumun çalışması için, dnsmasq'in kullanılan ağ arabiriminde bir DNS sunucusu olması gerekir .
mango

Bunu izlemeye çalıştığınız için teşekkürler. Ben de bununla mücadele ediyorum, neden "kıvırmak foo: 8989" ev sahibi bulamıyorum ama "kazmak foo" olabilir anlamıyorum. Evet, "kıvırmak 172.20.0.17:8989" iyi çalışıyor. Senin gibi Wi-Fi ağı DNS 127.0.0.1 (docker kapsayıcısında çalışan bir dnsmasq) olarak ayarlanmış. Mevcut durumda FWIW, sorun bağlandığım wifi ağına özgüdür - kişisel hotspot'umda iyi çalışıyor, sorun bir kahve dükkanında wifi.
jamshid

Söz konusu programları tersine değiştirmedim, ancak beklentilerim tamamen farklı DNS çözüm kodu tabanlarını çağırıyorlar ve bu yüzden kırılma görüyorsunuz - bazıları yerel olarak işaret ediyor, diğerleri değil. Muhtemelen içine kazmak istiyorum curlveya wgetveya araçların içinde / profilci / ayıklayıcısını onları almak ve gerçekten çözümleme hatası olamazdı neden neler olduğunu görmek.
bmike

Yanıtlar:


12

Aynı sorun vardı. Yerel DNS önbelleğinin önceki testlerimden kötü verileri olduğunu düşünüyorum. Hızlı bir şekilde şu şekilde giderildi:

sudo killall -HUP mDNSResponder

1
Bunu fark ettim pingve digbazen farklı IP adresleri (genellikle split horizon DNS ile) döndürdüm ve bu komut onu düzeltir. Kök neden ne yazık ki emin değilim.
James

7

bir yandan dig ve diğer yandan curl / ping farklı ana bilgisayarlardan veri alıyor:

dig bir veritabanı sunucusu için bir DNS sunucusunu (yerel durumda yerel sunucunuz (127.0.0.1)) sorgular: FQDN api.local.pcfdev.io ile ilgili IP adresi. Ana bilgisayarın kendisi çalıştırmak veya hatta var olmak zorunda değildir.

curl / ping , bir IP adresini mDNSResponder ile veya başka bir yolla çözmeye çalışın ve son olarak uzak ana bilgisayarda çalışın / etkileşim kurun. 192.168.11.11 ana bilgisayarı çalışmazsa veya hiç yoksa, her ikisi de başarısız olur.

Şimdi, DNS girişi yanlış (api.local.pcfdev.io'nun 192.168.11.11'den başka bir IP'si var) veya DNS girişi doğru, ancak ana bilgisayar 192.168.11.11 çalışmıyor.


/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist içindeki / usr / sbin / mDNSResponder öğesine argüman olarak -AlwaysAppendSearchDomains öğesinin eklenmesi önerilmez. Bunun yerine /Library/Preferences/com.apple.mDNSResponder.plist'e (kaynak:) eklemeniz gerekir :man mDNSResponder

MDNSResponder'ın OS X 10.11 (El Capitan) ve sonraki sürümlerde başlatıldığında bu isteğe bağlı bağımsız değişkenlerle çalışmasına neden olmak için, AlwaysAppendSearchDomains veya NoMulticastAdvertisements boolean anahtarlarını /Library/Preferences/com.apple.mDNSResponder.plist içinde true olarak ayarlayın ve yeniden başlatın.

Sizin durumunuzda bu anahtarı ayarlamak hiç gerekli değildir, çünkü bu sorunun sebebi değildir.


VirtualBox'a girdikten sonra, PCF Dev (VM'de oturum açmaya çalışan bazı "yanlış kimlik bilgileri" ile art arda başarısız) ve dnsmasq Ben DNS sorgularını sadece dnsmasq'a devolve etmenizi tavsiye ederim:

  • Sistem Tercihleri> Ağ> Arayüz> DNS sunucusu altında 127.0.0.1 dışındaki tüm DNS sunucularını kaldırın ve değişiklikleri uygulayın. Ayrıca yalnızca 127.0.0.1 kurulumuyla ikinci bir Konum yapılandırabilir ve geçerli DNS sunucunuzu diğer yapılandırmada tutabilirsiniz.
  • içerikle /usr/local/etc/resolv.dnsmasq.conf dosyasını ekleyin

    #use your preferred DNS servers here. In the example I use some Google name servers
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    
  • resolv-file=/usr/local/etc/resolv.dnsmasq.conf/usr/local/etc/dnsmasq.conf dosyasının ~ 46. satırına ekleyin
  • address=/.local.pcfdev.io/192.168.11.11/usr/local/etc/dnsmasq.conf dosyasının ~ 80'ine / 80'ine / satırına ekleyin veya taşıyın
  • dnsmasq'ı şununla yeniden başlat:

    sudo launchctl stop homebrew.mxcl.dnsmasq
    sudo launchctl start homebrew.mxcl.dnsmasq
    

cevaplamak için zaman ayırdığınız için teşekkür ederiz. Kesinlikle dinleyen bir şey var 192.168.11.11; bilgi için gerçek genel DNS girişi *.local.pcfdev.ioher zaman aynı yerel IP'yi gösterir, bu yüzden bilgi kaynaklarına bağlanır bağlanmaz bu DNS sunucusundan curlbir yanıt almalı ve hangi IP adresini kullanacağını anlayabilmelidir.
EngineerBetter_DJ

1
Bu gibi görünüyor curl, pingve diğer ikili I (kullanmıyor DNS girdilerini ararken biri araçlarını kullanırken bu şeyi vurmak istiyorum dnsmasqlocalhost sunucu) ve nslookupve digbaşka araçlar kullanıyor. MDNSResponder hakkında daha fazla şey öğrenmem gerekiyor sanırım!
EngineerBetter_DJ

@EngineerBetter Sistem Tercihleri> Ağ> Arayüz> DNS'de 127.0.0.1 dışında başka girişiniz var mı? - Tüm paketi (VBox, PCF Dev vb.) Kuracağım ve bunu kontrol edeceğim ... Herhangi bir özel yapılandırma var mı?
klanomath

Bu konuda bana yardımcı olmak için zaman ayırdığınız için tekrar teşekkür ederiz. Soru güncellendi, hala şansı yok.
EngineerBetter_DJ

0

Bunu çözmem gerektiğinden çok daha uzun sürdü. MDNSResolver'ı diğer iş parçacıklarında önerildiği gibi düzinelerce kez yeniden başlattıktan sonra:

sudo killall -HUP mDNSResponder

Sonunda başka bir şey denedim. Kablosuz bağlantıyı devre dışı bıraktım ve tercih ettiğim tüm ağlarımı sildim. Sonra Wi-Fi bağlantısını yeniden kurdum ve her şey yolunda gitti:

  1. Apple menüsü -> Sistem Tercihleri ​​-> Wi-Fi (solda)
  2. 'Kablosuz'u Kapat' ve ardından 'Gelişmiş'i seçin
  3. Sorun yaşadığınız Kablosuz bağlantıyı (veya isterseniz tümünü) silin. Silmek istediğiniz Wi-Fi ağını seçip "-"
  4. 'Uygula'yı ve' Tamam'ı tıklayın
  5. Kablosuz'u tekrar açın.
  6. Kablosuz ağınızı seçin ve tekrar giriş yapın.

YMMV, ama sonunda benim için işe yaradı. Muhtemelen denediğim ilk şey olmalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.