SRV 레코드란?
SRV(Service) 레코드는 SIP, XMPP, LDAP, Microsoft autodiscover 같은 특정 서비스의 호스트명과 포트를, 부하 분산을 위한 우선순위 및 가중치와 함께 알립니다. A 레코드와 달리 서비스가 어디에 있는지뿐 아니라 어느 포트에 있는지까지 클라이언트에 알려 주어, 애플리케이션이 하드코딩된 구성 없이 서비스를 찾을 수 있게 합니다. _service._proto.domain 형식으로 조회합니다.
SRV 레코드 형식의 작동 원리
SRV 레코드는 독특한 패턴인 _service._proto.domain으로 이름이 지어지며, 예를 들어 _sip._tcp.example.com입니다. 밑줄은 일반 호스트명과의 충돌을 막습니다. 레코드 데이터는 네 개의 값을 담습니다. priority, weight, port, target입니다. priority는 MX처럼 작동해 낮은 숫자가 먼저 시도됩니다. weight는 같은 우선순위의 대상 간에 부하를 분배하며, 가중치가 높을수록 비례적으로 더 많은 트래픽을 받습니다. port는 서비스가 수신 대기하는 TCP 또는 UDP 포트이고, target은 이를 제공하는 호스트명으로 자체 A 또는 AAAA 레코드를 가져야 합니다.
SRV 조회 결과를 읽는 방법
IPeek는 조회한 서비스 이름에 대해 각 SRV 레코드의 priority, weight, port, target 호스트를 반환합니다. priority를 먼저 읽으세요. 클라이언트는 더 높은 것으로 넘어가기 전에 가장 낮은 우선순위의 대상을 사용합니다. 동등한 우선순위 중에서는 weight가 각 대상이 받는 트래픽 비중을 결정합니다. port가 예상하는 서비스와 일치하는지 확인하세요. SIP는 5060, LDAP는 389, 많은 autodiscover 설정은 443입니다. 각 대상이 유효한 호스트로 확인되는지 확인하세요. 결과가 비어 있으면 그 이름으로 서비스가 도메인에 광고되지 않은 것입니다.
SRV 레코드가 필요한 경우
SRV 레코드는 클라이언트가 고정된 설정에 의존하지 않고 서비스를 자동으로 검색해야 할 때마다 중요합니다. Microsoft Teams, Skype for Business, SIP 제공업체는 이를 사용해 음성과 프레즌스 서버를 찾습니다. XMPP 채팅, LDAP 디렉터리 조회, Minecraft 서버, Kerberos 모두 SRV 검색에 의존합니다. 큰 장점은 유연성입니다. 서비스를 새 호스트나 포트로 옮기거나 여러 서버에 분산해도 클라이언트가 재구성 없이 SRV 레코드를 따라갑니다. 서비스가 특정 _service._proto 이름을 요구한다면 일치하는 SRV 레코드를 게시하지 않으면 클라이언트가 찾지 못합니다.