it-swarm-ko.tech

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

방금 호스팅 한 사이트의 DNS 레코드 (ns1, ns2, ns3.myhostingcompany.com)를 업데이트했지만 도메인 등록 기관 주차 페이지가 계속 표시됩니다.

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

192
Jono

18.04 이상

마이크 슐츠의 대답 을보십시오.

11.10 이하

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

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

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

우분투가 dns 캐싱을 시작하기를 원합니다. pdnsdresolvconf을 (를) 설치하는 것이 좋습니다. nscd은 (는) 버그가 있으며 권장하지 않습니다.

64
Li Lo

12.04

Ubuntu 12.04는 network-manager에 내장 된 dnsmasq 을 사용하지만 does n't ​​dns를 캐시하므로 플러시 할 필요가 없습니다. 그 점을 증명하기 위해 내 syslog의 샘플 라인은 다음과 같습니다.

dnsmasq[2980]: started, version 2.59 cache disabled

dnsmasq을 구성 할 필요도 없습니다. 스톡 설정으로 실행하는 경우 dns를 캐싱하지 않으므로 명시 적으로 다음과 같이 설정해야합니다. buntu article 설명.

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

Sudo service network-manager restart

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

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

70
user76204

우분투 17.04 이상 (18.04)

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

Sudo systemd-resolve --flush-caches
66
Mike Shultz

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

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

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

/ usr/sbin/dnsmasq\
 --no-resolv\
 --keep-in-foreground\
 --no-hosts\
 --bind -인터페이스\
 --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.

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

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

  • 컴퓨터에서 업스트림 일부 라우터는 캐시합니다. 많은 회사 네트워크가 DNS를 캐시합니다. 많은 ISP가 실행하는 DNS 서버는 자체 캐시를 사용합니다. 네트워크 캐시를 방지하는 유일한 방법은 수동으로 새로 고칠 수있는 캐시를 사용하는 것입니다. 이것이 제가 OpenDNS를 좋아하는 이유입니다.
  • 클라이언트 응용 프로그램 (특히 브라우저)에서 응용 프로그램은 우분투가 영향을 미치지 않는 모든 종류의 자체 캐싱을 수행 할 수 있습니다. Firefox가 DNS를 캐시하는 방법 . Chrome의 DNS 캐시를 지우는 방법 . 다른 브라우저 및 응용 프로그램에는 자체 메커니즘이있을 수 있습니다.
  • 여기에서 배럴을 폐기하고 있지만 아마도 dnsmasq에서 캐싱을 설정하지 않고 우분투에 비표준 DNS 서버를 설치했을 것입니다. nscd, DJBDNS dnscache (일명 TinyDNS), pdns, pdnsd, Bind9 (및 그 변형) 등 더 많은 것들을 기억할 수 없습니다. 이것들은 아마도/etc/resolv.conf에서 증명됩니다 (/ etc/resolvconf /`의 설정으로 해당 파일을 자동 생성합니다). 다음은 로컬로 인터셉트 된 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 서버가 될 것으로 예상되는 것)을 누르지 않으면 대신 치는 것을 확인하십시오. 제 경우에는 이것이 LXC에 대해 DNS 쿼리를 다시 미러링하도록 설정된 dnsmasq임을 알 수 있지만 귀하의 경우 캐시 작업이 잘못되었을 수 있습니다.

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

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

약간 관련이있는 메모에서 dnsmasq에서 캐싱을 사용하려면 이것을 참조하십시오 .

62
Oli

12.04의 경우 :

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

Sudo kill -HUP $(pgrep dnsmasq)
39
zechariah

Sudo /etc/init.d/nscd restart

http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html

참고로 Dig를 사용하고 기본 DNS 서버 이외의 다른 사람을 찾아 DNS 변경 사항이 전파되었는지 확인하고 확인할 수 있습니다. 이 경우 Google DNS입니다.

Dig @8.8.8.8 example.com

15
Mark Davidson

개인적으로 OpenDNS 사용 하고 캐시 확인 기능 을 사용하여 변경 사항을 적용하기 위해 새로 고침을 강제하지만 보증인 48 시간 이내에 사용자를 위해 새로 고침합니다.

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

11
Oli

Nscd를 사용중인 경우 :

Sudo /etc/init.d/nscd restart

캐싱하는 OS가 아닐 수도 있습니다. Everyone 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를 전파하는 데 약간의 시간이 걸릴 수 있습니다.

7
bikesandcode

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

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

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

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

5
Benoit

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

Sudo service dns-clean
2
alphayax

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

Sudo kill -HUP $(pgrep dnsmasq)

또 다른 유용한 신호는 SIGUSR1로 syslog에 약간의 통계를 덤프하거나 man dnsmasq에서 참고 한대로 :

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

1
j0inty

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

0
Nitz

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

Sudo service dnsmasq restart
0
Volomike

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

어떻게합니까? 잘...

cd /etc/dhcp
Sudo nano dhclient.conf

이것을 삽입하십시오 BEFORE "request subnet-mask ..."줄

supersede domain-name-servers 208.67.222.222,208.67.220.220;

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

Sudo ifdown eth0 && Sudo ifup eth0

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

cat /etc/resolv.conf
0
D.Snap