08 - SRV (Serviços)
video: https://youtu.be/... no frontmatter da nota.Registro SRV (Service Locator)
O registro SRV (Service) é um tipo de registro DNS definido pela RFC 2782 que permite localizar serviços específicos (servidores, portas e protocolos) dentro de um domínio. Diferente dos registros A ou MX, o SRV indica não apenas o host que oferece o serviço, mas também a porta, prioridade, peso e protocolo associado.
1. Formato do Registro SRV
_service._proto.name TTL class SRV priority weight port target
1.1 Campos Detalhados
| Campo | Descrição |
|---|---|
_service |
Nome simbólico do serviço, prefixado por underscore (ex: _ldap, _sip, _kerberos). Definido pela IANA em https://www.iana.org/assignments/service-names. |
_proto |
Protocolo de transporte: _tcp ou _udp. |
name |
Domínio ao qual o serviço pertence (FQDN). |
TTL |
Tempo de cache em segundos. |
class |
Sempre IN (Internet). |
priority |
Número inteiro (0–65535). Menor prioridade = preferência. Funciona como o priority dos registros MX. |
weight |
Número inteiro (0–65535). Usado para balanceamento entre registros de mesma prioridade. Maior peso = maior probabilidade. |
port |
Porta TCP/UDP do serviço (0–65535). |
target |
FQDN do host que oferece o serviço (deve ter registro A/AAAA correspondente). |
1.2 Exemplo Prático
_sip._tcp.example.com. 86400 IN SRV 10 60 5060 sip1.example.com.
_sip._tcp.example.com. 86400 IN SRV 10 40 5060 sip2.example.com.
_sip._tcp.example.com. 86400 IN SRV 20 0 5060 sip3.example.com.
Neste exemplo, sip1 e sip2 (prioridade 10) recebem 60% e 40% do tráfego, respectivamente. sip3 (prioridade 20) só é usado caso os dois anteriores falhem.
2. Lógica de Seleção (Prioridade e Peso)
- Cliente consulta o registro SRV e obtém a lista de alvos.
- Seleciona apenas os de menor prioridade.
- Entre esses, distribui as requisições proporcionalmente ao peso (weight).
- Se todos os de menor prioridade falharem, repete o processo com a próxima prioridade.
Esse modelo replica o comportamento do MX, mas adiciona o balanceamento por peso — ausente no MX original.
3. Casos de Uso Clássicos
3.1 Microsoft Active Directory
O AD usa registros SRV extensivamente para localização de controladores de domínio, Catálogo Global, Kerberos e LDAP. Sem SRV, o AD simplesmente não funciona.
_ldap._tcp.dc._msdcs.example.com. SRV 0 100 389 dc01.example.com.
_ldap._tcp.dc._msdcs.example.com. SRV 0 100 389 dc02.example.com.
_kerberos._tcp.dc._msdcs.example.com. SRV 0 100 88 dc01.example.com.
_gc._tcp.example.com. SRV 0 100 3268 dc01.example.com.
_ldap._tcp.pdc._msdcs.example.com. SRV 0 100 389 dc01.example.com.
3.2 SIP (VoIP)
Clientes SIP (ex: softphones) consultam _sip._tcp ou _sip._udp para descobrir o servidor de registro sem configuração manual.
3.3 XMPP / Jabber
Serviços de mensageria como Jabber/XMPP usam SRV para localizar servidores:
_xmpp-server._tcp.example.com. SRV 5 0 5269 xmpp.example.com.
_xmpp-client._tcp.example.com. SRV 5 0 5222 xmpp.example.com.
3.4 Kubernetes
O discovery interno de serviços do Kubernetes baseia-se em registros SRV. Cada Service exposto gera automaticamente:
_<port>._<proto>.<svc>.<ns>.svc.cluster.local. SRV <weight> <priority> <port> <endpoint>
3.5 Outros Usos
- Minecraft (
_minecraft._tcp) - SMTP submission (
_submission._tcp) - IMAP/POP sobre TLS (
_imaps._tcp,_pop3s._tcp) - Caldav/Carddav (
_caldav._tcp,_carddav._tcp)
4. Consulta via Linha de Comando
# Consultar serviço SIP sobre TCP
dig SRV _sip._tcp.example.com +short
# Consultar localização de controladores de domínio (AD)
dig SRV _ldap._tcp.dc._msdcs.empresa.local +short
# Ver registro completo (com prioridade, peso, porta, alvo)
host -t SRV _kerberos._tcp.dc._msdcs.empresa.local
4.1 Saída Típica do dig
_sip._tcp.example.com. 86400 IN SRV 10 60 5060 sip1.example.com.
_sip._tcp.example.com. 86400 IN SRV 10 40 5060 sip2.example.com.
_sip._tcp.example.com. 86400 IN SRV 20 0 5060 sip3.example.com.
5. Diferenças em Relação ao MX
| Atributo | MX | SRV |
|---|---|---|
| Indica porta? | Não (sempre 25 SMTP) | Sim (campo port) |
| Indica protocolo? | Não (sempre TCP) | Sim (_tcp / _udp) |
| Suporta peso? | Não (apenas prioridade) | Sim |
| Caso de uso | Apenas email | Serviços arbitrários |
6. Boas Práticas
- TTL moderado: 300–3600s para permitir mudanças rápidas sem sobrecarregar autoritativos.
- Sempre criar registros A/AAAA para os
targetespecificados — SRV não resolve IP. - Não usar CNAME como target (embora tecnicamente possível em algumas implementações, gera ambiguidade).
- Documentar portas não padronizadas via SRV, evitando exigir conhecimento prévio do cliente.
- Monitorar consistência entre registros SRV publicados e serviços efetivamente ativos.
7. Resumo Técnico
| Atributo | Valor |
|---|---|
| RFC | 2782 (2000) |
| Tipo de registro | SRV (código 33) |
| Campos-chave | priority, weight, port, target |
| Software suporte | BIND, Windows DNS, PowerDNS, Knot, Unbound |
| Casos típicos | AD, SIP, XMPP, Kubernetes |
8. Conclusão
O registro SRV é a forma canônica de anunciar serviços localizáveis via DNS. Sua flexibilidade — combinar protocolo, porta, prioridade e peso — faz dele peça central do funcionamento de tecnologias críticas como Active Directory, VoIP, mensageria e orquestração de containers. Compreender seu formato e lógica de seleção é essencial para diagnosticar falhas de autenticação, problemas de roaming SIP e erros de discovery em clusters Kubernetes.