답변:
봐 마이크 슐츠 '대답 .
우분투는 기본적으로 DNS 레코드를 캐시하지 않으므로 DNS 캐시를 설치하지 않으면 삭제할 것이 없습니다.
DNS 레코드는 공급자의 DNS 서버에 의해 캐시 될 가능성이 있으므로 DNS 변경이 성공했는지 확인하려면 dig를 사용하여 도메인 호스팅 서비스에서 DNS 서버를 조사 할 수 있습니다.
dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server
그것은 당신은 우분투 내가 설치하는 것이 좋습니다 DNS 캐싱을 시작할 pdnsd
와 함께를 resolvconf
. nscd
버그가 있으며 권장하지 않습니다.
Ubuntu 17.04 이상부터 DNS에는 systemd-resolve가 사용됩니다. 다음과 같이 systemd의 캐시를 플러시 할 수 있습니다.
sudo systemd-resolve --flush-caches
sudo systemd-resolve --statistics
systemctl restart systemd-resolved.service
에게도 18.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
데비안으로 나를 위해 속임수를
Ubuntu는 17.04 이상의 systemd-resolve를 사용하므로이 답변은 최근 Ubuntu 버전에 더 이상 적용되지 않습니다. "을 참조하십시오 우분투 17.04에 플러시 DNS 캐시를 더 높은 (18.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 서버를 설치했을 것입니다 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 서버가 될 것으로 예상되는 것)을 누르지 않으면 대신 치는 것을 확인하십시오. 제 경우에는 이것이 dnsmasq
LXC에 대한 DNS 쿼리를 다시 미러링하도록 설정되어 있음을 알 수 있지만 귀하의 경우 캐시 작업이 잘못 될 수 있습니다.
나열된 캐시를 수행 한 경우 각 캐시를 지우는 프로세스는 다양합니다.
sudo /etc/init.d/nscd reload # nscd
sudo /etc/init.d/named restart # bind9
약간 관련된 메모 에서에서 캐싱을 활성화하려면 이것을 참조하십시오dnsmasq
.
Ubuntu 12.04는 dnsmasq를 사용하여 DNS를 캐시합니다 (참조 man dnsmasq
). 캐시를 지우려면 다음을 사용하십시오.
sudo kill -HUP $(pgrep dnsmasq)
sudo killall -HUP dnsmasq
?
pkill
대신 kill
과pgrep
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
개인적으로 OpenDNS 를 사용하고 Cache Check (캐시 확인) 기능 을 사용 하여 변경 사항이 적용되는지 확인하기 위해 새로 고침을 강제 실행하지만 48 시간 이내에 사용자를 위해 새로 고침을 보장 할 수는 없습니다 .
DNS는 느린 짐승입니다. 인내심은 제정신을 유지합니다.
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를 전파하는 데 약간의 시간이 걸릴 수 있습니다.
위의 모든 답변은 이름 확인에서 한 가지 중요한 사실을 잊었습니다. 일반적으로 이름 확인을 요청하는 DNS 서버는 레코드 자체를 보유한 DNS 서버가 아닙니다 (권한있는 서버). 각 DNS 레코드에는 Time To Live 값이 제공되므로이 값으로 언급 된 시간 (초) 동안 확인 체인의 각 DNS 서버가 캐싱을 수행해야합니다. 따라서 컴퓨터에서 캐시 할 수있을뿐만 아니라 이름 조회 결과는 제어하지 않는 서버의 어딘가에 캐시됩니다.
신뢰할 수있는 이름 서버에서 항목을 작성 / 업데이트 할 때 이름 레코드 변경을 즉시 통지하는 유일한 솔루션은 TTL 값 0을 사용하는 것입니다. 그러나 이것은 각 이름 확인에 대해 서버가 적중한다는 것을 의미하며 일반적으로 등록 기관에서 허용하지 않습니다. 예를 들어, 선택할 수있는 사전 정의 된 TTL 값 목록을 제공 할 수 있습니다.
다른 도메인 이름을 관리하고 신뢰할 수있는 이름 서버에 변경 사항이 제대로 적용되도록하기 dnstracer
위해 DNS 루트의 각 서버에서 조회 결과를 표시 할 수 있는 도구를 사용하고 있습니다.
결론적으로 DNS 캐싱 솔루션이 없어도 DNS 레코드를 변경하는 순간과 PC에서 변경 사항을 볼 때까지 지연이 발생합니다. 이 지연은 레코드의 TTL과 PC와 신뢰할 수있는 이름 서버 사이의 DNS 서버 수에 크게 좌우됩니다.
12.10 우분투 상자에서 dns 캐시를 플러시하기 위해 다음 명령을 사용하여 환상적으로 작동했습니다.
sudo kill -HUP $(pgrep dnsmasq)
또 다른 유용한 신호는 SIGUSR1로 syslog에 약간의 통계를 덤프하거나 다음과 같이 참고하십시오 man dnsmasq
.
--no-daemon 모드 또는 전체 로깅이 활성화 된 경우 (-q) 캐시 내용의 전체 덤프가 이루어집니다.
pkill
대신 kill
과pgrep
나는 또한 모순을 발견했지만
https://superuser.com/a/521562
는 나를 위해 일어났다 (최신 업데이트가 설치된 우분투 13.10, 특별한 네트워크 패키지가 설치되어 있지 않음).
요컨대, 이것을 사용하십시오
sudo /etc/init.d/dns-clean
원격 우분투 서버에서 특별히 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
/etc/hosts
. 방금 내 도메인의 이전 IP 주소가 캐시되고 있다고 확신했지만 DNS 전파에 대한 인내심이 부족하여 이전에 추가 한 레코드strace ping example.com
를 제거하는 것을 잊어 버린 것만 밝혀 냈습니다/etc/hosts
.