핑 및 컬에 대한 DNS 확인 실패


11

DNSMasq를 로컬 DNS 서버로 실행하고 있으므로 해결할 수 있습니다 *.local.pcfdev.io( Mac OS X에서 오프라인으로 PCF 개발 사용 참조). 내가 처음 설정할 때 모든 것이 효과가있었습니다.

내 맥북의 몇 다시 시작 후 나중에 며칠은 오프라인 동안 내가 좋아하는 더 이상 확인 것들을 할 수있는 api.local.pcfdev.io사용 curl또는 ping. 그러나 dig옳은 일을합니다.

$ 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

나는 추가 해봤 -AlwaysAppendSearchDomains에 인수로 /usr/sbin/mDNSResponder/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist와 함께에는 mDNSResponder를 다시 시작 launchctl하지만 아무 소용.


업데이트 1

올바른 로컬 IP에서 듣는 것이 분명히 있습니다.

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

업데이트 2

를 제외한 네트워크 환경 설정에서 모든 DNS 서버를 제거하라는 제안을 시도한 후에는 127.0.0.1아무것도 해결할 수 없습니다. 나는 디버그 로그를 얻지 못했다 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)

나는 또한 제안 된 답변에 설명 된대로 것을 관찰 않았다 nslookupdig의해 기록되는 것도 발생하지 않습니다 mDNSResponder,하지만 다른 도구 ( ping, curl) 않습니다.

따라서 어떤 이유로 든 dnsmasq작동하지 않거나 (TCP 연결을 설정할 수 있음 127.0.0.1:53) mDNSResponder사용하지 않는 것 같습니다.


업데이트 3

etc/resolve.confWi-Fi 어댑터가 활성화 되어도 존재하지 않지만 네트워크에 연결되어 있지 않습니다. 이것이 CLI 도구가 로컬 dnsmasq서버를 사용하지 않는 이유 일 수 있습니까?


네트워크 어댑터가 우연히 다운 되었습니까? 시스템 환경 설정에서 '네트워크'로 이동하면 어댑터 옆에 dnsmasq가 사용되도록 구성된 녹색 점이 있습니까?
망고

글쎄, 나는 Wi-Fi가없는 기차를 타고있을 것입니다.
EngineerBetter_DJ

1
특히, 와이파이 어댑터가 꺼져 있습니까? 그렇다면 Wi-Fi 어댑터를 켠 상태에서 다시 시도하십시오 (실제로 인터넷에 연결되어 있지 않더라도). 설정이 작동하려면 dnsmasq가 사용중인 네트워크 인터페이스의 DNS 서버 여야합니다 .
망고

이 문제를 추적 해 주셔서 감사합니다. 나는 또한 이것으로 어려움을 겪고 있는데 왜 "curl foo : 8989"가 호스트를 찾을 수 없지만 "dig foo"는 찾을 수 없는지 이해하지 못한다. 예, "curl 172.20.0.17:8989"는 정상적으로 작동합니다. 당신은 Wi-Fi 네트워크 DNS를 127.0.0.1 (dockmas 컨테이너에서 도커 컨테이너로 실행)으로 설정했습니다. 현재 상황에서 문제는 내가 연결하는 Wi-Fi 네트워크에만 국한된 것입니다. 개인 핫스팟에서 잘 작동하고 문제는 커피 숍 Wi-Fi에 있습니다.
jamshid

문제의 프로그램을 리버스 엔지니어링하지는 않았지만 완전히 다른 DNS 확인 코드베이스를 호출하고 있기 때문에 파손이 발생합니다. 일부는 로컬을 가리키고 다른 일부는 그렇지 않습니다. 아마 파고 것 curl또는 wget나 악기 / 프로파일 러 / 디버거를 얻을 정말이 해결 오류 없었던 원인 무슨 일이 일어나고 있는지를 참조하십시오.
bmike

답변:


12

이 같은 문제가 있었다. 로컬 DNS 캐시에 이전 테스트의 데이터가 잘못되었다고 생각합니다. 다음과 같이 신속하게 수정되었습니다.

sudo killall -HUP mDNSResponder

1
나는 것으로 나타났습니다 pingdig다른 경우 (일반적으로 수평 분할의 DNS와) IP 주소와이 명령 수정을 반환합니다. 근본 원인은 불행히도 확실하지 않습니다.
James

7

한편으로는 발굴 하고 다른 한편으로는 컬 / 핑 은 다른 호스트에서 데이터를 검색합니다.

dig 는 DNS 서버 (여기서는 로컬 호스트 (127.0.0.1))에 데이터베이스 항목 (FQDN api.local.pcfdev.io와 관련된 IP 주소)을 쿼리합니다. 호스트 자체를 실행할 필요가 없거나 전혀 존재하지 않습니다.

curl / ping 은 mDNSResponder 또는 다른 방법으로 IP 주소를 해결하고 마지막으로 원격 호스트에서 작동 / 상호 작용합니다. 호스트 192.168.11.11이 실행되지 않거나 전혀 존재하지 않으면 둘 다 실패합니다.

이제 DNS 항목이 잘못되었거나 (api.local.pcfdev.io에 192.168.11.11 이외의 다른 IP가 있음) DNS 항목이 정확하지만 호스트 192.168.11.11이 실행되고 있지 않습니다.


/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist의 / usr / sbin / mDNSResponder에 인수로 -AlwaysAppendSearchDomains 를 추가 하지 않는 것이 좋습니다. 대신 /Library/Preferences/com.apple.mDNSResponder.plist (소스 :)에 추가해야합니다 .man mDNSResponder

OS X 10.11 (El Capitan) 이상에서 시작할 때 mDNSResponder가 이러한 선택적 인수와 함께 실행되게하려면 /Library/Preferences/com.apple.mDNSResponder.plist에서 AlwaysAppendSearchDomains 또는 NoMulticastAdvertisements 부울 키를 true로 설정하고 재부팅하십시오.

귀하의 경우 문제의 원인이 아니기 때문에이 키를 설정할 필요가 없습니다.


VirtualBox, PCF Dev (VM에 로그인하려고 시도하는 일부 "잘못된 자격 증명"으로 반복해서 실패)와 dnsmasq에 파고 들고 난 후에 DNS 쿼리를 dnsmasq로만 전환하는 것이 좋습니다.

  • 시스템 환경 설정> 네트워크> 인터페이스> DNS 서버에서 127.0.0.1을 제외한 모든 DNS 서버를 제거하고 변경 사항을 적용하십시오. 127.0.0.1 전용 설정 으로 두 번째 위치 를 구성하고 현재 DNS 서버를 다른 구성으로 유지할 수도 있습니다.
  • 내용에 /usr/local/etc/resolv.dnsmasq.conf 파일을 추가하십시오

    #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의 ~ 46 행에 추가하십시오
  • address=/.local.pcfdev.io/192.168.11.11/usr/local/etc/dnsmasq.conf의 ~ 80 줄에 추가 또는 이동
  • 다음을 사용하여 dnsmasq를 다시 시작하십시오.

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

답변 해 주셔서 감사합니다. 분명히 듣고있는 것이 있습니다 192.168.11.11. 에 대한 실제 공용 DNS 항목은 *.local.pcfdev.io항상 동일한 로컬 IP를 가리 키므로 웹에 연결하자마자 해당 DNS 서버 curl에서 응답을 받아야하며 사용할 IP 주소를 파악할 수 있습니다.
EngineerBetter_DJ

1
그것은 것 같아 curl, ping그리고 다른 바이너리 I합니다 (사용하지 않는 DNS 항목을 찾는 중 하나 개 수단을 사용하는이 일에 충돌 할 dnsmasq로컬 호스트 서버) 및 nslookupdig다른 수단을 사용하고 있습니다. mDNSResponder에 대해 더 많이 알아야 할 것 같습니다!
EngineerBetter_DJ

@EngineerBetter 시스템 환경 설정> 네트워크> 인터페이스> DNS에 127.0.0.1 이외의 다른 항목이 있습니까? -전체 제품군 (VBox, PCF Dev 등)을 설치하고 이것을 확인하겠습니다.
klanomath

시간을내어 도움을 주셔서 다시 한 번 감사드립니다. 아직 운이없는 질문이 업데이트되었습니다.
EngineerBetter_DJ

0

이 문제를 해결하는 데 필요한 시간보다 훨씬 오래 걸렸습니다. 다른 스레드에서 권장하는대로 mDNSResolver를 수십 번 다시 시작한 후 :

sudo killall -HUP mDNSResponder

나는 마침내 다른 것을 시도했다. Wi-Fi를 비활성화하고 선호하는 모든 네트워크를 삭제했습니다. 그런 다음 Wi-Fi 연결을 다시 설정하고 모든 것이 정상적으로 작동했습니다.

  1. Apple 메뉴-> 시스템 환경 설정-> Wi-Fi (왼쪽)
  2. 'Wi-Fi 끄기'를 선택한 다음 '고급'을 선택하십시오.
  3. 문제가있는 Wi-Fi 연결 (또는 원하는 경우 모두 연결)을 삭제하십시오. 삭제하려는 Wi-Fi 네트워크를 선택하고 "-"를 눌러이를 수행하십시오.
  4. '적용'과 '확인'을 클릭하십시오
  5. Wi-Fi를 다시 켜십시오.
  6. Wi-Fi 네트워크를 선택하고 다시 로그인하십시오.

YMMV, 그러나 이것이 마침내 나를 위해 일한 것입니다. 아마도 내가 시도한 첫 번째 일 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.