System DNS przechowuje informacje o domenach w formie tak zwanych rekordów, podobnie jak czynią to systemy bazodanowe. Każdy rodzaj rekordu ma przyporządkowaną określoną nazwę i przeznaczenie. Umożliwiają one poprawną obsługę zapytań do domeny. Oto lista najczęściej wykorzystywanych rekordów DNS wraz z ich krótkim objaśnieniem.
A – adres IPv4 serwera
Rekord A zawiera informacje o adresie IPv4 serwera, na który ma być kierowany ruch z określonej domeny. Przykładowo, zamiast zapamiętywać adres IP 104.21.30.96 użytkownik może wpisać w pasek adresu nazwę domenową (np. magnifier.pl), po czym przeglądarka automatycznie wyśle w tle zapytanie do serwerów DNS, które na podstawie rekordów A odeślą właściwe adresy IP serwera, z niego zaś zostanie pobrana strona internetowa, którą chciał odwiedzić użytkownik.
Rekordy A są również wykorzystywane do blokowania SPAM-u w poczcie elektronicznej z użyciem Domain Name System-based Blackhole List (DNSBL).
Większość stron internetowych korzysta z pojedynczego rekordu A, niekiedy może być ich jednak więcej, szczególnie w razie stosowania techniki load-balancingu (równoważenia ruchu) round robin. Ruch przychodzący jest dystrybuowany na jeden z wielu adresów IP serwerów, z których każdy udostępnia tę samą treść.
AAAA – adres IPv6 serwera
Rekord AAAA jest identyczny w działaniu do rekordu A, z tym że zawiera informacje o adresie IPv6. Nazwa pochodzi od długości tego adresu – jest on czterokrotnie dłuższy od adresów stosowanych w protokole IPv6.
CNAME – aliasy dla domen
Rekord CNAME (Canonical Name) pozwala przypisać alternatywną nazwę (alias) dla rzeczywistej (tzw. kanonicznej) nazwy domeny.
Przykładowo, domena blog.domena.pl może mieć ustawiony rekord CNAME domena.pl. Gdy nastąpi odpytanie serwera DNS o rekordy domeny blog.domena.pl, przekazane zostaną rekordy domeny domena.pl. Oznacza to, że domena.pl jest nazwą kanoniczną dla blog.domena.pl.
Dzięki stosowaniu rekordów CNAME, w razie wystąpienia potrzeby zmiany adresu IP (np. przeniesienie na inny serwer), nie jest konieczna zmiana rekordów A dla wszystkich subdomen (np. blog, www itd.), a jedynie dla domeny kanonicznej. Sprawdza się to szczególnie wówczas, gdy tych subdomen jest wiele, a zmiana rekordu A w każdej kolejnej wymagałaby dużo czasu. Rekord CNAME przydaje się również przy stosowaniu certyfikatów SSL typu wildcard.
Rekordy CNAME mogą wskazywać na inne rekordy CNAME, jest to jednak rozwiązanie nieefektywne, ponieważ spowalnia wczytywanie się stron z uwagi na konieczność wielokrotnego wysyłania zapytań do serwera DNS i ich przetwarzania.
Rekordy MX oraz NS nie mogą natomiast na rekordy CNAME, ani rekord CNAME nie może być adresem IP.
MX – serwery e-mail
Przy pomocy rekordów MX można skierować ruch poczty elektronicznej na inny serwer zewnętrzny. Podobnie jak rekordy CNAME, rekordy MX mogą zawierać jedynie nazwy domenowe, nie adresy IP.
Zazwyczaj domena ma przypisane co najmniej dwa rekordy MX, z których jeden zawiera informacje o głównym serwerze poczty (np. mx-1.serwerpoczty.pl), druga zaś – zapasowym (np. mx-2.serwerpoczty.pl). To, który serwer jest ważniejszy, ustalane jest przy pomocy priorytetu – im niższa wartość, tym ważniejszy serwer. Jeśli więc wspomniany mx-1.serwerpoczty.pl ma ustawiony priorytet 0, jest on uznawany za główny względem zapasowego mx-2.serwerpoczty.pl z priorytetem 5. Ruch poczty będzie zawsze najpierw kierowany na główny serwer, a jeśli ten nie odpowiada (bo np. uległ awarii) – na zapasowe. W razie ustawienia identycznego priorytetu, ruch będzie równoważony między serwerami.
NS – serwery DNS
Rekordy NS zawierają informacje o serwerach DNS domeny. Zazwyczaj podaje się ich kilka, główny i zapasowe, podobnie jak w przypadku rekordów MX. Bez poprawnie skonfigurowanych rekordów NS, użytkownicy nie będą w stanie dostać się na stronę internetową z użyciem jej domeny ponieważ adres IP serwera przechowywany w rekordzie A pozostanie nieznany.
Możliwe jest ustawienie innych rekordów NS dla subdomeny niż dla domeny głównej. Wówczas zapytania dla tej subdomeny będą kierowane na inne serwery DNS niż ma to miejsce w przypadku domeny głównej, zgodnie z informacjami podanymi w rekordach NS.
SOA – informacje autorytatywne
Rekord SOA przechowuje autorytatywne informacje o strefie DNS, w tym głównym serwerze DNS, adres email administratora, numer seryjny strefy DNS, datę ostatniej aktualizacji domeny, wartości czasowe regulujące częstotliwość przesyłania danych. Każda strefa DNS może zawierać jedynie jeden rekord SOA.
SRV – usługi działające na serwerze
Rekord SRV, nazywany też rekordem usługi (service record), pozwala wskazać dodatkowe informacje o usługach działających na danym serwerze. Może być to m.in. numer portu, na którym działa usługa, zamiast jedynie adresu IP, jak ma to miejsce w przypadku rekordu A.
Rekord SRV jest wymagany przez niektóre protokoły, takie jak IMAP, XMPP (Jabber), SIP, które muszą połączyć się z określonym portem sieciowym.
TXT – pole tekstowe
Rekord TXT jest formą pola tekstowego, gdzie administrator strony może wprowadzić dodatkowe informacje o domenie. Pierwotnie wykorzystywano go do przechowywania zrozumiałych dla człowieka notatek, obecnie głównym zastosowaniem rekordu TXT jest weryfikacja własności domeny poprzez podanie odpowiedniego klucza, a także implementacja technik autentykacji w systemach antyspamowych, takich jak Sender Policy Framework (SPF).
PTR – wyszukiwanie wsteczne
Rekord PTR jest odwrotnością rekordu A i umożliwia obsługę Reverse DNS, czyli tłumaczenia adresów IP na nazwy domenowe. Rekordy PTR są wykorzystywane do zapobiegania SPAM-owi poprzez sprawdzanie adresów IP i przypisanych nazw domenowych, a także w systemach zbierania logów, gdzie adresy IP są tłumaczone na łatwiejsze dla człowieka domeny.
CAA – wystawcy certyfikatów
Rekord CAA umożliwia ustawienie podmiotu certyfikacji (certificate authority), który może wystawiać certyfikaty dla domeny i jej subdomen. Brak rekordu CAA oznacza możliwość wystawiania certyfikatów przez dowolny podmiot.
DNSKEY – klucz publiczny DNSSEC
Rekord DNSKEY zawiera klucz publiczny używany do weryfikacji w systemie DNSSEC. Umożliwia potwierdzenie autentyczności rekordów przesłanych przez serwer DNS.
Jak sprawdzić rekordy DNS domeny?
Rekordy DNS domeny są informacjami publicznie dostępnymi i można je pozyskać na kilka różnych sposobów.
Zarówno na Linuksie jak i Windowsie obecne jest narzędzie nslookup, uruchamiane odpowiednio w terminalu i wierszu polecenia.
Aby pozyskać rekordy A oraz AAAA wybranej domeny wystarczy wykonać polecenie:
nslookup <NAZWA_DOMENY>
Przykładowo:
C:\> nslookup magnifier.pl Server: ### Address: ### Non-authoritative answer: Name: magnifier.pl Addresses: 2606:4700:3034::6815:1e60 2606:4700:3033::ac43:acb7 104.21.30.96 172.67.172.183
Wykonanie powyższego polecenia umożliwiło pobranie rekordów A (adresy IPv4 serwera) oraz AAAA (adresy IPv6 serwera) dla domeny magnifier.pl.
W celu pozyskania innych rekordów, konieczne jest podanie ich typu:
nslookup -type=<TYP_REKORDU> <NAZWA_DOMENY>
Spróbujmy wyświetlić rekordy NS dla domeny magnifier.pl:
C:\>nslookup -type=ns magnifier.pl Server: ### Address: ### Non-authoritative answer: magnifier.pl nameserver = maria.ns.cloudflare.com magnifier.pl nameserver = fonzie.ns.cloudflare.com maria.ns.cloudflare.com internet address = 173.245.58.192 maria.ns.cloudflare.com internet address = 108.162.192.192 maria.ns.cloudflare.com internet address = 172.64.32.192 maria.ns.cloudflare.com AAAA IPv6 address = 2a06:98c1:50::ac40:20c0 maria.ns.cloudflare.com AAAA IPv6 address = 2606:4700:50::adf5:3ac0 maria.ns.cloudflare.com AAAA IPv6 address = 2803:f800:50::6ca2:c0c0
Wykonane polecenie wyświetliło rekordy NS oraz adresy IP (zarówno IPv4 jak i IPv6) głównego serwera DNS, w tym przypadku maria.ns.cloudflare.com.
Użytkownicy systemów Linux mogą także wykorzystać nieco bardziej zaawansowane narzędzie dig.
Jeśli natomiast z jakiegoś powodu nie lubimy się z konsolą lub wierszem polecenia, skorzystać można z dostępnych w Internecie stron internetowych realizujących to samo zadanie, np. MXToolbox.
Wystarczy wpisać nazwę domeny by wyświetlić jej rekordy A. Pozostałe rekordy można pobrać korzystając z menu drop-down obok przycisku “DNS Lookup”.