SRV 레코드
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
SRV 레코드는 DNS(Domain Name System)의 한 유형으로, 특정 서비스의 위치 정보를 제공한다. SRV 레코드는 서비스 이름, 프로토콜, 도메인 이름, 우선순위, 가중치, 포트, 대상 호스트 이름 등의 정보를 포함하며, 클라이언트가 서비스를 찾고 연결하는 데 사용된다. SRV 레코드는 부하 분산 및 서비스 가용성 향상에 기여하며, SIP, XMPP, LDAP, Kerberos 등 다양한 프로토콜에서 활용된다. IANA(Internet Assigned Numbers Authority)가 SRV 레코드와 관련된 서비스 이름 레지스트리를 관리한다.
더 읽어볼만한 페이지
- 도메인 네임 시스템 - 국제화 국가 코드 최상위 도메인
국제화 국가 코드 최상위 도메인은 다양한 언어의 문자를 국가 코드 최상위 도메인에 사용할 수 있도록 하는 시스템으로, 2009년부터 신청을 받아 아랍어, 러시아어, 중국어 등 다양한 국가에서 도입되었으나 혼동 가능성과 보안 문제 등의 과제도 안고 있다. - 도메인 네임 시스템 - DNSSEC
DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다.
SRV 레코드 | |
---|---|
SRV 레코드 | |
종류 | DNS 레코드 |
영어 명칭 | SRV record (Service record) |
설명 | 특정 서비스를 제공하는 호스트의 위치를 지정하는 데이터 레코드 |
상세 정보 | |
형식 | _서비스._프로토콜.이름. TTL 클래스 SRV 우선 순위 가중치 포트 타겟 |
서비스 | 제공되는 서비스의 기호 이름. |
프로토콜 | 서비스에 사용되는 프로토콜 (일반적으로 TCP 또는 UDP). |
이름 | 도메인 이름. |
TTL | 표준 DNS TTL 값. |
클래스 | 표준 DNS 클래스 (일반적으로 IN). |
우선 순위 | 대상 호스트의 우선 순위. 값이 낮을수록 우선 순위가 높음. |
가중치 | 동일한 우선 순위를 가진 여러 호스트 간의 상대적 가중치. |
포트 | 서비스가 실행되는 TCP 또는 UDP 포트 번호. |
타겟 | 서비스를 제공하는 호스트의 정규화된 도메인 이름. |
예시 | |
레코드 | _sip._tcp.example.com. 86400 IN SRV 10 5060 sipserver.example.com. |
설명 | "example.com" 도메인에서 TCP 프로토콜을 통해 SIP 서비스를 제공하는 호스트는 "sipserver.example.com"이며, 포트 번호는 5060이고, 우선 순위는 10이고, 가중치는 기본값임. |
2. 레코드 포맷
SRV 레코드는 `_service._proto.name. TTL class SRV priority weight port target.` 형태를 갖는다. 각 필드에 대한 설명은 다음과 같다.
- `service`: 원하는 서비스의 기호 이름이다.
- `proto`: 원하는 서비스의 전송 프로토콜로, 일반적으로 TCP 또는 UDP이다.
- `name`: 이 레코드가 유효한 도메인 이름으로, 마침표로 끝난다.
- `TTL`: 표준 DNS 생존 시간 필드이다.
- `IN`: 표준 DNS 클래스 필드 (항상 `IN`이다).
- `SRV`: 레코드 유형 (항상 `SRV`이다).
- `priority`: 대상 호스트의 우선 순위로, 값이 낮을수록 선호도가 높다.
- `weight`: 동일한 우선 순위를 가진 레코드에 대한 상대적인 가중치로, 값이 높을수록 선택될 확률이 높다.
- `port`: 서비스가 위치한 TCP 또는 UDP 포트이다.
- `target`: 서비스를 제공하는 머신의 정식 호스트 이름으로, 마침표로 끝난다.
MX 레코드와 마찬가지로, SRV 레코드의 대상은 A 또는 AAAA 레코드가 있는 호스트 이름을 가리켜야 하며, CNAME 레코드가 있는 호스트 이름을 가리키는 것은 유효하지 않다.[1]
2. 1. 예시
다음은 SIP 서비스에 대한 SRV 레코드의 예시이다.`_sip._tcp.example.com. 86400 IN SRV 0 5 5060 sipserver.example.com.`
이 레코드는 `example.com` 도메인에서 TCP 프로토콜을 사용하는 SIP 서비스가 `sipserver.example.com` 호스트의 5060 포트에서 제공되며, 우선순위는 0, 가중치는 5임을 나타낸다.[1]
3. 서비스 가용성 향상
SRV 레코드는 `priority` 및 `weight` 필드를 사용하여 로드 밸런싱과 페일오버를 구현할 수 있게 해준다.
`priority`값이 같은 여러 SRV 레코드가 있는 경우, 클라이언트는 `weight` 필드 값에 비례하여 부하 분산을 수행한다.
아래는 ''우선순위''와 ''가중치'' 필드를 사용하여 부하 분산과 백업 서비스를 함께 제공하는 예시이다.
_service._proto.name. | TTL | class | SRV | priority | weight | port | target. |
---|---|---|---|---|---|---|---|
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 60 | 5060 | bigbox.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox1.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox2.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 20 | 0 | 5060 | backupbox.example.com. |
SRV 레코드를 통한 부하 분산은 정보가 정적이므로 본질적으로 제한적이다. TTL 값이 낮지 않으면(약 1분 이하) 서버의 현재 부하가 제대로 반영되지 않는다.
3. 1. 우선 순위 (Priority)
''우선순위'' 필드는 레코드 데이터 사용의 우선 순위를 결정한다. 클라이언트는 가장 낮은 번호의 우선 순위 값을 가진 SRV 레코드를 먼저 사용하고, 연결에 실패할 경우 더 높은 값의 레코드로 대체해야 한다. 서비스가 동일한 우선 순위 값을 가진 여러 SRV 레코드를 가지고 있는 경우, 클라이언트는 ''가중치'' 필드 값에 비례하여 해당 레코드에 대해 부하 분산을 수행해야 한다.다음 예제에서 ''우선순위''와 ''가중치'' 필드는 부하 분산과 백업 서비스를 함께 제공하는 데 사용된다.
_service._proto.name. | TTL | class | SRV | priority | weight | port | target. |
---|---|---|---|---|---|---|---|
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 60 | 5060 | bigbox.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox1.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox2.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 20 | 0 | 5060 | backupbox.example.com. |
처음 세 레코드는 우선순위 10을 공유하므로 클라이언트는 가중치 필드의 값을 사용하여 연락할 서버(호스트 및 포트 조합)를 결정한다. 세 가중치 값의 합은 100이므로, `bigbox.example.com`은 60%의 시간 동안 사용된다. `smallbox1`과 `smallbox2`는 총 요청의 40%에 대해 사용되며, 그 중 절반은 `smallbox1`로 보내지고 나머지는 `smallbox2`로 전송된다. `bigbox`를 사용할 수 없는 경우, 이 두 대의 남은 머신은 각각 50%의 시간 동안 선택되므로 부하를 동일하게 공유한다.
우선순위 10의 세 서버를 모두 사용할 수 없는 경우, 다음으로 낮은 우선 순위 값인 `backupbox.example.com` 레코드가 선택된다. 이것은 아마도 처음 세 호스트를 사용할 수 없게 만드는 모든 것에 취약하지 않은 다른 물리적 위치의 머신일 수 있다.
SRV 레코드가 제공하는 부하 분산은 본질적으로 제한적이다. 정보가 본질적으로 정적이므로, TTL 값이 우선 순위(또는 가중치) 값을 빠르게 업데이트할 수 있을 만큼 낮지 않으면(약 1분 이하), 서버의 현재 부하는 고려되지 않는다.
3. 2. 가중치 (Weight)
서비스가 동일한 우선 순위 값을 가진 여러 SRV 레코드를 가지고 있는 경우, 클라이언트는 ''가중치'' 필드 값에 비례하여 해당 레코드에 대해 부하 분산을 수행해야 한다.다음은 ''우선순위''와 ''가중치'' 필드를 사용하여 부하 분산과 백업 서비스를 함께 제공하는 예시이다.
_service._proto.name. | TTL | class | SRV | priority | weight | port | target. |
---|---|---|---|---|---|---|---|
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 60 | 5060 | bigbox.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox1.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox2.example.com. |
_sip._tcp.example.com. | 86400 | IN | SRV | 20 | 0 | 5060 | backupbox.example.com. |
처음 세 레코드는 우선순위 10을 공유하므로 클라이언트는 가중치 필드의 값을 사용하여 연락할 서버(호스트 및 포트 조합)를 결정한다. 세 가중치 값의 합은 100이므로, `bigbox.example.com`은 60%의 시간 동안 사용된다. `smallbox1`과 `smallbox2`의 두 호스트는 총 요청의 40%에 대해 사용되며, 그 중 절반은 `smallbox1`로 보내지고 나머지는 `smallbox2`로 전송된다. `bigbox`를 사용할 수 없는 경우, 이 두 대의 남은 머신은 각각 50%의 시간 동안 선택되므로 부하를 동일하게 공유한다.
우선순위 10의 세 서버를 모두 사용할 수 없는 경우, 다음으로 낮은 우선 순위 값인 `backupbox.example.com` 레코드가 선택된다. 이것은 아마도 처음 세 호스트를 사용할 수 없게 만드는 모든 것에 취약하지 않은 다른 물리적 위치의 머신일 수 있다.
SRV 레코드가 제공하는 부하 분산은 본질적으로 제한적이다. 정보가 본질적으로 정적이므로, TTL 값이 우선 순위(또는 가중치) 값을 빠르게 업데이트할 수 있을 만큼 낮지 않으면(약 1분 이하), 서버의 현재 부하는 고려되지 않는다.
3. 3. 예시
다음은 부하 분산과 백업 서비스를 함께 제공하는 SRV 레코드의 예시이다.서비스 | 프로토콜 | 이름 | TTL | 클래스 | SRV | 우선순위 | 가중치 | 포트 | 대상 |
---|---|---|---|---|---|---|---|---|---|
_sip | _tcp | example.com. | 86400 | IN | SRV | 10 | 60 | 5060 | bigbox.example.com. |
_sip | _tcp | example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox1.example.com. |
_sip | _tcp | example.com. | 86400 | IN | SRV | 10 | 20 | 5060 | smallbox2.example.com. |
_sip | _tcp | example.com. | 86400 | IN | SRV | 20 | 0 | 5060 | backupbox.example.com. |
위 표에서 처음 세 레코드는 우선순위가 10으로 동일하므로, 클라이언트는 가중치 값을 기준으로 서버를 선택한다. 가중치 값의 총합은 100이므로, `bigbox.example.com`은 60%의 확률로 사용된다. `smallbox1.example.com`과 `smallbox2.example.com`은 각각 20%의 확률로 사용된다. 만약 `bigbox.example.com`을 사용할 수 없게 되면, `smallbox1.example.com`과 `smallbox2.example.com`이 각각 50%의 확률로 선택되어 부하를 분산한다.
만약 우선순위 10인 세 서버를 모두 사용할 수 없으면, 가장 낮은 우선순위 값인 `backupbox.example.com` 레코드가 선택된다. 이 서버는 다른 물리적 위치에 있을 가능성이 높아, 앞의 세 호스트가 모두 사용 불가능한 상황에서도 작동할 수 있다.
SRV 레코드를 통한 부하 분산은 정보가 정적이기 때문에 제한적이다. TTL 값이 낮지 않으면 서버의 현재 부하가 제대로 반영되지 않을 수 있다.
4. 사용 사례
SRV 레코드는 다양한 인터넷 프로토콜 및 서비스에서 사용된다.
SRV 레코드는 여러 통신 프로토콜 및 응용 프로그램에서 사용된다. 다음은 그 예시이다.
프로토콜/서비스 | 설명 |
---|---|
APT[2] | 소프트웨어 패키지 관리 |
CalDAV 및 CardDAV[3] | 캘린더 및 주소록 공유 |
Ceph[4] | 분산 스토리지 시스템 |
DANE | DNSSEC 기반 인증 |
Factorio[5][6][7] | 게임 서버 검색 |
호스트 ID 프로토콜 | 호스트 식별 |
SMTP 발신, POP, 및 IMAP[10] | 이메일 서비스 |
Matrix.org[11] | 분산 실시간 통신 |
IMPS[15] | 인스턴트 메시징 |
Puppet[16] | 구성 관리 |
Rust[17] | 게임 서버 검색 |
STUN | NAT 통과 지원 |
Teamspeak 3[18][19] | 음성 통신 |
Outlook 2007, 2010 및 Macintosh 10.6 메일 | Exchange 자동 검색 서비스 |
OpenPGP 웹 키 디렉터리의 이전 버전 인터넷 초안은 웹 서버를 통해 OpenPGP 키를 검색하기 위해 SRV 레코드를 사용했으나,[22] 이후 버전에서는 더 이상 포함되지 않는다.[23]
SRV 레코드 및 프로토콜에 대한 서비스 이름 레지스트리는 인터넷 할당 번호 기관(IANA)에서 RFC 6335에 정의된 대로 관리한다.[24]
4. 1. 주요 프로토콜
SRV 레코드는 다음과 같은 표준화된 통신 프로토콜과 함께 사용되는 경우가 많다.- SIP[20]
- XMPP[20]
- LDAP[9]
- Kerberos[8]
- DNS-SD
마이크로소프트 윈도우 2000 클라이언트는 특정 서비스의 도메인 컨트롤러를 결정하기 위해 SRV 레코드를 쿼리한다. SRV 레코드는 또한 Outlook 2007, 2010 및 Macintosh 10.6 메일에서 Exchange 자동 검색 서비스를 찾는 데 사용된다.[21] 마이크로소프트 윈도우 네트워크에서 도메인 컨트롤러는 DNS에서 액티브 디렉터리에 대한 네트워크 서비스 유형을 등록한다.
4. 2. 마이크로소프트 환경
마이크로소프트 윈도우 2000 클라이언트는 특정 서비스의 도메인 컨트롤러를 확인하기 위해 SRV 레코드를 쿼리한다. 마이크로소프트 윈도우 네트워크에서 도메인 컨트롤러는 DNS에 액티브 디렉터리에 대한 네트워크 서비스 유형을 등록한다.[21]4. 3. 기타 서비스
SRV 레코드는 마인크래프트[12], MongoDB[13], Mumble[14] 등 다양한 애플리케이션에서도 활용된다.SRV 레코드는 다음과 같은 통신 프로토콜과 함께 사용되는 경우가 많다.
- APT[2]
- CalDAV 및 CardDAV[3]
- Ceph[4]
- DANE
- DNS 서비스 검색(DNS-SD)
- Factorio[5][6][7]
- 호스트 ID 프로토콜
- Kerberos[8]
- LDAP[9]
- SMTP 발신, POP, 및 IMAP[10]
- Matrix.org[11]
- 마인크래프트[12]
- MongoDB[13]
- Mumble[14]
- IMPS[15]
- Puppet[16]
- Rust[17]
- 세션 개시 프로토콜
- STUN
- Teamspeak 3[18][19]
- XMPP[20]
마이크로소프트 윈도우 2000 클라이언트는 특정 서비스의 도메인 컨트롤러를 결정하기 위해 SRV 레코드를 쿼리한다. SRV 레코드는 또한 Outlook 2007, 2010 및 Macintosh 10.6 메일에서 Exchange 자동 검색 서비스를 찾는 데 사용된다.[21] 마이크로소프트 윈도우 네트워크에서 도메인 컨트롤러는 DNS에서 액티브 디렉터리에 대한 네트워크 서비스 유형을 등록한다.
OpenPGP 웹 키 디렉터리의 이전 버전의 인터넷 초안은 웹 서버를 통해 OpenPGP 키를 검색하기 위해 SRV 레코드를 사용했으나,[22] 이후 버전에서는 더 이상 포함되지 않는다.[23]
SRV 레코드 및 프로토콜에 대한 서비스 이름 레지스트리는 인터넷 할당 번호 기관(IANA)에서 RFC 6335에 정의된 대로 관리한다.[24]
참조
[1]
IETF
A DNS RR for specifying the location of services (DNS SRV)
2021-12-03
[2]
웹사이트
DNS SRV record support in apt
https://salsa.debian[...]
Debian
2019-11-17
[3]
웹사이트
RFC6764: Locating Services for Calendaring Extensions to WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV)
https://www.rfc-edit[...]
[4]
웹사이트
Looking up Monitors through DNS – Ceph Documentation
http://docs.ceph.com[...]
2017-12-04
[5]
웹사이트
Version 1.1.62 - Factorio Forums
https://forums.facto[...]
2022-09-16
[6]
웹사이트
Version 1.1.67 - Factorio Forums
https://forums.facto[...]
2022-09-16
[7]
웹사이트
Add SRV Record support - Page 4 - Factorio Forums
https://forums.facto[...]
2022-09-16
[8]
웹사이트
Hostnames for the Master and Slave KDCs
http://web.mit.edu/K[...]
Massachusetts Institute of Technology
2012-05-23
[9]
IETF
OpenLDAP Root Service - An experimental LDAP referral service
https://tools.ietf.o[...]
Internet Engineering Task Force
2020-07-05
[10]
IETF
Use of SRV Records for Locating Email Submission/Access Services
https://tools.ietf.o[...]
Internet Engineering Task Force
2013-04-17
[11]
웹사이트
Federation API
https://matrix.org/d[...]
Matrix.org
2018-01-05
[12]
웹사이트
Java Edition 1.3.1
https://minecraft.wi[...]
2023-09-24
[13]
웹사이트
MongoDB Connection String URI Format
https://www.mongodb.[...]
MongoDB
2022-12-14
[14]
웹사이트
Add DNS SRV record support - mumble-voip/mumble
https://github.com/m[...]
GitHub
2020-07-05
[15]
웹사이트
Baraza - Userguide
http://baraza.im/use[...]
[16]
웹사이트
Puppet Docs: Scaling Puppet with compile masters, Using DNS SRV Records
https://puppet.com/d[...]
Puppet Labs
2019-12-17
[17]
웹사이트
Server DNS Records
https://wiki.facepun[...]
2024-11-06
[18]
웹사이트
"[Suggestion] TS DNS"
http://forum.teamspe[...]
2013-10-25
[19]
웹사이트
TeamSpeak 3 Client Version 3.0.8 Released
http://forum.teamspe[...]
2020-07-05
[20]
웹사이트
XEP-0156: Discovering Alternative XMPP Connection Methods
http://xmpp.org/exte[...]
2012-05-23
[21]
웹사이트
A new feature is available that enables Outlook 2007 to use DNS Service Location (SRV) records to locate the Exchange Autodiscover service
http://support.micro[...]
2012-05-23
[22]
웹사이트
OpenPGP Web Key Directory draft-koch-openpgp-webkey-service-06
https://datatracker.[...]
Internet Engineering Task Force
2021-06-05
[23]
웹사이트
OpenPGP Web Key Directory draft-koch-openpgp-webkey-service-12
https://datatracker.[...]
Internet Engineering Task Force
2021-06-05
[24]
IETF
Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry
https://tools.ietf.o[...]
Internet Engineering Task Force
2020-07-06
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com