pfSense 2.0rc3을 사용하고 있으며 DNS 전달자로 설정하고 “DNS 전달자에 DHCP 임대 등록”을 활성화했으며 로컬 조회를 위해 DNS 서버를 가져 오기위한 모든 설정이 이해됩니다.
Linux에서 예상대로 작동하며 특히 실행 host abc
및 ping abc
(및 다른 응용 프로그램) 실행할 수 있으며 모두 예상대로 작동합니다.
그러나 Mac OS X Lion 10.7에서는 예상대로 작동하지 않습니다. 특히, host
명령을 사용한 조회 만 작동하는 것 같습니다. 즉
$ ping abc
ping: cannot resolve abc: Unknown host
$ host abc
abc.local has address 192.168.1.128
$ ping abc.local
ping: cannot resolve abc.local: Unknown host
$ host abc.local
abc.local has address 192.168.1.128
명령을 abc
사용할 때 조회가 작동 host
하지만 왜 ping
(및 다른 응용 프로그램에서) 실패 합니까?
읽어 주셔서 감사합니다.
답변
그들이 왜 이런 변화를했는지 모르겠지만, 한동안 나를 미치게했습니다.
왜 호스트가 작동하지만 핑은 작동 하지 않는지 모르겠지만 이 두 유틸리티의 특성과 관련이 있다고 생각 합니다. 핑 (Ping)은 패킷을 다시 전송 해 줄 수있는 간단하고 매우 유용한 진단 유틸리티입니다. 호스트 이름 조회 기능은 작업의 부작용 일 뿐이며 시스템의 재귀 적 리졸버에게 전달됩니다 (링크 된 라이브러리 나 그런 종류의 항목을 확인하여 확인하지 않은 것 같습니다). 호스트의 주요 임무는 DNS 이름 확인을 수행하는 것이므로 자체 재귀 해결 프로그램을 구현합니다.
애플의 재귀 해결자는 mDNSResponder입니다. 어떤 이유로 Lion의 mDNSResponder 버전은 Snow Leopard에서와 같이 동작하려면 “-AlwaysAppendSearchDomains”명령 줄 옵션이 필요합니다.
이를 해결하는 빠른 방법은 다음과 같습니다.
sudo sed -i .orig '/ProgramArguments/,/<\/array>/ {
s/\(<string>-launchd<\/string>\)/\1\
<string>-AlwaysAppendSearchDomains<\/string>/
}' /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
(위의 마지막 두 줄부터 시작하여 두 개의 탭 문자가 있어야하지만이 작은 편집기로 탭을 삽입하는 방법을 알 수 없으므로 16 개의 공백을 추가했습니다. 작동하지만 탭은 작동합니다. 원본 파일의 간격을 더 잘 맞 춥니 다.)
이렇게하면 “-AlwaysAppendSearchDomains”인수가 mDNSResponder 시작 plist 파일에 추가되고 백업 사본을 저장하지만 실행에 의해 제어되므로 mDNSResponder를 다시 시작하도록 시스템에 지시해야합니다.
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
이제 실행중인 mDNSResponder 프로세스를 확인하면 새 인수로 실행중인 것을 볼 수 있습니다.
ps auxww | grep mDNSResponder
( http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.html 및 http://kavassalis.com/2011/07/wtf-bug로 진행합니다. -in-os-x-10-7 / 에서이 문제에 대한 답변을 찾았습니다.)
답변
host (1) 매뉴얼 페이지에서 :
Mac OS X 공지
host 명령은 Mac OS X에서 실행되는 다른 프로세스에서 사용하는 호스트 이름 및 주소 확인 또는 DNS 쿼리 라우팅 메커니즘을 사용하지 않습니다. 호스트에서 인쇄 한 이름 또는 주소 쿼리의 결과는 Mac을 사용하는 다른 프로세스에서 찾은 결과와 다를 수 있습니다 OS X 기본 이름 및 주소 확인 메커니즘. DNS 쿼리 결과는 Mac OS X DNS 라우팅 라이브러리를 사용하는 쿼리와 다를 수도 있습니다.
불행히도, host 명령이 호스트 이름을 정확하게 해석하는 방법에 대한 정보는 없습니다. 이 동작은 디버깅에 다소 유용하지 않습니다 (IMHO).
답변
기본 히스토리 … nslookup은 명령이지만 모든 리졸버 루틴을 자체적으로 구현했습니다. 다른 플랫폼의 시스템 리졸버는 nslookup과 다르게 작동했습니다. 때때로 이것은 다소 다른 결과를 낳을 수도 있습니다.
host 및 dig 명령은 nslookup의 “다시 쓰기”로 작성되었습니다. 시스템 리졸버 기능에서 정적으로 링크됩니다. 시스템 리졸버는 UNIX 또는 UNIX 계열 시스템의 표준 C 라이브러리에있는 함수 모음입니다 (Mac OS X의 경우 이러한 함수는 netdb 라이브러리의 일부 임). 이렇게하면 host 및 dig 명령은 항상 시스템 리졸버가 빌드 한 OS에 관계없이 동일한 방식으로 작동하지만 의존하지는 않습니다. 이런 식으로 시스템 리졸버가 오작동하는 경우 우수한 진단 도구입니다.
참고 : Host와 dig는 대화 할 특정 네임 서버가 없으면 /etc/resolv.conf에서 네임 서버 목록을 읽습니다. host 명령 만 /etc/resolv.conf 파일의 검색 목록을 사용합니다. dig는 그렇지 않으므로 항상 dig FQDN을 제공하여 문제를 해결해야합니다. 그렇지 않으면 두 명령 모두 충분합니다. 예를 들어, /etc/resolv.conf 파일은 사용하는 이진 파일에없는 유일한 것입니다.
mDNSresponder는 Bonjour입니다. 나는 너무 깊이 파고 들지 않았지만이 구성 설정이이를 수정하지 않았거나 적어도 직접적으로 수정하지는 않았다고 생각합니다. Mac OS X 10.9.1에서도 이와 동일한 문제가 발생했으며 mDNSresponder를 다시 시작하면 문제가 해결되었습니다. 다른 시스템에서는 10.5-> 10.8 / 10.9에서이 문제를 본 적이 없습니다. 또한 GUI 응용 프로그램은 영향을받지 않으며 ping 및 ssh와 같은 명령 줄 도구 만 손상되었습니다.
라이브러리를 조금 더 파헤칠 시간을 찾으면 더 자세한 설명을 찾을 수 있는지 알 수 있습니다.
답변
수정 프로그램 (및 나중에 필요할 경우 제거 프로그램)을 자동화하는 쉘 스크립트를 작성했습니다.
https://github.com/michthom/AlwaysAppendSearchDomains
이것은 수동으로 시스템 파일을 편집하는 것을 피할 수있는 기술이 부족한 사용자에게 제공하는 것이 었습니다.
답변
.local은 멀티 캐스트 용으로 예약되어 있습니다. .local을 사용하는 동일한 네트워크의 mDNS 및 DNS 서버는 문제가 될 수 있습니다.
답변
호스트가 .local dns 접미사를 추가하고 있습니다. 핑은 아니다. 이 불확실성을 발견하면 네트워크 시스템 환경 설정에서 .local을 기본 접미사로 추가 할 수 있으며 시스템은 호스트 이름을 확인하려고 할 때이를 추가합니다.
답변
위의 모든 것을 시도했지만 아무것도 효과가 없으면 네임 서버 와 검색 경로 를 추가 할 수 있습니다System Preferences>Network>Advance(bottom right of the window)>DNS tab
이렇게하면 /etc/resolv.conf가 업데이트 되고 ping이 작동합니다. /etc/resolv.conf 를 편집하여 검색 경로를 업데이트하는 것은 실제로 작동하지 않지만 어떤 이유로 든 작동합니다.
최신 정보:
OS가 시스템 환경 설정 분할 창 설정에 따라 파일을 다시 쓰므로 /etc/resolv.conf 편집 이 작동하지 않습니다.