DNS 리졸버
Domain Name System(DNS)은 호스트가 인터넷에서 사용할 도메인 이름을 관리 및 운영하기 위해 개발된 시스템으로, IP 주소와 이 IP 주소에 대응되는 도메인 이름의 정보를 보유 및 검색하는 시스템입니다.
VPC 서비스에서 인스턴스를 생성할 때 DNS 리졸버에 의해 자동으로 고유한 DNS 호스트 이름을 할당받고, 이 호스트 이름에 연관된 IP 주소 정보가 자동으로 보관됩니다. 이를 통해 VPC 네트워크상에서 인스턴스 간 통신이 가능해지며, 퍼블릭 IP를 할당하면 인터넷과 통신할 수 있습니다.
DNS 리졸버 기본 사항
DNS 리졸버는 한 리전의 각 가용 영역(Availability Zone)에 자동으로 내장되는 DNS 서비스입니다. 이 서비스의 엔드포인트는 169.254.169.253으로 지정되어 있으며, VPC의 서브넷에서 인스턴스가 생성될 때 프라이빗 DNS 호스트 이름을 할당합니다.
예: IP 주소가 10.0.16.53인 호스트의 이름은 다음과 같은 구조로 생성됩니다.
host-10-0-16-53
- DNS 리졸버 엔드포인트는
169.254.169.253으로 변경되었습니다(2024년 2월 21일 기준). 해당 일자 이전에 생성된 VPC는 기존 DNS 리졸버 엔드포인트(VPC 네트워크 IPv4 CIDR + 2 주소)를 유지하며, 단계적으로 마이그레이션될 예정입니다. - 기본 보안 그룹은 DNS 리졸버와의 DNS 요청을 허용합니다. 사용자 정의 보안 그룹만 사용하는 경우 DNS 요청에 대한 아웃바운드 규칙을 허용해야 합니다. 자세한 내용은 사용자 정의 보안 그룹을 참고해 주세요.
DNS 리졸버 쿼리 로깅
카카오클라우드는 VPC 내에서 발생한 DNS 리졸버 쿼리를 로깅할 수 있습니다. 이 로그를 통해 VPC 내 DNS 트래픽을 모니터링하여 DNS 문제를 해결하거나 네트워크 보안을 강화할 수 있습니다.
- DNS 리졸버 쿼리 로깅 기능은
169.254.169.253DNS 리졸버 엔드포인트를 사용하는 VPC에서 제공됩니다. - DNS 리졸버 쿼리 로깅 기능 출시 이전에 생성된 VPC(2025년 6월 12일 이전 생성)는 해당 기능을 사용할 수 있도록 순차적으로 마이그레이션이 진행될 예정입니다. 관련 문의는 헬프데스크로 문의해 주세요.
쿼리 로그 파일
DNS 리졸버 쿼리 로깅을 설정하면 30분 간격으로 해당 VPC의 쿼리 로그 파일을 지정한 Object Storage 버킷에 저장합니다. 로그 파일 이름은 다음 형식을 사용합니다.
{bucket-name}/KCLogs/{region-name}/{year=yyyy/month=mm/day=dd}/{az-name}_{project-id}_{vpc-id}_{logger-id}_{start-time}_{end-time}.log.gz
| 요소 | 설명 |
|---|---|
{bucket-name} | 쿼리 로그를 보관할 버킷 이름 |
KCLogs | 기본으로 지정되는 접두사 |
{region-name} | 쿼리 로그가 집계되는 VPC가 속한 리전 이름 |
{year=yyyy/month=mm/day=dd} | 쿼리 로그가 전달된 날짜 |
{az-name} | 쿼리 로그가 집계된 가용 영역 |
{project-id} | 쿼리 로그가 집계된 프로젝트 ID |
{vpc-id} | 쿼리 로그가 집계된 VPC ID |
{logger-id} | 쿼리 로그를 집계하는 서비스 객체 ID |
{start-time} | 로깅이 시작된 날짜와 시간 |
{end-time} | 로깅 간격이 끝나는 날짜와 시간 |
- 원하는 기간만큼 버킷에 로그 파일을 저장할 수 있습니다. Object Storage의 Lifecycle 설정으로 로그 파일 유지 기간을 지정할 수도 있습니다. 자세한 내용은 Lifecycle 설정을 참고해 주세요.
- 쿼리 로깅 설정에는 별도 비용이 발생하지 않지만, 버킷에 로그가 저장되는 동안 데이터 저장 요금이 발생합니다.
쿼리 로그 파일 처리
쿼리 로그 파일은 압축 파일 형태로 저장됩니다. 파일을 다운로드한 경우 압축을 해제해야 내용을 확인할 수 있습니다.
쿼리 로그 항목
DNS 리졸버 쿼리 로깅으로 수집되는 필드는 ,으로 구분되며 다음 순서로 기록됩니다.
| 필드 | 설명 |
|---|---|
version | 쿼리 로그 버전 |
project_id | 쿼리 로그가 집계되는 VPC가 있는 프로젝트 ID |
region | 쿼리 로그가 집계되는 VPC가 있는 리전 이름 |
vpc_id | 쿼리 로그가 집계되는 VPC ID |
timestamp | 쿼리 발생 후 응답이 발생한 일시 |
query_name | 쿼리에 서술된 도메인, 서브도메인 이름 또는 목적지 주소 |
record_type | DNS 레코드 유형 |
query_class | DNS 쿼리 클래스 정보 |
response_code | DNS 응답 코드 |
response_time | 쿼리 응답까지 걸린 시간 |
response_count | 쿼리에 대한 응답 개수 |
response_size | 쿼리 응답 메시지 크기 |
response_protocol | 쿼리 응답에 사용된 전송 계층 프로토콜 |
버킷 요구 사항
DNS 리졸버 쿼리 로깅으로 수집되는 로그는 지정한 Object Storage 버킷에 보관됩니다. 쿼리 로깅을 사용할 때는 다음 요구 사항을 충족하는 버킷을 지정해야 합니다.
- 버킷은 VPC와 같은 리전에 있어야 합니다.
- 로그 저장 대상으로 지정한 Object Storage 버킷을 삭제하면 쿼리 로그가 정상적으로 저장되지 않습니다. 버킷을 삭제한 경우 다른 버킷을 다시 지정해 주세요.
- 쿼리 로깅을 설정한 계정의 권한이 변경되면 로그가 정상적으로 저장되지 않을 수 있습니다. 해당 계정에 쿼리 로그를 설정할 수 있는 권한을 다시 부여해 주세요.
버킷 암호화 설정
DNS 리졸버 쿼리 로그를 암호화하여 버킷에 저장할 수 있습니다. 보안을 위해 암호화 설정을 사용으로 설정하는 것을 권장합니다.
S3 액세스 키 요구 사항
DNS 리졸버 쿼리 로깅을 사용하려면 S3 액세스 키가 필요합니다. 계정 설정 > 자격 증명 > S3 액세스 키 탭에서 액세스 키를 미리 생성해 주세요.