Tutoriel Linux

리눅스에서 DNS 캐시를 초기화하는 방법: 시스템 전체를 재시작하지 않고 캐시를 지우는 방법

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

DNS 항목을 변경하고, 서비스를 재시작하고, 연결을 테스트했는데도 Linux 시스템이 이전 결과를 계속 확인하는 경우가 있습니다. 이런 경우 서버 전체를 재시작하는 것은 적절한 해결책이 아닌 경우가 많습니다. 로컬 DNS 캐시는 시스템을 종료하지 않고도 깔끔하게 삭제할 수 있는 경우가 대부분입니다.

중요한 것은 아는 것이다. 캐시는 누가 보관하는가배포 방식에 따라 다음과 같은 상황을 접할 수 있습니다. systemd-해결됨DNS 플러그인이 포함된 NetworkManager nscd, 에이 dnsmasq 로컬 DNS 캐시가 없거나, 아예 활성화된 로컬 DNS 캐시가 없는 경우입니다.

간단한 방법을 제안합니다. 먼저 리졸버를 식별하고, 해당 캐시를 지운 다음, 로컬 캐시, 공용 DNS, 애플리케이션 캐시를 혼동하지 않았는지 확인하십시오.

Tux는 서버 및 추상 네트워크 기호가 포함된 Linux DNS 캐시를 정리합니다.
서버를 재시작하기 전에 로컬 DNS 확인자를 식별하고 관련 캐시만 지우십시오.

먼저 사용된 리졸버를 확인하십시오.

임의의 명령어를 실행하기 전에 컴퓨터가 이름을 어떻게 해석하는지 확인하십시오. 첫 번째 확인은 다음 명령어를 사용하여 수행합니다. /etc/resolv.conf :

ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
cat /etc/resolv.conf

만약 파일이 systemd 경로를 가리킨다면 예를 들어 /run/systemd/resolve/stub-resolv.conf당신은 사용할 가능성이 높습니다 systemd-해결됨다음으로 확인하세요.

systemctl is-active systemd-resolved
해결 상태

일부 시스템에서는 NetworkManager가 DNS도 관리합니다. 상태를 확인해 보세요.

systemctl is-active NetworkManager
nmcli 일반 상태

구형 서버를 관리하는 경우 다음 사항도 확인하십시오. nscd 또는 dnsmasq 회전:

systemctl is-active nscd
systemctl is-active dnsmasq

이 단계는 흔히 발생하는 실수, 즉 캐시를 지우는 것을 방지합니다. systemd-해결됨 해당 시스템이 이 서비스를 사용하지 않는 동안에는 Linux가 사용자의 명령을 무시하는 것으로 간주할 수 있습니다.

resolvectl 명령어를 사용하여 systemd-resolved 캐시를 지우세요.

최근 배포판에서 가장 깔끔한 명령어는 일반적으로 다음과 같습니다. 해결하다먼저 해결 프로그램의 통계를 살펴보세요.

분석 통계

그런 다음 로컬 DNS 캐시를 지울 수 있습니다.

sudo resolvectl flush-caches

문서화 해결하다 분명히 나타냅니다. 플러시 캐시 이 명령은 서비스가 로컬에서 유지하는 DNS 레코드를 삭제합니다. 이는 네트워크 재부팅이 아니며, 바로 그 점이 이 명령의 목적입니다.

제대로 확인하려면 카운터를 재설정하고, 문제 해결을 실행한 다음 통계를 검토하면 됩니다.

sudo resolvectl reset-statistics
resolvectl query www.linuxencaja.net
분석 통계

만약에 해결하다 존재하지 않습니다. 일부 배포판에서 이전 이름을 시도해 보세요.

systemd-resolve --통계
sudo systemd-resolve --flush-caches

나는 아직도 선호한다 해결하다 이용 가능할 때 그렇습니다. 현재 주문 순서는 대략 이렇습니다. systemd-해결됨.

NetworkManager가 DNS를 관리하는 경우

NetworkManager가 설치된 Linux 시스템 또는 서버에서 캐시는 사용 중인 DNS 플러그인과 연결될 수 있습니다. NetworkManager에서 관리하는 DNS 구성을 수정했다면 먼저 DNS 재로드를 요청하십시오.

sudo nmcli general reload dns-full

참조 nmcli 설명하다 dns-full 예를 들어 DNS 플러그인을 재시작하는 것과 같은 방법입니다. 이는 NetworkManager가 플러그인을 사용하는 경우에 유용합니다. dnsmasq 아래의 파일로 /etc/NetworkManager/dnsmasq.d/.

다음으로, 해상도가 예상 서버를 통해 제대로 전송되고 있는지 확인하십시오.

nmcli device show | grep -E 'DNS|DOMAIN'
해결 상태

원격 시스템에서 NetworkManager를 무턱대고 재시작하지 마십시오. systemctl restart NetworkManager 이로 인해 네트워크 연결이 끊어질 수 있습니다. SSH로 연결된 경우 백업 콘솔이나 이미 열려 있는 세션을 유지하십시오. 시스템 서비스와 마찬가지로, 특히 서버에서는 작업을 수행하기 전에 반드시 확인하십시오.

네트워크 설정을 변경하기 전에 활성화된 서비스를 확인해야 하는 경우, 다음 문서를 참조하세요. systemctl과 리눅스 서비스 목록 이 단계가 성공적으로 완료되었습니다.

nscd 또는 dnsmasq가 해당 문제를 숨기고 있다면, 해당 프로그램의 설정을 삭제하세요.

nscd DNS에만 사용되는 것은 아닙니다. 다음을 포함한 여러 NSS 데이터베이스를 캐시할 수 있습니다. 호스트서비스가 활성화된 경우 호스트 캐시만 무효화할 수 있습니다.

sudo nscd -i hosts

페이지 nscd(8) 이 무효화 옵션은 문서화되어 있습니다. 서비스 상태에 대해 궁금한 점이 있으면 다음을 참조하세요.

systemctl status nscd --no-pager
journalctl -u nscd -b --no-pager

을 위한 dnsmasq해당 사례는 구성에 따라 다릅니다. 실제 서비스를 실행하는 서버에서는 그렇습니다. dnsmasq서비스를 재시작하면 캐시가 지워집니다.

sudo systemctl restart dnsmasq
systemctl status dnsmasq --no-pager

만약에 dnsmasq NetworkManager에서 플러그인으로만 사용되므로 다른 방법을 사용하십시오. nmcli 일반 재로드 dns-full잘못된 서비스를 재시작해도 아무런 변화가 없거나, 엉뚱한 층에서 시간만 낭비할 수 있습니다.

로컬 캐시가 실제로 문제였는지 확인하십시오.

캐시를 지운 후 시스템 측에서 해상도를 테스트하십시오.

getent hosts www.linuxencaja.net
resolvectl query www.linuxencaja.net

만약 당신이 파기 또는 송곳또한 공개 리졸버와 비교해 보세요. 데비안이나 우분투에서는, 파기 보통 패키지에서 나옵니다. dnsutils :

www.linuxencaja.net을 디지하세요
발굴 @1.1.1.1 www.linuxencaja.net

공용 리졸버가 여전히 이전 IP 주소를 반환한다면, 리눅스 머신이 원인은 아닐 가능성이 높습니다. DNS TTL, ISP 캐시 또는 불완전한 전파가 원인일 수 있습니다. 로컬 캐시를 삭제한다고 해서 인터넷 전체에서 이전 응답이 삭제되는 것은 아닙니다.

또한 애플리케이션도 고려해야 합니다. 브라우저, 프록시, 런타임 또는 컨테이너는 자체 캐시 또는 해상도를 유지할 수 있습니다. 만약 셸은 정상적으로 작동하지만 브라우저가 계속 오류를 일으킨다면, 문제는 더 이상 특정 수준의 문제가 아닐 수 있습니다. systemd-해결됨.

DNS 확인이 여전히 이상하면 로그를 확인하십시오.

해결 방법이 일관되지 않을 경우, 실제로 사용 중인 서비스의 로그를 확인하십시오. systemd-해결됨 :

journalctl -u systemd-resolved -b --no-pager

NetworkManager의 경우:

journalctl -u NetworkManager -b --no-pager

또한 전체 네트워크 상태를 확인하십시오. 잘못된 경로, 접근할 수 없는 DNS 서버 또는 지나치게 엄격한 방화벽으로 인해 캐시가 차단된 것처럼 보일 수 있습니다.

IP 경로
resolvectl dns
도메인 해결
ss -lntup

기기에서 실제로 어떤 부분이 도청하고 있는지 확인하고 싶다면, 다음 가이드를 참고할 수 있습니다. Linux에서 ss 및 netstat 명령어를 사용하여 포트를 엽니다.주소 변경 후 발생하는 문제에 대해서는 다음 글을 참조하십시오. Debian에서 고정 IP 주소 설정 네트워크 기반을 제대로 재구축하는 데에도 도움이 될 수 있습니다.

재시작하기 전에 하는 정리 작업

일반적인 리눅스 시스템에서는 보통 다음과 같은 순서를 따릅니다.

  • 읽다 /etc/resolv.conf 그리고 리졸버를 식별합니다.
  • 확인하다 systemd-해결됨네트워크관리자, nscd 또는 dnsmasq ;
  • 관련 캐시만 지웁니다.
  • 테스트하다 getent 호스트, 해결 쿼리 또는 파기 ;
  • 네트워크 서비스를 재시작하기 전에 로그를 확인하십시오.
  • NetworkManager 또는 전체 시스템을 재시작하는 것은 최후의 수단으로만 사용하십시오.

원격 서버에 접속 중이라면 더욱 주의해야 합니다. 로컬 DNS 캐시를 지우는 것은 간단한 작업이지만, 네트워크 서비스를 재시작하는 것은 훨씬 더 복잡합니다. 세션을 열어둔 상태에서 로그를 확인하세요. 저널다른 작업을 하기 전에 셸에서 해상도를 확인하십시오.

sudo apt update && sudo apt upgrade