SRV Record

agnusdei·2025년 12월 8일

Information Security

목록 보기
53/96

🔍 SRV 레코드 (Service Record)

**SRV 레코드 (Service Record)**는 **도메인 네임 시스템 (DNS, Domain Name System)**에서 특정 서비스를 제공하는 서버의 위치(호스트명)와 포트 번호를 알려주는 특수한 리소스 레코드(Resource Record) 유형입니다.

일반적인 A 레코드가 호스트명에 대한 IP 주소만을 알려주는 것과 달리, SRV 레코드는 서비스의 존재접근 방법에 대한 정보를 명시적으로 제공하여 클라이언트가 특정 서비스를 찾는 과정을 자동화하고 로드 밸런싱(Load Balancing) 및 장애 조치(Failover)를 가능하게 합니다.


1. 배경 및 개념

1.1. 배경

  • 서비스 탐색의 비효율성 해소: 과거에는 클라이언트가 특정 서비스를 이용하려면 서비스의 호스트명과 포트 번호를 수동으로 설정하거나, 서비스마다 고정된 포트 번호를 암기해야 했습니다.
  • DNS를 통한 서비스 위치 자동화: SRV 레코드는 1990년대 후반 AD(Active Directory) 및 **SIP(Session Initiation Protocol)**와 같은 복잡한 분산 환경에서 **서비스 디스커버리(Service Discovery)**를 표준화하기 위해 도입되었습니다.

1.2. SRV 레코드의 정의

  • 정의: DNS 환경에서 특정 프로토콜(Protocol)과 도메인 내에서 운영되는 특정 서비스(Service)의 **접근 지점(Endpoint)**을 정의하는 레코드입니다.
  • 핵심 기능: 클라이언트가 서비스 이름만으로 해당 서비스를 제공하는 서버의 호스트명, 포트, 우선순위, 가중치를 동적으로 질의하여 알아낼 수 있게 합니다.

2. SRV 레코드의 포맷 및 구성 요소

SRV 레코드는 일반적인 DNS 레코드와 달리 4가지 추가 필드를 포함합니다.

필드설명기술적 용도
_Service._Proto.Name레코드의 이름 (예: _ldap._tcp.domain.com)서비스와 프로토콜의 조합을 식별.
Priority (우선순위)서버에 접근할 순서를 지정하는 숫자. 낮을수록 우선순위가 높습니다.장애 조치(Failover) 메커니즘 제공. 우선순위가 높은 서버가 응답하지 않을 때만 낮은 서버를 시도.
Weight (가중치)동일한 우선순위를 가진 서버들 사이에서 로드 밸런싱을 위한 상대적 가중치.로드 분산(Load Balancing) 메커니즘 제공. 값이 높을수록 더 많은 트래픽을 받음.
Port (포트)해당 서비스가 실행 중인 TCP/UDP 포트 번호.클라이언트가 서버에 연결할 실제 포트 지정.
Target (대상)서비스를 제공하는 서버의 완전한 호스트명(FQDN). (IP 주소가 아닌 호스트명이어야 함).서비스 제공 서버의 위치 지정.

예시 포맷

_ldap._tcp.dc._msdcs.example.com. 3600 IN SRV 0 100 389 dc1.example.com.

3. 작동 원리 및 활용 (AD를 중심으로)

3.1. Windows AD에서의 역할

Windows AD는 SRV 레코드를 가장 광범위하게 사용하는 대표적인 서비스입니다.

  1. 서비스 등록: AD를 설치하고 **DC(Domain Controller)**가 구성되면, DC는 자신의 DNS 서버에 Kerberos(_kerberos._tcp), LDAP(_ldap._tcp) 등 자신이 제공하는 핵심 서비스의 SRV 레코드를 자동으로 등록합니다.
  2. 클라이언트 질의: 클라이언트(예: 사용자 PC)가 도메인에 로그인하거나 특정 자원에 접근하려고 할 때, DNS 서버에 **"domain.com 도메인의 LDAP 서비스를 제공하는 서버는 어디인가요?"**라고 SRV 레코드를 질의합니다.
  3. 위치 파악: DNS 서버는 등록된 SRV 레코드 목록(예: dc1, dc2, dc3)을 클라이언트에게 반환합니다.
  4. 연결 및 인증: 클라이언트는 반환된 목록을 우선순위와 가중치에 따라 정렬하고, 가장 적합한 DC(Target)에 지정된 포트(Port)로 연결하여 인증을 시도합니다.

3.2. 핵심 활용 메커니즘

  • 장애 조치 (Failover): Priority 값을 이용하여 주 DC와 보조 DC를 명확히 구분합니다. 주 DC(Priority가 낮음)가 응답하지 않을 경우에만 보조 DC(Priority가 높음)를 사용하도록 하여 서비스 연속성을 보장합니다.
  • 로드 밸런싱 (Load Balancing): 동일한 Priority를 가진 여러 DC에 대해 Weight 값을 부여하여 트래픽을 분산시킵니다. (예: dc1에 가중치 70, dc2에 가중치 30을 부여하여 부하를 조절).
  • 서비스 유연성: 서비스의 포트나 서버 위치가 변경되어도 DNS 레코드만 수정하면 되므로, 클라이언트 설정 파일을 변경할 필요 없이 유연하게 대응할 수 있습니다.

4. 기술사적 판단과 발전 방향

4.1. 기술사적 판단

SRV 레코드는 분산 환경에서 핵심 인프라의 가용성과 확장성을 확보하는 미들웨어 수준의 핵심 기술입니다.

  • 장점: AD, VoIP(Voice over IP), SIP 등 분산 시스템의 자원 검색(Resource Lookup) 표준을 제공하여 중앙 집중적 관리 및 탄력적인 인프라 운영을 가능하게 합니다.
  • 관리적 중요성: DNS에서 SRV 레코드가 유실되거나 잘못 구성되면 도메인 내 인증 및 모든 서비스 연결이 마비될 수 있어, DNS 및 AD 관리자가 가장 주의 깊게 관리해야 하는 요소 중 하나입니다.

4.2. 발전 방향: 클라우드 시대의 서비스 디스커버리

  • Microservices와의 관계: 클라우드 환경의 **마이크로 서비스 아키텍처(MSA)**에서는 전통적인 SRV 대신 ZooKeeper, Consul, Eureka 등 별도의 **서비스 디스커버리 레지스트리(Service Discovery Registry)**가 사용됩니다.
  • DNS의 재조명: 그러나 Kubernetes(K8s) 환경의 서비스 접근이나 하이브리드 클라우드 환경에서는 여전히 DNS 기반 서비스 디스커버리가 표준적인 방법으로 사용됩니다. 특히, K8s는 내부적으로 Cluster IP 서비스에 대한 SRV 레코드를 유사하게 구성하여 파드(Pod) 간의 서비스 접근을 용이하게 합니다.

SRV 레코드는 온프레미스 인프라를 클라우드로 안전하게 연결하고, 복잡한 분산 서비스를 효율적으로 관리하는 **'주소록이자 교통 통제 시스템'**의 역할을 계속하고 있습니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글