DNS 캐시를 지우려면 어떻게합니까?


191

난 그냥 DNS 레코드 (업데이트 ns1, ns2, ns3.myhostingcompany.com내가 호스팅있어 사이트에 대한)을,하지만 난 여전히 도메인 등록 주차 페이지를 얻을.

문제가 Ubuntu의 캐시 된 DNS 레코드인지 확인하고 싶습니다. 우분투의 DNS 캐시를 지우는 방법이 있습니까? (이런 것이 있다면?)


1
또한 확인하십시오 /etc/hosts. 방금 내 도메인의 이전 IP 주소가 캐시되고 있다고 확신했지만 DNS 전파에 대한 인내심이 부족하여 이전에 추가 한 레코드 strace ping example.com를 제거하는 것을 잊어 버린 것만 밝혀 냈습니다 /etc/hosts.
ulidtko

2
이러한 많은 답변은 기본적으로 캐싱이 비활성화되어 있지만 이전 버전도 참조합니다. 그것은 내 컴퓨터 (18.04)에서 기본적으로 켜져있는 것처럼 보이며 아래의 다양한 대답은 그것을
씻는

답변:


64

18.04 이상

마이크 슐츠 '대답 .

11.10 이하

우분투는 기본적으로 DNS 레코드를 캐시하지 않으므로 DNS 캐시를 설치하지 않으면 삭제할 것이 없습니다.

DNS 레코드는 공급자의 DNS 서버에 의해 캐시 될 가능성이 있으므로 DNS 변경이 성공했는지 확인하려면 dig를 사용하여 도메인 호스팅 서비스에서 DNS 서버를 조사 할 수 있습니다.

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

그것은 당신은 우분투 내가 설치하는 것이 좋습니다 DNS 캐싱을 시작할 pdnsd와 함께를 resolvconf. nscd버그가 있으며 권장하지 않습니다.


14
왜 nscd가 버그가 있는지에 대한 언급이 있습니까? 오늘도 여전히 버그입니까 (2012-10)?
jjmontes

3
Ubuntu 버전 11.10 이상에서 DNS 레코드를 캐시하는 것처럼 들립니다.
Martin Konecny

70

우분투 17.04 이상 (18.04)

Ubuntu 17.04 이상부터 DNS에는 systemd-resolve가 사용됩니다. 다음과 같이 systemd의 캐시를 플러시 할 수 있습니다.

sudo systemd-resolve --flush-caches

2
세상에, 나랑 결혼 해 줄래? 18.04도 내 문제를 해결했습니다. \ o /
NiKo

5
이것은 16.04 LTS에서 나에게는 효과가 없었지만 캐시 된 다른 방법을 보는 것이 유용했습니다.sudo systemd-resolve --statistics
Phil

당신은 하루를 저장
Danilo Gomes

1
18.04
LnxSlck

1
systemctl restart systemd-resolved.service에게도 18.04에서 일했다.
저스틴 산

69

12.04

dnsmasq내장 된 Ubuntu 12.04 사용 network-manager하지만 dns를 캐시 하지 않으므로 플러시 할 필요가 없습니다. syslog그 점을 증명하기 위해 내 샘플 라인이 있습니다 .

dnsmasq[2980]: started, version 2.59 cache disabled

의 구성이 필요하지 않습니다 dnsmasq. 스톡 설정으로 실행중인 경우 dns를 캐싱하지 않으므로이 우분투 기사에서 설명 하는 것처럼 명시 적으로 설정해야합니다 .

설정을 새로 고치려면 네트워킹을 비활성화했다가 활성화하거나 실행할 수 있습니다

sudo service network-manager restart

dnsmasq내장되어 있기 때문에 다시 시작 됩니다 network-manager. syslog이에 대한 증거를 확인하십시오 .

dhcp와 유선 연결을 사용하는 경우 network manager라우터에서 직접 설정을 가져오고 Ubuntu에 로그인하면 연결이 자동으로 설정됩니다. 웹 인터페이스를 통해 액세스 할 수 있으면 라우터에서 설정이 올바른지 확인하고 필요한 경우 재부팅 할 수 있습니다. dns의 일반적인 문제인 경우 isp dns 대신 Google dns를 사용해보십시오 . 자세한 내용은 여기를 참조하십시오 .


sudo service network-manager restart데비안으로 나를 위해 속임수를
썼다

61

Ubuntu는 17.04 이상의 systemd-resolve를 사용하므로이 답변은 최근 Ubuntu 버전에 더 이상 적용되지 않습니다. "을 참조하십시오 우분투 17.04에 플러시 DNS 캐시를 더 높은 (18.04) "

기본적으로 DNS는 Ubuntu <17.04에 캐시되지 않지만 네트워크 나 응용 프로그램에 캐시 될 수 있습니다.

dnsmasq캐싱 여부를 확인하려면 ps ax | grep dnsmasq실행중인 명령을 실행하십시오. 내 기본 13.10 시스템의 분류는 다음과 같습니다.

/ usr / sbin / dnsmasq \
  -해결 없음 \
  -경계 유지 \
  --no-hosts \
  -바인드 인터페이스
  --pid-file = / var / run / NetworkManager / dnsmasq.pid \
  --listen-address = 127.0.1.1 \
  --conf-file = / var / run / NetworkManager / dnsmasq.conf \
  --cache-size = 0 \
  --proxy-dnssec \
  --enable-dbus = org.freedesktop.NetworkManager.dnsmasq \
  --conf-dir = / etc / NetworkManager / dnsmasq.d

/etc/NetworkManager/dnsmasq.d기본적으로 비어 있습니다. 따라서 재정의가 없으며 확인 --cache-size=0하는 것만으로 무제한 캐시 대신 의미하는 바를 의미합니다 man dnsmasq.

-c, --cache-size=<cachesize>
  Set the size of dnsmasq's cache. The default is 150 names. 
  Setting the cache size to zero disables caching.

따라서 DNS dnsmasq 캐시 할 수 는 있지만 상자를 캐싱하지는 않습니다. 머신과 다양한 구성 디렉토리를 확인하여 동일한 페이지에 있는지 확인할 수 있습니다.

캐시 문제가 발생하면 다음 중 한 곳에서 발생할 수 있습니다.

  • 컴퓨터에서 업스트림 일부 라우터는 캐시합니다. 많은 회사 네트워크가 DNS를 캐시합니다. 많은 ISP가 실행하는 DNS 서버는 자체 캐시를 사용합니다. 네트워크 캐시를 방지하는 유일한 방법은 수동으로 새로 고칠 수있는 캐시를 사용하는 것입니다. 이것이 제가 OpenDNS를 좋아하는 이유입니다.
  • 클라이언트 응용 프로그램 (특히 브라우저)에서 응용 프로그램은 우분투가 영향을 미치지 않는 모든 종류의 자체 캐싱을 수행 할 수 있습니다. 어떻게 파이어 폭스는 DNS 캐시 . Chrome의 DNS 캐시를 지우는 방법 . 다른 브라우저 및 응용 프로그램에는 자체 메커니즘이있을 수 있습니다.
  • 여기에서 배럴을 폐기하고 있지만 아마도에서 캐싱을 켜는 대신 우분투에 비표준 DNS 서버를 설치했을 것입니다 dnsmasq. 많은이 있습니다 nscd, DJBDNS dnscache(일명 TinyDNS)는, pdns, pdnsd, BIND9 (및 그 변종), 그리고 더 난 기억이 안나요. 이것들은 아마도/etc/resolv.conf (파일을 자동 생성하기 위해 / etc / resolvconf /`에 config를 사용하여) 증명 될 것입니다 . 다음은 로컬로 인터셉트 된 DNS 쿼리를 보여줍니다.

    $ nslookup askubuntu.com
    Server:     127.0.1.1
    Address:    127.0.1.1#53
    
    Non-authoritative answer:
    Name:   askubuntu.com
    Address: 198.252.206.24
    

    8.8.8.8 (또는 DNS 서버가 될 것으로 예상되는 것)을 누르지 않으면 대신 치는 것을 확인하십시오. 제 경우에는 이것이 dnsmasqLXC에 대한 DNS 쿼리를 다시 미러링하도록 설정되어 있음을 알 수 있지만 귀하의 경우 캐시 작업이 잘못 될 수 있습니다.

    나열된 캐시를 수행 한 경우 각 캐시를 지우는 프로세스는 다양합니다.

    sudo /etc/init.d/nscd reload    # nscd
    sudo /etc/init.d/named restart  # bind9
    

약간 관련된 메모 에서에서 캐싱을 활성화하려면 이것을 참조하십시오dnsmasq .


1
ps aux | grep의 내 출력은 귀하의 것과 동일하지만 내 컴퓨터에서 DNS를 캐싱하는 것이 분명합니다. dnsmasq가 아니면 다른 것입니다. 증명 : 서버에 하위 도메인을 만들었지 만 핑할 수없고 호스트에 연결할 수 없습니다. downforeveryoneorjustme.com에서 확인한 결과 올라 갔으므로 전파 문제가 삭제되었습니다. Google의 DNS 8.8.8.8을 사용하기 때문에 라우터 나 ISP가 아닙니다. 그런 다음 컴퓨터를 다시 부팅하고 라우터가 아닌 도메인에 연결할 수있었습니다. 재부트하기 전에 수십 번을 다시 시도했지만 운이 없었습니다. 재부팅 후 호스트에 도달 한 후 먼저 시도하십시오.
matteo

그건 그렇고 내가 처음으로 같은 것을 경험 한 것은 아닙니다. 몇 달 전에 같은 일이 일어 났고 도메인에 도달 할 수있는 유일한 방법은 컴퓨터를 다시 시작하는 것이었지만 이전 Ubuntu 버전이있었습니다.
matteo

@matteo 브라우저?
Oli

아니요, 브라우저에서 핑을 테스트하지 않고 핑으로 테스트했습니다.
matteo

@matteo 더 추가했지만 아이디어가 부족합니다. 누군가 DNS를 캐시 할 수있는 더 많은 장소는 없습니다 :)
Oli

39

12.04의 경우 :

Ubuntu 12.04는 dnsmasq를 사용하여 DNS를 캐시합니다 (참조 man dnsmasq). 캐시를 지우려면 다음을 사용하십시오.

sudo kill -HUP $(pgrep dnsmasq)

감사합니다! 12.04의 기본 캐싱에 대해 언급 한 것은 처음입니다!
Tarka

6
12.04는 기본적으로 dns를 캐시하지 않습니다. 네트워크 관리자를 다시 시작한 후 syslog를 확인하십시오. dnsmasq가 cache-disabled로 시작 중임을 나타내는 항목이 있습니다.

1
캐시가 기본적으로 활성화되어 있는지 여부를 모르겠지만이 답변이 효과적이었습니다.
jeyk

왜 안돼 sudo killall -HUP dnsmasq?
James Haigh

1
사용 pkill대신 killpgrep
로버트 Siemer


11

개인적으로 OpenDNS 를 사용하고 Cache Check (캐시 확인) 기능 을 사용 하여 변경 사항이 적용되는지 확인하기 위해 새로 고침을 강제 실행하지만 48 시간 이내에 사용자를 위해 새로 고침을 보장 할 수는 없습니다 .

DNS는 느린 짐승입니다. 인내심은 제정신을 유지합니다.


+1 OpenDNS를 사용하는데 명확한 캐시는 매우 유용합니다.
Mark Davidson

OpenDNS가 의심됩니다. 처음에는 기뻤지 만 의심스러워지기 시작했습니다. ISP와 OpenDNS 중에서 선택한다면 OpenDNS를 사용하는 것이 좋습니다.
Jono

2
OpenDNS가 덜 악하다고 말하고 싶습니다. 트래픽에서 수익을 창출하고 싶지만 도메인 조회수는 적습니다.
Oli

@Oli 링크가 다운되었습니다. 여전히 사용한다면 링크를 업데이트 하시겠습니까?
Shayan

7

nscd를 사용중인 경우 :

sudo /etc/init.d/nscd restart

캐싱하는 OS가 아닐 수도 있습니다. 모두 DNS를 캐시하는 것을 좋아합니다 ... 일부 테스트 :

새 IP인지 또는 기존 IP인지 확인하십시오. 대부분의 브라우저는 DNS도 캐시하므로 Chromium을 다시 시작하지 않았거나 최신 버전이 표시되지 않는 항목을 다시 시작한 경우.

ping yourdomain.com

/etc/resolv.conf의 로컬 네임 서버를 다른 제공자 (google 또는 level)로 전환하십시오. 예 :

nameserver 8.8.8.8
nameserver 4.2.2.2

그리고 다시 핑.

라우터가 어떤 형태로든 DNS를 캐싱하지 않는지 확인하십시오. (라우터 / 펌웨어 등에 따라 다름)

마지막으로 인내. 인터넷을 통해 DNS를 전파하는 데 약간의 시간이 걸릴 수 있습니다.


2
NetworkManager를 사용하고 DHCP 임대가 만료 될 때 /etc/resolve.conf가 플러시되면 NetworkManager에서 정적 IP를 설정하여 더 오랜 시간 동안 작동하도록해야합니다.
LassePoulsen

+1 Firefox가 DNS를 캐싱하고 있다는 사실을 몰랐습니다.
wavemode

로컬 네임 서버를 구글로 전환하기위한 +1 일
Bibek Sharma

5

위의 모든 답변은 이름 확인에서 한 가지 중요한 사실을 잊었습니다. 일반적으로 이름 확인을 요청하는 DNS 서버는 레코드 자체를 보유한 DNS 서버가 아닙니다 (권한있는 서버). 각 DNS 레코드에는 Time To Live 값이 제공되므로이 값으로 언급 된 시간 (초) 동안 확인 체인의 각 DNS 서버가 캐싱을 수행해야합니다. 따라서 컴퓨터에서 캐시 할 수있을뿐만 아니라 이름 조회 결과는 제어하지 않는 서버의 어딘가에 캐시됩니다.

신뢰할 수있는 이름 서버에서 항목을 작성 / 업데이트 할 때 이름 레코드 변경을 즉시 통지하는 유일한 솔루션은 TTL 값 0을 사용하는 것입니다. 그러나 이것은 각 이름 확인에 대해 서버가 적중한다는 것을 의미하며 일반적으로 등록 기관에서 허용하지 않습니다. 예를 들어, 선택할 수있는 사전 정의 된 TTL 값 목록을 제공 할 수 있습니다.

다른 도메인 이름을 관리하고 신뢰할 수있는 이름 서버에 변경 사항이 제대로 적용되도록하기 dnstracer위해 DNS 루트의 각 서버에서 조회 결과를 표시 할 수 있는 도구를 사용하고 있습니다.

결론적으로 DNS 캐싱 솔루션이 없어도 DNS 레코드를 변경하는 순간과 PC에서 변경 사항을 볼 때까지 지연이 발생합니다. 이 지연은 레코드의 TTL과 PC와 신뢰할 수있는 이름 서버 사이의 DNS 서버 수에 크게 좌우됩니다.


물론 문제가 발생한 경우 컴퓨터를 재부팅해도 문제가 해결되지 않습니다.
matteo

2

우분투 14.04의 경우 다음 명령을 권장합니다.

sudo service dns-clean

기본 서버 설치에 없습니다. 14.04 이하에서만 작동합니다.
RJ

1

12.10 우분투 상자에서 dns 캐시를 플러시하기 위해 다음 명령을 사용하여 환상적으로 작동했습니다.

sudo kill -HUP $(pgrep dnsmasq)

또 다른 유용한 신호는 SIGUSR1로 syslog에 약간의 통계를 덤프하거나 다음과 같이 참고하십시오 man dnsmasq.

--no-daemon 모드 또는 전체 로깅이 활성화 된 경우 (-q) 캐시 내용의 전체 덤프가 이루어집니다.


사용 pkill대신 killpgrep
로버트 Siemer

1

Ubuntu 16.04에서 다음을 수행하지 않으면 캐시를 지울 수 없습니다.

sudo service dnsmasq restart

0

나는 또한 모순을 발견했지만 https://superuser.com/a/521562 는 나를 위해 일어났다 (최신 업데이트가 설치된 우분투 13.10, 특별한 네트워크 패키지가 설치되어 있지 않음).
요컨대, 이것을 사용하십시오
sudo /etc/init.d/dns-clean


0

원격 우분투 서버에서 특별히 openDNS를 권장합니다.

어떻게합니까? 잘...

cd /etc/dhcp
sudo nano dhclient.conf

"서브넷 마스크 요청 ..."줄 앞에 이것을 삽입하십시오

supersede domain-name-servers 208.67.222.222,208.67.220.220;

이렇게하면 인터페이스가 너무 빨리 재시작되어 SSH 연결이 끊어지지 않아야합니다.

sudo ifdown eth0 && sudo ifup eth0

새로운 openDNS가 올바르게 설치되어 있는지 확인하십시오

cat /etc/resolv.conf

그것은 분명히 그 질문에 대한 답이 아닙니다.
blafasel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.