오랫동안 DNS 문제는 사이트가 로드되지 않거나, 휴대폰에서는 되는데 PC에서는 안 되는 상황을 의미했고, 그럴 때마다 저는 인터넷을 고치기 위해 수많은 Windows 명령어를 실행하곤 했습니다. 또한 라우터를 재시작하거나, 다른 DNS 서버로 전환하거나, Windows를 재부팅하며 운에 맡기기도 했습니다. 가끔은 그중 하나가 효과가 있었지만, 무엇 때문에 해결되었는지, 왜 해결되었는지는 알 수 없었습니다. 문제의 근본 원인을 제대로 들여다본 적이 없었기 때문입니다.

하지만 DNS 문제를 해결하는 더 나은 방법은 DNS가 어떻게 작동하는지 보여주는 몇 가지 Windows 명령어를 배우는 것입니다. 캐시가 오래되었는지, DNS 서버에 연결할 수 없는지, 아니면 경로 자체가 끊겼는지 추측하는 대신, 내부에서 실제로 무슨 일이 일어나고 있는지 확인할 수 있습니다.

ipconfig /displaydns

Windows가 현재 기억하고 있는 모든 주소를 보여줍니다

인터넷이 끊겼을 때 제가 가장 먼저 실행하는 명령어는 ipconfig /displaydns입니다. Windows는 로컬 DNS 캐시, 즉 최근에 조회한 사이트 이름과 그 사이트가 해석된 IP 주소 목록을 유지합니다. 이를 통해 PC는 사이트를 열 때마다 DNS 서버에 똑같은 질문을 할 필요가 없습니다. 문제는 캐시된 답변이 오래될 수 있다는 점이며, 오래된 답변은 내 컴퓨터에서만 사이트가 로드되지 않는 가장 흔한 이유 중 하나입니다.

Windows 터미널이나 명령 프롬프트에서 ipconfig /displaydns를 실행하면 캐시의 모든 레코드가 출력됩니다. 각 항목은 레코드 이름, 레코드 유형, 레코드가 만료되기까지 남은 시간을 초 단위로 보여주는 TTL(Time To Live) 값, 그리고 Windows가 파일에 가지고 있는 실제 IP 주소를 보여줍니다. 제가 주목하는 것은 마지막 부분입니다. 사이트가 제대로 작동하지 않으면, 제 PC가 어떤 주소로 연결해야 한다고 생각하는지 정확히 알 수 있습니다.

여기서 추측은 끝납니다. 캐시된 IP가 잘못된 것으로 보이면, 다른 것을 건드리기 전에 캐시가 문제라는 것을 알 수 있습니다. PowerShell의 Get-DnsClientCache cmdlet을 사용하면 이름이나 레코드 유형별로 캐시를 필터링할 수 있어 더 유용합니다.

관련 기사

nslookup

DNS 서버에 직접 질문하여 무엇이 해석되는지 추측을 멈추게 합니다

ipconfig /displaydns는 내 PC가 이미 무엇을 믿고 있는지 알려줍니다. nslookup은 지금 당장 무엇이 사실인지 알려줍니다. 이 명령줄 도구는 DNS 서버에 직접 쿼리하여 호스트 이름에 연결된 IP 주소를 보고하므로, 캐시의 오래된 답변과 최신 답변을 비교할 수 있습니다.

이 글도 확인해 보세요:  Windows용 Chrome 및 Edge에서 '조직에서 브라우저를 관리합니다'를 수정하는 방법

DNS가 문제라는 가장 확실한 신호는 사이트 로드는 거부되는데 원시 IP 주소를 핑(ping)했을 때는 잘 작동하는 경우입니다. 이러한 차이는 연결 상태는 정상인데 이름-주소 변환 과정에서 어딘가 문제가 발생했음을 의미합니다. nslookup example.com을 실행하면 이를 확인할 수 있습니다. 명령어가 IP 주소를 반환하면 DNS는 제 역할을 하고 있는 것입니다. 만약 "Non-existent domain"이 반환되거나 단순히 시간 초과가 발생한다면, 조회 과정 자체가 고장 난 것입니다.

출력 결과는 어떤 DNS 서버가 응답했는지도 알려줍니다. 정상적인 결과는 "non-authoritative"로 표시되는데, 이는 도메인의 공식 레코드가 아닌 서버의 캐시에서 답변이 왔음을 의미하며 이는 예상된 결과입니다. 더 깊이 파고들 수도 있습니다. -type=mx를 추가하면 메일 레코드를 가져올 수 있어 이메일 관련 문제가 있을 때 유용하며, -type=ns는 도메인의 네임 서버를 나열합니다. 일상적인 문제 해결에는 일반적인 nslookup만으로도 리졸버(resolver)가 범인인지 확인하기에 충분합니다.

tracert

연결이 어디에서 끊기는지 정확히 보여줍니다

nslookup을 통해 호스트 이름이 IP로 해석되는 것이 확인되면, 다음 질문은 패킷이 실제로 그 IP에 도달할 수 있는지 여부입니다. 그것이 바로 tracert의 역할입니다. 이 명령어는 DNS 조회 자체를 추적하는 것이 아니라, 데이터가 해석된 주소로 향하는 경로를 매핑하고 그 경로가 어디에서 느려지거나 멈추는지 보여줍니다.

DNS 문제 해결을 위해 Tracert가 하는 가장 유용한 기능은 DNS 문제인지 아닌지를 판별하는 것입니다. tracert example.com을 실행했을 때 즉시 "Unable to resolve target system name"이 표시된다면, Windows가 해당 호스트 이름에 대한 IP를 전혀 가져오지 못한 것입니다. 이 경우 문제는 확실히 DNS나 호스트 파일이며, 라우팅 문제가 아닙니다. 하지만 추적이 첫 번째 홉(hop)을 통과한다면 호스트 이름은 이미 성공적으로 해석된 것이므로, DNS는 정상 작동했으며 문제는 경로상 더 뒤쪽에 있는 것입니다.

여기에는 좋은 팁이 하나 있습니다. 호스트 이름을 대상으로 tracert를 실행한 다음, nslookup으로 얻은 원시 IP를 대상으로 다시 실행해 보세요. IP 버전은 완료되는데 호스트 이름 버전은 시작조차 못 한다면, 일반적인 연결은 정상임을 확인하면서 결함이 DNS 해석에 있음을 격리한 것입니다. 또한 tracert 8.8.8.8처럼 공용 리졸버를 직접 지정할 수도 있습니다. DNS 서버 자체에 도달하는 속도가 느리거나 시간 초과가 잦다면, 나머지 연결 상태가 아무리 좋아도 조회 속도가 느리게 느껴질 것이며, 이는 때때로 라우터 설정이 속도를 저하시키고 있다는 신호일 수 있습니다.

이 글도 확인해 보세요:  Windows의 '이 장치가 다른 응용 프로그램에서 사용 중입니다'라는 오디오 오류를 수정하는 방법

ipconfig /flushdns

당신을 엉뚱한 곳으로 보내는 오래된 캐시를 지웁니다

이쯤 되면 저는 보통 무엇이 문제인지 알게 되며, 대부분의 경우 제 PC를 오래된 주소로 안내하는 오래된 캐시 항목이 원인입니다. 해결책은 ipconfig /flushdns입니다. 이 명령어는 전체 로컬 DNS 캐시를 지워, 다음에 사이트를 방문할 때 Windows가 최신 레코드를 가져오도록 강제합니다.

이는 웹사이트가 새 서버로 이전한 후에 가장 중요합니다. 사이트는 이제 새로운 IP에 위치하지만, PC는 여전히 이전 IP를 붙잡고 있어 더 이상 응답하지 않는 주소로 충실히 당신을 보내고 있기 때문입니다. 캐시를 플러시(flush)하면 그 오래된 항목이 삭제됩니다. DNS 서버를 변경했거나 악성코드가 조회를 리다이렉트하여 캐시가 손상되었다고 의심될 때도 마찬가지입니다. 이는 일상적인 네트워크 유지 관리와 같은 안전한 명령어이며, 성능이나 설정에 해를 끼치지 않습니다.

한 가지 알아두어야 할 점은 플러시가 항상 캐시를 완전히 비우지는 않는다는 것입니다. 로컬 호스트 파일의 항목은 지워지지 않으며, 백그라운드 앱이 즉시 새로운 조회를 트리거하여 몇 초 안에 캐시를 다시 채울 수 있습니다. 따라서 플러시 직후에 ipconfig /displaydns를 실행했을 때 여전히 항목이 보이더라도 이는 정상입니다. 플러시로 문제가 해결된다면 원인은 오래된 레코드였습니다. 해결되지 않는다면 캐시 문제는 아닌 것으로 판명된 것이니 다음 단계로 넘어가면 됩니다. 그 후 더 신뢰할 수 있는 리졸버로 전환하는 것을 고려해 볼 가치가 있으며, DNS 변경은 PC만을 위한 것이 아닙니다.

netsh winsock reset

다른 방법이 통하지 않을 때 시도할 해결책

캐시가 깨끗하고, 호스트 이름이 해석되며, 경로도 정상인데 네트워크가 여전히 고장 났다면 문제는 DNS보다 더 깊은 곳에 있을 수 있습니다. 이때 저는 netsh winsock reset을 사용합니다.

Winsock은 브라우저와 같은 애플리케이션과 네트워크 사이에서 작동하는 Windows 네트워킹 구성 요소입니다. 그 구성은 Winsock 카탈로그라는 곳에 저장되는데, 이 카탈로그는 악성코드, 잘못 설치된 네트워크 소프트웨어, 또는 제거한 장치의 잔여 항목으로 인해 손상될 수 있습니다. 손상되면 설정이 올바른데도 DNS 조회가 실패하거나, 브라우저가 명확한 이유 없이 제한된 연결을 보고하는 등 이상한 오류가 발생합니다.

이 글도 확인해 보세요:  시작 시 Discord가 실행되지 않도록 설정하고 Windows에서 업데이트를 검색하는 방법

관리자 권한의 명령 프롬프트에서 netsh winsock reset을 실행하면 해당 카탈로그가 기본 상태로 재설정되며, 이후 재부팅을 통해 작업을 완료합니다. 실행하기 전에 netsh winsock show catalog > winsock-before.txt로 스냅샷을 저장해 두면 무엇이 변경되었는지 기록을 남길 수 있습니다. 문제가 Winsock보다 IP 구성과 관련이 있다면, 관련 명령어인 netsh int ip reset을 사용하여 TCP/IP 설정을 같은 방식으로 재구축할 수 있습니다. 어느 것도 확실한 치료법은 아니지만, 지원팀에 전화하기 전 마지막 수단으로서 이 재설정은 어떤 캐시 플러시로도 해결되지 않는 손상을 제거해 줍니다.

OS Windows

최소 CPU 사양 1Ghz/2 코어

Windows 11은 중앙에 위치한 시작 메뉴, 스냅 레이아웃, 가상 데스크톱, TPM 2.0을 통한 향상된 보안, 그리고 Microsoft Teams 및 AI 기반 Copilot과의 더 깊은 통합을 특징으로 하는 Microsoft의 최신 운영 체제입니다.

어디를 봐야 할지 안다면 DNS 문제 해결은 쉽습니다

저도 여전히 DNS 문제를 겪습니다. 누구나 그러니까요. 하지만 연결 상태에 대해 모든 방법을 무작정 시도하는 대신, 두세 가지 명령어를 실행하고 그 결과를 읽은 뒤 적절한 해결책을 적용합니다. 원인을 알면 해결은 쉬운 부분입니다.

By 이지원

상상력이 풍부한 웹 디자이너이자 안드로이드 앱 마니아인 이지원님은 예술적 감각과 기술적 노하우가 독특하게 조화를 이루고 있습니다. 모바일 기술의 방대한 잠재력을 끊임없이 탐구하고, 최적화된 사용자 중심 경험을 제공하기 위해 최선을 다하고 있습니다. 창의적인 비전과 뛰어난 디자인 역량을 바탕으로 All Things N의 잠재 독자가 공감할 수 있는 매력적인 콘텐츠를 제작합니다.