[macos] Mac OSX Lion DNS 조회 순서



Answers

호스트 파일의 도메인 우선 순위와 관련하여 일부 상황에서는 IPv4 네트워크를 통해 도메인에 도달 할 수 없다는 것을 감지하면 Lion은 도메인의 IPv6 주소를 쿼리합니다.

나는 광고 도메인을 127.0.0.1 리디렉션했기 때문에 Snow Leopard에서 전에 보지 못했던 광고를 발견했을 때 이것을 발견했습니다. 나는 wireshark를 가동하고 IPv4 A 쿼리 (IPv4)에 따라 AAAA (IPv6 DNS 레코드) 쿼리를 확인했습니다. 광고 서버는 실제로 IPv6 주소를 가지고 있으며 자신의 콘텐츠를 제공 할 수있었습니다.

이것에 대한 해결책은

::1 mydomain.com

매회마다의 입장

127.0.0.1 mydomain.com

호스트 파일의 항목.

흥미롭게도 로컬 웹 서버가 127.0.0.1:80 실행되고 브라우저가 웹 서버 (오류 또는 기타)로부터 응답을 받으면 TCP 연결이 있었음을 만족하는 것처럼 AAAA 쿼리가 발행되지 않습니다 최소한 가능합니다.

관련 메모에서 호스트 파일 (애드 블럭킹, 로컬 웹 개발 등)을 많이 사용하는 경우 자신의 로컬 DNS 확인 프로그램을 실행하는 것이 좋습니다. 매 요청마다 /etc/hosts 를 읽어야하는 데 따른 상당한 디스크 / CPU 히트가 있으므로이 파일을 매우 가볍게 유지하는 것이 가장 좋습니다.

중요한 성능 향상 외에도 dnsmasq 과 같은 것을 실행하면 얻을 수있는 이점 중 하나는 전체 최상위 도메인을 로컬 시스템으로 다시 리디렉션 할 수 있다는 것입니다. 이렇게하면 /etc/hosts 로컬로 해석 할 모든 도메인을 개별적으로 입력 할 필요없이 개발 용 전체 * .dev 네임 스페이스를 가질 수 있습니다 (예 :).

Question

Mac OSX Lion으로 업그레이드 한 후에는 / etc / hosts가 더 이상 이름 확인을 위해 처음부터 찾지 않는다는 것을 알아 냈습니다. 이로 인해 다음과 같은 몇 가지 부작용이 발생합니다.

  1. / etc / hosts의 항목이 고통스럽게 느려지는 경우
  2. 기존 도메인을 재정의 할 수 없습니다 (예 : 127.0.0.1 www.google.com).
  3. DHCP에서 검색 도메인 항목을 얻으면 .lan을 말하게하고 재미있는 사람이 localhost.lan을 다른 것으로 구성한 다음 127.0.0.1 로컬 DNS에서 더 이상 localhost에 연결할 수 없습니다.

이 행동이 의도 된 것입니까? 어떤 의미가 있습니까? 가장 중요한 점은 어떻게 이전 행동으로 돌아갈 수 있는지입니다.




Snow Leopard에서 Lion으로 이동하기 전에 다음과 같이 /etc/hosts 에 몇 가지 응용 프로그램 관련 항목이있었습니다.

127.0.0.1 foo.bar.local

업데이트 후 내 로컬 앱을로드하는 속도가 매우 느립니다. 요청이 로그 파일에 나타나기 전에 지연이 발생했음을 알았습니다. 일단 앱이 실행되면 앱 자체는 평소와 같이 빠릅니다.

이제 앱마다 두 줄이 있습니다.

127.0.0.1 foo.bar.local
::1       foo.bar.local

... 그리고 모든 것이 다시 빠릅니다.

분명히 이것은 IPv6 주소를 추가합니까? 나는 그것을 정말로 얻지 못한다. 그러나 그것은 효과적이다.




업데이트 (2) : OSX 10.10.5는 mDNSResponder 반환합니다.

업데이트 : OSX 10.10 요세미티가 mDNSResponder를 "discoveryd"로 대체했습니다. 내가 찾은 행동 w / r / t DNS 조회 및 /etc/hosts 대해 잘 모를 정도로 업그레이드되지 않았습니다.

Lion의 시스템 DNS 확인 프로그램은 mDNSResponder 프로세스입니다.

"mDNSResponder는 멀티 캐스트 DNS 응답자입니다."라고 생각할 수도 있습니다. 네가 옳아; 그것이 원래 의도했던 것이고, 여전히이 기능을 수행합니다. 그러나 최신 MacOS 버전에서는 표준 호스트 조회도 수행합니다.

Lion에서는 최소한 /etc/hosts 가 변경 될 때 자동으로 다시 읽는 것으로 보이지 않습니다. mDNSResponder 죽이고 자동으로 재시작되도록 허용하면 문제를 해결하는 것으로 보입니다.

sudo killall mDNSResponder

트릭을해야합니다.

후손을위한 나의 원래 대답은 다음과 같습니다. 어떤 경우에는 여전히 문제가 될 수도 있습니다.

/etc/hosts 파일이 유닉스 스타일의 텍스트 파일인지 확인하십시오. 줄 바꿈은 cr이 아니라 끝으로 사용됩니다.

TextWrangler 또는 유닉스 텍스트 편집기로 편집하면 파일을 보존해야합니다.

파일이 이미 엉망이라면 수정 해보십시오.

tr '\015' '\012' < /etc/hosts > /tmp/hosts.$$
mv /etc/hosts /etc/hosts.bad
mv /tmp/hosts.$$ /etc/hosts
# fix up permissions while we are at it
chown root:wheel /etc/hosts
chmod 644 /etc/hosts

이 수정 프로그램에 대한 크레딧 :

http://techpatio.com/2011/guides-how-to/fixed-mac-osx-lion-etc-hosts-bugs-dns




버그 수정이있었습니다. 내가 언급 한 많은 문제를 봤는데, 이들 중 어느 것도 현재 적용되지 않는 것처럼 보입니다 (예를 들어, 한 줄에 여러 개의 별칭을 입력하면 현재 잘 작동합니다).

어쨌든 Lion과 함께, Apple은 모든 DNS 조회를 처리하는 mDNSResponder에 약간 과감한 변경을 가한 것으로 보입니다. (적어도 Lion과 함께) 또한 / etc / hosts 캐시를 처리합니다. 나를 위해 앞으로 조회도 이제 작동합니다. 하지만 역방향 조회 (예 : google.com 대신 1.2.3.4 조회)가 작동하지 않습니다.

많은 고통 후에 mDNSResponder가이 조회를 4.3.2.1.in-addr.arpa로 변환하고 이름 조회를하는 것처럼 보입니다. 이것은 DNS가 작동하는 것을 좋아할 수도 있지만 / etc / hosts와는 전혀 작동하지 않습니다.

물론 각 호스트에 대해 4.3.2.1.in-addr.arpa의 별칭을 추가하지 않는 한 4.3.2.1은 IP 주소를 본 것과 반대 순서로 사용합니다. 이것은 나를 위해 모든 것을 고쳐줍니다. 다음은 / etc / hosts 항목의 예입니다.

1.2.3.4 foo foo.example.com alias.example.com 4.3.2.1.in-addr.arpa




와우, 얼마나 악몽인가. 나는이 주제에 대해 절대적으로 모든 것을 읽었으며, 지금까지 제안 된 모든 것들은 내가 경험했던 것과 비슷하지만, 그 해결책들 중 어느 것도 나를 위해 일하지 않았다.

그리고 나는 이유를 알아 냈습니다.

다른 사람들과 달리 / etc / hosts를 사용하여 로컬 도메인을 설정하지 않았습니다. 내 / etc / hosts 파일은 재고 였고 루프백 인터페이스 및 브로드 캐스트 호스트에 필요한 항목 만 포함되었습니다. 게다가 그것은 올바르게 인코딩 된 유닉스 파일이었다. 나는 이맥을 사용하여 명령 행에서 편집하는 사람 일 뿐이다. 그리고 선량에게 감사드립니다. 문제를 해결하기 위해 DNSmasq과 같은 자체 DNS 서버를 사용해야 할 필요가 없었습니다.

(분명히이 이슈에 나를 데려온 증상은 emacs가 시작하는데 약 10 초가 걸렸을 뿐이며, 내가 wifi에있을 때만 그렇다 .wifi를 끄면 이맥스는 예상대로 즉시 시작될 것이다.)

내 솔루션 : 내 랩톱에는 "종결 자"라는 이름이 있습니다. (네, 그 반짝이는 알루미늄 외관으로 인해 Arnold Schwarzenegger의 성격이 생겼습니다.) 기계 자체의 이름을 위해 / etc / hosts에 항목을 추가하기 만하면되었습니다.

127.0.0.1   terminator
::1         terminator

터미널에서 간단한 명령을 실행하여 내 호스트의 이름을 찾았습니다.

hostname

... 출력과 함께 나온 "종결 자". 이 두 항목을 포함하도록 / etc / hosts를 변경하면 emacs는 이제 내 랩톱 이름을 빨리 해결할 수 있습니다.

나는 이것이 누군가를 돕기를 바랍니다.




Related