ipconfig /displaydns
Windows에서는 로컬 DNS의 캐시된 콘텐츠를 발행하고 볼 수 있다는 것을 알고 있습니다 .
Linux에서 DNS의 캐시 내용을 나열하는 방법은 무엇입니까?
가능한 한 많은 크로스 배포판 솔루션을 얻고 싶습니다.
답변1
이전에는 systemd
운영 체제 수준의 DNS 캐싱이 거의 없었습니다.
이전에는 systemd
Linux(및 아마도 대부분의 Unix)에 운영 체제 수준 DNS 캐시가 없었습니다.nscd
또는dnsmasq
설치되어 실행 중입니다.
nscd
그럼에도 불구하고 최소한 데비안에서는 DNS 캐싱이 기본적으로 비활성화되어 있습니다.고장났어.
에 관해서는 dnsmasq
, 그러면캐싱이 RAM에서 발생하는 것 같습니다.기본적으로.
답변2
nscd
이름 서비스 캐시 데몬입니다. 이는 Linux, Solaris 및 기타 운영 체제에서 이름 서비스 조회를 캐시하는 데 사용되는 유틸리티입니다. 여기서 이름 서비스는 일반적인 용어이며 엄격하게 호스트 확인에만 국한되지 않고 사용자, 그룹 등도 포함됩니다.
를 사용할 수는 있지만 캐시의 실제 내용을 보는 방법을 모르겠습니다 /usr/sbin/nscd -g
.
이는 캐시가 어떤 문제를 해결하고 있는지 완전히 알려주지는 않지만 적어도 캐시가 얼마나 효율적인지 보여줍니다.
대체 캐싱 도구(예: DNSMASQ)를 사용하는 경우 다른 옵션이 있을 수 있습니다.
답변3
를 사용하면 nscd
바이너리 캐시 파일에 ASCII 문자열을 표시하여 내용(및 기타 정크)을 볼 수 있습니다. Debian/Ubuntu에서는 이 파일이 /var/cache/nscd/hosts
호스트/DNS 캐시에 사용되므로 실행하여 strings /var/cache/nscd/hosts
캐시에 있는 호스트를 볼 수 있습니다.
nscd
바이너리 형식을 디코딩하지 않고 캐시를 확인 하는 올바른 방법이 없는 것 같으므로 이것은 완전히 해킹입니다.
답변4
SIGUSR1을 systemd-resolved 프로세스로 보내면 Journalctl을 사용하여 캐시를 볼 수 있습니다.
killall -USR1 systemd-resolved && journalctl -u systemd-resolved | grep -A 100000 "CACHE:"