DNS – Rekord typu SRV, użycie dla SIP

  DNS, Rekordy DNS, Teoria DNS

SIP (Session Initiation Protocol) to protokół internetowy przeznaczony do transmisji sygnalizacji w telefonii internetowej. Standardowo UDP korzysta z portu 5060, ale może działać też nad TCP/5060. Protokół definiuje RFC 3261, i jest modyfikowany kolejnymi RFC. W niniejszym artykule nie będziemy zajmować się samym protokołem, ale jego powiązaniem z domenami i DNS.

Podczas rozmowy przez Internet przy użyciu technologii VoIP (Voice over IP), do identyfikacji odbiorcy wykorzystywane są adresy SIP (SIP URI) w formacie sip: imie@domena. Jest to podobne jak w przypadku e-maili, adres zawiera nazwę domeny, która oferuje usługi telefoniczne (chodzi tu np. o dostawców usług telefonicznych) oraz lokalną nazwę rozpoznawaną przez odpowiedni serwer VoIP. Domena zawiera wtedy niezbędne rekordy w DNS, analogiczne do rekordów MX dla e-maili, które informują o tym, z którym serwerem powinniśmy się połączyć, aby skontaktować się z kimś z danej domeny. Dzięki temu możliwe jest oddzielenie tych adresów od dostawcy usługi VoIP (przy zmianie dostawcy właściciel domeny zmieni jedynie odpowiedni rekord DNS, który będzie wskazywał na serwery nowego dostawcy). Chodzi tu konkretnie o rekordy SRV, które są wykorzystywane nie tylko do celów SIP, a informacje dla SIP znajdują się na specjalnych subdomenach _sip._udp.domena, lub _sip._tcp.domena. Rekord typu SRV jest zdefiniowany w RFC 2782.

Rekord typu SRV

Rekord typu SRV zawiera następujące dane:

  • priorytet – podobnie jak w przypadku rekordów MX, połączenie nawiązywane jest najpierw z serwerem o najniższym priorytecie, a w przypadku, gdy zakończy się niepowodzeniem, podejmowana jest kolejna próba połączenia z kolejnym serwerem
  • waga – względna waga rekordu dla rekordów o tym samym priorytecie
  • numer portu
  • host docelowy (nazwa domeny)

Wspomniany powyżej parametr „waga” określa, jaki powinien być względny rozkład obciążenia dla serwerów, które mają ten sam priorytet. Jeśli pierwszy rekord ma wagę 10, a drugi – 90, próba połączenia z drugi serwerem zostanie podjęta w 90% przypadków, a z pierwszym w pozostałych 10%. Wadą tego rozłożenia jest to, że są to dane statyczne, które nie uwzględniają rzeczywistego aktualnego obciążenia tych serwerów. Ponadto rozkład ten jest względny tylko w obrębie jednego kontaktującego się klienta. Nie zna on bowiem częstotliwości komunikacji ze strony innych klientów.

W poniższym przykładzie pokażemy, w jaki sposób możemy skontaktować się z kimś przy użyciu protokołu SIP na domenie nic.cz.
Jeśli serwer DNS tej domeny zapytamy o subdomenę „_sip._udp“ i typ rekordu SRV, otrzymamy następującą odpowiedź:

;; QUESTION SECTION:
;_sip._udp.nic.cz. IN SRV

;; ANSWER SECTION:
_sip._udp.nic.cz.   1800  IN  SRV  100 100 5060 sip.nic.cz.

Z odpowiedzi dowiemy się, że mamy skontaktować się z serwerem SIP sip.nic.cz na porcie UDP 5060. Rekordy SRV mają wiele innych zastosowań. Np. Microsoft Windows używa ich do wyszukiwania kontrolera domeny, korzystają z nich także inne protokoły (XMMP, Kerberos, LDAP itp.).

Byl pro Vás tento návod užitečný?