Windows 컴퓨터는 DNS 서버가 호스팅하는 도메인 영역(zone)에 자신의 DNS 레코드를 24시간마다 갱신합니다. Windows 컴퓨터가 도메인에서 제거되거나 DNS 서버에서 자신의 DNS 레코드를 갱신하지 못하면, 해당 컴퓨터의 DNS 레코드는 DNS 데이터베이스에 그대로 남게 되며 이를 '오래된(Stale) DNS 레코드'라고 합니다. 오래된 DNS 레코드는 수동으로 삭제하지 않는 한 DNS 데이터베이스에 계속 축적됩니다. DNS 에이징 및 청소(Aging and Scavenging) 기능을 사용하면 오래된 DNS 레코드를 신속하게 식별하고 제거할 수 있습니다. 이 글에서는 DNS 에이징 및 청소가 무엇인지 설명하고, Windows Server에서 이 기능을 구성하고 활성화하는 데 필요한 단계를 자세히 안내합니다.
DNS 에이징(Aging)이란?
에이징은 오래된 DNS 레코드를 식별할 수 있게 해주는 기능입니다. 실제로 두 가지 간격(interval)을 사용하며, 두 간격이 모두 경과하면 해당 DNS 레코드가 오래된 것으로 간주됩니다.
이러한 간격은 다음과 같습니다:
- 비갱신 간격(Non-Refresh Interval): 리소스 레코드를 새로 고칠(*) 수 없는 기간입니다. 이 기간 동안 새로 고침을 거부하면 동일한 정보를 다시 복제할 필요가 없어 복제 트래픽이 줄어듭니다.
- 갱신 간격(Refresh Interval): 리소스 레코드를 새로 고칠(*) 수 있는 기간입니다.
(*) 리소스 레코드의 '새로 고침(refresh)'은 호스트 이름과 IP 주소가 변경되지 않는 DNS 동적 업데이트를 의미합니다. 반면, 리소스 레코드에 등록된 IP 주소를 변경하기 위한 DNS 동적 업데이트는 새로 고침으로 간주되지 않으며 비갱신 간격의 적용을 받지 않습니다.
DNS 청소(Scavenging)란?
청소는 DNS 영역에서 오래된 리소스 레코드를 정리하고 제거할 수 있게 해주는 기능입니다.
오래된 리소스 레코드는 다음 세 위치 모두에서 청소가 활성화된 경우에만 제거됩니다:
- 리소스 레코드 자체
- 리소스 레코드가 존재하는 DNS 영역
- 해당 DNS 영역의 주(primary) 복사본을 호스팅하는 최소 하나의 DNS 서버
청소는 DNS 서버에서 활성화되면 설정된 주기적 간격으로 실행됩니다. 따라서 오래된 리소스 레코드는 다음 DNS 청소 주기가 올 때까지 계속 존재할 수 있습니다.
DNS 에이징 및 청소를 활성화하지 않으면 다음과 같은 문제가 발생할 수 있습니다:
- 도메인 영역에 불필요한 DNS 레코드가 계속 쌓입니다.
- 시간이 지남에 따라 DNS 데이터베이스 크기가 점점 커집니다.
- DNS 서버 서비스가 DNS 데이터베이스를 열거하고 메모리에 로드하는 데 더 많은 시간이 소요됩니다.
- DNS 서버가 DNS 쿼리에 응답하는 속도가 느려집니다. DNS 서버는 필요한 레코드를 찾아 응답하기 전에 모든 DNS 레코드를 열거해야 하기 때문입니다.
- DNS 서버가 네트워크에 더 이상 존재하지 않는 잘못된 DNS 레코드로 응답하여 네트워크 전반에 이름 확인 문제가 발생할 수 있습니다.
- 동일한 IP 주소를 오래된 DNS 레코드가 점유하고 있다면, 다른 Windows 클라이언트 컴퓨터가 자신의 DNS 레코드를 등록하지 못할 수 있습니다.
DNS 에이징 및 청소 활성화 및 구성 방법
Windows Server에서 DNS 에이징 및 청소를 성공적으로 구성하려면 다음 3단계를 반드시 순서대로 수행해야 합니다:
- 서버 DNS 레코드 확인 (매우 중요한 첫 번째 단계)
- DNS 영역에서 DNS 에이징 및 청소 활성화
- DNS 영역의 주 복사본을 호스팅하는 최소 하나의 DNS 서버에서 DNS 청소 활성화
각 단계를 자세히 살펴보겠습니다.
1단계: 서버 DNS 레코드 확인 (매우 중요한 첫 번째 단계)
이 단계를 먼저 수행하지 않으면 서버의 DNS 레코드까지 삭제될 수 있으므로 매우 중요합니다. 예방 차원에서 작업 전에 DNS 서버와 레코드를 백업해 두는 것도 권장합니다.
청소 기능은 타임스탬프를 기준으로 작동하므로, 타임스탬프가 있는 모든 DNS 레코드는 처리 대상이 되며 삭제될 가능성이 있습니다. 따라서 서버의 DNS 레코드를 미리 확인하고 정적(static)으로 설정되어 있는지 점검해야 합니다.
레코드를 확인하려면 DNS 콘솔을 연 후 타임스탬프(Timestamp) 열을 확인하세요. 서버 레코드는 '정적'으로 표시되어야 합니다. 그렇지 않은 경우 해당 레코드를 연 다음 '오래되면 이 레코드 삭제(Delete this record when it becomes stale)' 확인란의 선택을 해제하세요.
설정을 마친 후 DNS 콘솔을 새로 고치면 해당 레코드의 타임스탬프가 정적(static)으로 표시됩니다.
모든 서버 레코드를 정적으로 변경한 후에야 다음 단계로 진행하세요.
2단계: DNS 영역에서 DNS 에이징 및 청소 활성화
다음 절차를 수행합니다:
- DNS 관리 도구(dnsmgmt.msc)를 실행하여 해당 DNS 영역의 속성으로 이동한 후 에이징(Aging)... 버튼을 클릭합니다.
- '오래된 리소스 레코드 청소(Scavenge stale resource records)' 확인란을 선택하고, 비갱신 간격과 갱신 간격 기간을 지정합니다.
- 확인을 클릭합니다.
DNS 서버의 모든 DNS 영역에 대해 DNS 에이징 및 청소를 일괄 활성화하려면 다음을 수행합니다:
- 서버 이름을 마우스 오른쪽 버튼으로 클릭한 후 '모든 영역에 대한 에이징/청소 설정(Set Aging/Scavenging for All Zones)...'을 클릭합니다.
- '오래된 리소스 레코드 청소' 확인란을 선택하고, 비갱신 간격과 갱신 간격 기간을 지정합니다.
- 확인을 클릭합니다.
- '이 설정을 기존 Active Directory 통합 영역에 적용(Apply these settings to the existing Active Directory-integrated zones)' 확인란을 선택합니다. 이렇게 하면 기존 Active Directory 통합 영역에도 DNS 에이징 및 청소가 활성화됩니다.
- 확인을 클릭합니다.
이제 마지막 단계로 진행합니다.
3단계: 주 영역을 호스팅하는 DNS 서버에서 DNS 청소 활성화
다음 절차를 수행합니다:
- DNS 서버의 속성 창을 엽니다.
- 고급(Advanced) 탭으로 이동합니다.
- '오래된 레코드 자동 청소 사용(Enable automatic scavenging of stale records)' 확인란을 선택합니다.
- 청소 주기(Scavenging period), 즉 DNS 서버에서 청소가 반복 실행되는 간격을 지정합니다.
- 확인을 클릭합니다.
이것으로 끝입니다! 지금까지의 과정으로 DNS 에이징 및 청소 설정이 모두 완료되었습니다.