1. 라이브러리
  2. DNS
  3. DNS 문제 해결

업데이트됨 1개월 전

컴퓨터는 웹사이트의 위치를 기억합니다. example.com에 방문하면 IP 주소를 저장해 두어서 다음에 또 찾아볼 필요가 없게 됩니다. 이 기능은 대부분 훌륭하게 작동합니다. 그런데 웹사이트가 이전했는데도 컴퓨터가 아무도 없는 예전 주소로 계속 찾아가는 경우엔 문제가 됩니다.

DNS 캐시를 비우면 컴퓨터가 웹사이트 위치에 대해 알고 있던 모든 정보를 지웁니다. 처음부터 다시 시작하는 거죠. 새로 길을 찾아가는 것입니다.

아무도 알려주지 않는 문제

DNS 캐시는 여러 계층에 존재합니다:

  1. 운영체제가 주소록을 갖고 있습니다
  2. 브라우저가 별도의 주소록을 갖고 있습니다
  3. ISP의 DNS 서버도 자체 캐시를 갖고 있습니다

OS 캐시를 비워도 브라우저에는 영향이 없습니다. 브라우저를 비워도 ISP에는 영향이 없습니다. 그래서 캐시를 비우고 페이지를 새로 고침해도 아무 변화가 없어서 "효과가 없었네"라고 결론짓게 됩니다.

사실 효과가 있었을 수도 있습니다. 올바른 계층을 비우지 않았을 뿐이죠.

캐시 비우기가 실제로 도움이 될 때

웹사이트가 이전되어 접속이 안 될 때. 다른 사람들은 멀쩡히 접속됩니다. 내 컴퓨터만 예전 주소로 계속 시도하는 것입니다.

DNS 설정을 변경했을 때. Cloudflare 또는 Google DNS로 전환했나요? 캐시를 비우면 예전 항목이 만료되길 기다리지 않고 바로 새 설정을 사용합니다.

일부 사이트는 열리는데 다른 사이트는 안 될 때. 구글은 접속되는데 회사 웹사이트는 안 된다면, 오래된 DNS가 유력한 용의자입니다.

DNS 변경 사항을 테스트할 때. 개발자와 시스템 관리자는 DNS 레코드 작업 시 수시로 캐시를 비웁니다.

명령어

Windows

명령 프롬프트를 관리자 권한으로 실행합니다:

ipconfig /flushdns

"Successfully flushed the DNS Resolver Cache."라는 메시지가 표시됩니다.

비우기 전에 캐시된 내용을 확인하려면:

ipconfig /displaydns

PowerShell 대안:

Clear-DnsClientCache

macOS

터미널을 엽니다:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

비밀번호를 입력하면 됩니다. 확인 메시지는 따로 나타나지 않습니다. 아무 반응이 없으면 성공한 것입니다.

Linux

대부분의 최신 배포판은 systemd-resolved를 사용합니다:

sudo systemd-resolve --flush-caches

다음 명령으로 확인합니다:

sudo systemd-resolve --statistics

"Current Cache Size: 0"을 확인하세요.

nscd를 사용하는 시스템의 경우:

sudo systemctl restart nscd

일부 Linux 배포판은 기본적으로 OS 레벨에서 DNS를 캐시하지 않습니다. 위 명령어가 실패한다면 해당 시스템은 OS 레벨에서 DNS를 캐시하지 않는 것이므로, 비울 것이 아예 없는 경우입니다.

이제 브라우저도 비우세요

이 단계를 건너뛰는 분들이 많습니다. 브라우저는 OS와 별도로 자체 DNS 레코드를 유지합니다.

Chrome과 Edge: 주소 표시줄에 chrome://net-internals/#dns를 입력합니다. "Clear host cache"를 클릭합니다. 완전히 초기화하려면 chrome://net-internals/#sockets도 방문하여 "Flush socket pools"를 클릭합니다.

Firefox: 주소 표시줄에 about:networking#dns를 입력합니다. "Clear DNS Cache"를 클릭합니다.

Safari: 시스템 캐시를 사용하므로 macOS 캐시를 비우면 Safari도 함께 비워집니다.

OS 캐시만 비우고 브라우저 캐시는 그대로 두는 것은, 내 휴대폰 연락처에서 주소를 지웠는데 배우자 폰에는 여전히 예전 주소가 저장된 것과 같습니다. 배우자가 내비를 켜면 여전히 예전 곳으로 향하게 됩니다.

제대로 작동했는지 확인하기

캐시를 비운 후 새로운 DNS 쿼리를 강제 실행합니다:

nslookup example.com

Linux 또는 macOS에서:

dig example.com

쿼리 시간을 보면 캐시에서 응답했는지(1ms 미만) 실제로 조회한 것인지(더 느림) 알 수 있습니다.

캐시 비우기가 도움이 안 될 때

DNS 캐시 비우기는 DNS 문제를 해결합니다. 다음의 경우에는 아무 효과가 없습니다:

  • 서버 자체가 다운된 경우
  • 인터넷 연결이 끊긴 경우
  • 방화벽 규칙이 트래픽을 차단하는 경우
  • 라우터 문제 (라우터를 재시작해 보세요)
  • ISP 측의 문제

캐시를 비워도 해결되지 않는다면, 문제는 내 컴퓨터의 기억이 아니라 다른 어딘가에 있는 것입니다.

DNS 캐시 비우기에 관해 자주 묻는 질문

DNS 캐시를 얼마나 자주 비워야 하나요?

문제를 해결할 때만 비우면 됩니다. DNS 캐시는 브라우징을 더 빠르게 해줍니다. 자주 비우면 불필요한 조회만 늘어날 뿐입니다. 연결 문제가 생겼을 때, DNS 설정을 변경한 후, 또는 분명히 온라인 상태인 사이트가 열리지 않을 때 비우세요.

DNS 캐시를 비우면 인터넷 속도가 빨라지나요?

아닙니다. 컴퓨터가 모든 주소를 다시 학습하는 동안 오히려 잠시 느려집니다. 캐시는 속도를 높이기 위해 있는 것입니다. 최적화가 아니라 문제 해결이 필요할 때 비우는 것입니다.

DNS 캐시를 비우면 문제가 생길 수 있나요?

비워도 아무런 해가 없습니다. 최악의 경우, 이후 몇 페이지 로드에 몇 밀리초가 더 걸릴 뿐입니다. 브라우징하다 보면 모든 정보가 자동으로 다시 채워집니다.

OS와 브라우저 캐시를 모두 비워야 하는 이유는 무엇인가요?

둘은 별도의 데이터베이스입니다. 브라우저는 OS가 항상 최신 정보를 갖고 있다고 완전히 신뢰하지 않기 때문에 자체 레코드를 유지합니다. 철저하게 비우려면 OS를 먼저, 그다음 브라우저를 비우세요.

이 페이지가 도움이 되었나요?

😔
🤨
😃
DNS 캐시 비우기 • 라이브러리 • Connected