Programming

DNS 와 DNS Cache 에 대해 알아보자

긍정왕웹서퍼 2023. 10. 12. 00:09
728x90

개요 

최근 회사에서 내부망과 외부망으로 분리하는 작업을 진행하면서 DNS Cache 때문에 내부망에서 HTTP 요청이 정상적으로 동작하지 않던 이슈가 있었다. 이를 해결하기 위해 서버 전용LAN선을 재연결하거나, 컴퓨터를 재시동하거나, 네트워크를 지웠다 다시 설치하는 등 여러 시도를 했지만 결국 해결한 방법은 DNS Cache를 초기화함으로써 해결할 수 있었고, 오늘 경험했던 DNS Cache가 뭔지 제대로 알기 위해 정리하기로 했다.

 

 

 

DNS ?

먼저 DNS(Domain Name System) 으로 명칭에서도 직관적으로 알 수 있듯 사람이 읽을 수 있는 도메인 이름을 IP주소로 변환하는 시스템을 의미하며 보통 www.example.com  이라는 도메인 이름을 ex) 192.168.1.1 처럼 바꿔주는 기능을 하는 서비스이다. 그렇다면 제목에 있는 DNS Cache도 무엇인지 유추할 수 있다.

 

 

DNS Cache ? 

DNS 정보를 일시적으로 저장하는 메모리나, 저장소를 의미하며 이는 동일한 도메인 이름을 다시 검색하는 경우 중복된 요청 대신 캐시에 보관된 IP주소를 반환하는 역할을 함으로써 네트워크 부하를 줄이고 사용자 경험을 개선하기 위해 빠른 응답을 제공할 수 있다. 물론 캐시이기 때문에 캐시를 만료시키기 위한 TTL(Time-To-Live)을 설정하거나 다른 옵션을 통해 관리할 수 있다.

 

 

 

정리

결국 DNS 캐시는 DNS에 같은 요청을 여러번 하는 것을 줄이기 위해 캐시에 이전에 요청했던 DNS 응답값들을 저장해두었다가 동일한 요청이 온 경우 캐시에서 바로 꺼냄으로써 DNS 서버를 거치는 과정을 줄여 성능을 개선하기 위한 것이었는데, 나같은 경우 내/외부 망을 공용으로 사용하던 환경에서 망 분리를 하면서 이전에 응답받은 DNS 캐시에 값을 받아서 HTTP 요청을 하고 있어서 내부망으로 요청을 하지 않고 변경전 외부 IP로 요청을 보내고 있었던 것이었다.  바로 DNS 캐시를 확인하지 않았던 이유는 망 분리작업이 진행된지 몇일이 지난 상태였기 때문에 당연히 내 네트워크 문제인줄로만 알았는데 DNS 캐시 문제인줄 생각도 못했다.