리졸버
리졸버는 사용자를 대신해 DNS를 조회하고 그 답을 캐시해 두는 서버입니다. 변경이 언제 보이는지는 대부분 리졸버가 결정합니다.
작성
리졸버(resolver)는 사용자를 대신해 DNS 조회를 수행하고 그 결과를 일정 시간 캐시에 보관하는 서버입니다. 브라우저가 직접 전 세계 네임서버를 찾아다니는 것이 아니라, 리졸버에게 이름 하나를 묻고 최종 답만 받습니다. 도메인 설정을 바꿨을 때 "나는 바뀌었는데 다른 사람은 아직 안 바뀐다"는 상황이 생기는 이유도 리졸버마다 캐시 상태가 다르기 때문입니다.
스텁 리졸버와 재귀 리졸버
| 구분 | 스텁 리졸버 | 재귀 리졸버 |
|---|---|---|
| 위치 | PC, 스마트폰, 서버의 운영체제 | 통신사 DNS, 사내 DNS, 공개 리졸버 |
| 하는 일 | 질의를 재귀 리졸버에 넘기고 답을 받음 | 루트부터 차례로 물어 최종 답을 만듦 |
| 캐시 | 짧게 유지 | TTL 기준으로 유지. 영향 범위가 넓음 |
| 설정 위치 | 네트워크 설정의 DNS 서버 주소 | 운영 주체가 관리 |
PC에 입력하는 DNS 서버 주소는 "어느 재귀 리졸버에 물을지"를 지정하는 값입니다. 권한 네임서버를 지정하는 것이 아니므로, 도메인의 네임서버를 바꾸는 일과는 관계가 없습니다.
루트에서 시작하는 반복 질의
재귀 리졸버는 캐시에 답이 없으면 위에서부터 차례로 묻습니다. shop.example.co.kr을 조회하는 경우입니다.
- 루트 네임서버에 묻습니다. 루트는 .kr 네임서버 목록을 알려 줍니다.
- .kr 네임서버에 묻습니다. co.kr을 거쳐 example.co.kr의 네임서버 목록을 알려 줍니다.
- example.co.kr의 권한 네임서버에 묻습니다. 여기서 실제 A 레코드 값을 받습니다.
- 받은 값을 사용자에게 돌려주고, 동시에 각 단계의 응답을 TTL만큼 캐시에 보관합니다.
각 단계의 서버는 답 대신 "다음에 여기로 물어보라"는 안내를 줍니다. 이 방식을 반복 질의(iterative query)라고 하고, 전체를 대신 돌아 주는 쪽이 재귀(recursive) 리졸버입니다. 두 번째 조회부터는 캐시가 채워져 있어 마지막 단계만 수행하거나 아예 질의 없이 끝납니다.
캐시와 TTL
리졸버는 각 응답에 붙은 TTL만큼 그 값을 재사용합니다. 레코드를 고쳐도 이미 캐시된 리졸버는 남은 시간이 지나기 전까지 이전 값을 계속 답하며, 이 시간차가 DNS 전파로 불립니다. 값이 없다는 응답(NXDOMAIN)도 캐시 대상이라, 레코드를 만들기 전에 미리 조회해 두면 "없음"이 잠시 캐시될 수 있습니다. 그래서 변경 작업은 값을 먼저 넣고 확인하는 순서가 편합니다.
실무에서 알아둘 것
- 지금의 정답을 확인하려면 캐시를 거치지 않고 권한 네임서버에 직접 물어봅니다. 조회 도구와 읽는 법은 DNS 조회 도구에 있습니다.
- 사내 리졸버는 내부용 존을 따로 두는 경우가 많아, 외부에서는 정상인데 사무실에서만 옛 주소로 연결되는 일이 생깁니다. 반영이 안 될 때 점검 순서는 DNS 변경이 반영되지 않을 때를 참고하세요.
- 네임서버 자체를 바꾸면 위임 정보의 캐시까지 걸려 반영이 더 오래 걸립니다. 절차는 네임서버 변경 방법에 정리되어 있습니다.
자주 묻는 질문
그 리졸버가 아직 이전 값을 캐시하지 않았다면 새 값을 바로 보게 됩니다. 다만 이는 내 PC에서만 빨라지는 것이고, 다른 사용자가 쓰는 리졸버의 캐시는 그대로 남아 있습니다. 전체 반영 시간을 줄이려면 변경 전에 TTL을 낮추는 방법밖에 없습니다.
각자 쓰는 리졸버의 캐시 상태가 다르기 때문입니다. 이전 값을 아직 들고 있는 리졸버는 만료될 때까지 같은 답을 반복합니다. 권한 네임서버에 직접 물어 보면 지금의 정답을 확인할 수 있습니다.
사내 리졸버의 캐시가 남아 있거나, 같은 이름을 내부용으로 따로 정의해 두었을 가능성이 큽니다. 전자는 캐시를 비우면 해소되고, 후자는 내부 존의 레코드를 같이 고쳐야 합니다. 네트워크 담당자에게 두 가지를 함께 확인해 달라고 요청하는 편이 빠릅니다.
관련 가이드
- DNS 조회 도구 사용법 (dig, nslookup)dig로 특정 네임서버에 직접 질의해 설정 오류와 캐시 문제를 구분하는 방법입니다. 기본 문법, +short 와 +trace, ANSWER와 AUTHORITY 섹션 읽기, TTL 해석, nslookup과 Windows 환경, 캐시 비우기까지 실제 명령으로 정리했습니다.
- DNS 변경이 반영되지 않을 때레코드를 바꿨는데 반영이 안 될 때는 권한 네임서버부터 브라우저까지 계층별로 어디까지 퍼졌는지 확인하면 원인이 바로 드러납니다. TTL 계산, 위임 확인, 엉뚱한 콘솔에서 고친 경우까지 순서대로 정리했습니다.
- 네임서버 변경하기레토 대시보드에서 네임서버를 바꾸는 방법과, 바꾸기 전에 새 네임서버에 레코드를 먼저 옮겨 두어야 하는 이유. 반영 시간, 검증 방법, 흔한 실패 원인까지 정리했습니다.