OS X 10.9에서 DNS 캐시를 실제로 플러시하려면 어떻게해야합니까?


4

support.apple.com 에 따르면 OS X 10.9를 사용하고 있습니다.

sudo killall -HUP mDNSResponder

불행히도 이것은 실제로 DNS 캐시를 새로 고치지 않으며 다음과 같이 아닙니다.

dscacheutil -flushcache; sudo killall -HUP mDNSResponder

예 :

$ dig www.example.com|grep CNAME
www.example.com.    83955   IN  CNAME   example.com.

캐시가 지워지면 86400, 3600, 300 또는 60에 가까운 숫자가 도메인 이름 공급자가 제공 한 TTL 값입니다).

@dns-host발굴에 추가 하면 예상대로 작동합니다.

$ dig @ns0.transip.net www.example.com|grep CNAME
www.example.com.    60  IN  CNAME   GITHUBACCOUNT.github.io.

또한 해당 페이지에서 다른 명령을 시도했습니다. 그 동안 나는 내 서버 중 하나에 ssh'ing 하여이 문제를 해결하고 거기에서 물건을 확인합니다. 그러나 Mac에서 모든 DNS 캐시 를 실제로 새로 고치는 적절한 방법을 원합니다 . 어떻게해야합니까?


3
digOS 리졸버 (따라서 캐시)를 우회하므로 플러시 여부에 대해 알려주지 않습니다. 무엇이 되어 당신을 말하고에 대한 DNS 서버에서 캐싱, 당신은 클라이언트에서 해당 플러시 수 없습니다.
Gordon Davisson

완전히 새로운 DNS를 설정 한 다음 플러싱은 어떻습니까? 때때로 그것은 나를 위해 느슨한 것들을 망칩니다. 또한 최신 OS로 업그레이드하지 않은 경우 노력을 기울일 수 있습니다.
bmike

답변:


1

현재보고있는 효과는 컴퓨터의 캐시와 전혀 관련이 없습니다.

당신이보고있는 것은 재귀 DNS 서버 (일반적으로 ISP의 DNS 서버 또는 Google DNS 또는 이와 유사한)가 원래 TTL 값을 가져 와서 권위있는 DNS 서버에서 이러한 레코드를 검색 한 후 경과 된 시간을 뺀 것입니다.

예를 들어 example.com을 소유하고 있고 조회 할 때 TTL이 86400 인 CNAME을 제공하도록 권한있는 DNS 서버를 설정했다고 가정 해 보겠습니다. 그런 다음 임의의 시점에서 ISP의 재귀 DNS 서버에 다른 사람이 요청합니다. www.example.com에서 해당 레코드를 검색합니다. 해당 정보를 캐시합니다.

이제 @ 매개 변수없이 dig 명령을 실행합니다. 이는 요청이 /etc/resolv.conf에 나열된 서버 (일반적으로 ISP 재귀 DNS 서버)를 사용함을 의미합니다. 이제 TTL 83995로 응답을 다시 얻었습니다. 이는 원래 해당 레코드를 검색 한 후 86400-83995 = 2405 초가 지났음을 의미합니다.

이 프로세스에서는 표준 로컬 macOS DNS 캐시가 관여하지 않으므로 mDNSResponder 및 dscacheutil은 전혀 변경하지 않습니다.

그 이유는 권위있는 DNS 서버가 본질적으로 "이 정보는 86400 초 동안 유효합니다"라고 명시했기 때문입니다. 재귀 적 DNS는 신뢰할 수있는 DNS 서버가 새로운 정보를 제공하도록 변경되었는지 여부를 알지 못하므로 정보가 이제 약간 더 적은 시간 동안 만 유효하다는 것을 알려줄 수 있습니다.

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