CentOS 6에서 로컬 DNS 캐시를 플러시하는 방법을 찾고 있습니다.
시스템은 DNS 서버 등을 실행하지 않고 있으며 모든 DNS 쿼리를 구성된 이름 서버로 전송하고 싶습니다. 심지어 중복 쿼리도 마찬가지입니다.
service nscd restart
내가 온라인에서 찾은 것의 대부분은 무엇을 해야 하는지 , 다시 로드해야 하는지 또는 무엇을 해야 하는지 알려줍니다 nscd -i hosts
. 그러나 아무도 캐시를 플러시하지 않는 것 같습니다.
그래서 내가 어떻게 이 일을 할 수 있는지 아는 사람이 있는지 궁금했습니다. 커널에서 일종의 스위치를 켜야 합니까? 어느 쪽이든 해결될 것입니다.
답변1
DNS 요청을 캐시하는 것은 로컬 시스템이 아니라 /etc/resolv.conf
캐시에서 사용하는 DNS 확인자입니다.
캐시된 쿼리 응답을 받지 않으려면 다음을 수행하세요.
파서를 변경하십시오.
$ dig @<resolve-ip> www.google.com
DNS 서버에 연결할 수 있으면 확인자에서 DNS 캐시를 플러시합니다.
$ sudo /etc/init.d/bind restart
답변2
클라이언트 컴퓨터에서 DNS 캐시를 플러시하거나 플러시한 후에도 작동하지 않으면 서버나 클라이언트 컴퓨터가 NIS 서버에 바인딩되어 있는지 확인하고(예인 경우) "hosts: files nis dns"를 변경해야 합니다. /etc/nsswitch.conf 파일의 "hosts: files dns nis" 항목에 대한 NIS 마스터 서버 호스트 목록의 IP 주소를 변경합니다.
답변3
나는 이것이 시스템 캐시 응답이 아니라고 거의 확신합니다. 해당 부분(시스템 캐시)은 nscd
데몬에 의해서만 처리됩니다. 데몬을 다시 시작(또는 완전히 중지)하면 이름 서비스 요청에 대한 운영 체제의 응답 캐시가 재설정되거나 지워집니다.
포트 53에 설정한 사용자 정의 리스너가 상황을 상당히 혼란스럽게 만들기는 하지만 두 가지 가능성을 제시하겠습니다.
- A) 시스템은 쿼리 업스트림을 발행하지만 즉각적인 업스트림 이름 확인자는 설정되거나 기록된 TTL을 기반으로 응답을 캐싱합니다.
- B) 사용자 정의 리스너는 응답을 내부적으로 캐시하고 캐시 시간이 만료되기 전에 다시 요청하면 시스템에 직접 반환합니다.
답변4
CentOS 7을 사용하는 사람의 경우:
systemctl restart NetworkManager