DNS (Domain Name System) krótkie wprowadzenie¶
DNS to system serwerów oraz protokół komunikacyjny (działający w oparciu o UDP) zapewniający zamianę adresów symbolicznych (np. 0x1fff.com) znanych użytkownikom Internetu na adresy zrozumiałe dla urządzeń tworzących sieć komputerową (np. 192.168.0.1).
Budowa systemu została opisana już w roku 1982 w dokumencie IETF-RFC819, natomiast dokumenty z roku 1983 RFC 882 i RFC 883 były oficjalną specyfikacją protokołu DNS, aż do roku 1989.
Obecnie system DNS jest zdefiniowany, przez następujące RFC:
Żeby zacząć przygodę z DNS, wypadało by poznać jeszcze parę pojęć:
Co to jest FQDN? (za Wikipedią)
FQDN (ang. Fully Qualified Domain Name) - pol. pełna, jednoznaczna nazwa domenowa, określająca położenie danego węzła w systemie DNS.
Składa się zwykle z nazwy hosta i co najmniej jednej domeny (etykiety) wyższego poziomu rozdzielonych symbolem „.” i kończy się zawsze domeną najwyższego poziomu.
Na przykład www.wikipedia.org
jest pełną nazwą domenową:
www
oznacza hosta,
wikipedia
jest domeną drugiego poziomu,a
.org
domeną najwyższego poziomu.
W systemie DNS FQDN zawsze kończy się kropką, nazw bezwzględne kończą
się kropką - jest bardzo ważne (np: ns1.0x1fff.com.
).
Typy rekordów i ich przeznaczenie¶
By system DNS mógł działać, każda domena musi mieć swój serwer autorytatywny (master) dostarczający informacje o domenie.
Serwer taki posiada rekord SOA
- Start Of Authority Record - w którym są zapisane
informacje techniczne o domenie.
Parametry rekordu SOA¶
Numer seryjny domeny - jakakolwiek zmiana w konfiguracji domeny, powinna być poprzedzona zmianą numeru seryjnego (najczęściej wpisywana jest data zmiany)
Czas życia (Time To Live) decyduje o tym, jak długo serwery cachujące mogą przetrzymywać informację o rekordach w swoich buforach
Częstość odświeżania (refresh) decyduje o tym, jak często serwery dodatkowe będą sprawdzać, czy ich dane na temat strefy są aktualne.
Częstość powtórek (retry) jeśli serwerowi dodatkowemu nie uda się skontaktować z serwerem podstawowym po czasie odświeżania, to próbuje co co czas określony w polu retry.
Czas wygaśnięcia (expire) Jeśli serwerowi dodatkowemu nie uda się skontaktować z serwerem podstawowym przez czas wygaśnięcia, to zaczyna usuwać stare dane. Czas wygaśnięcia zawsze powinien być znacznie większy od częstości odświeżania i powtórek.
Przykład wykorzystania tych danych wygląda tak:
$TTL 64
0x1fff.com. IN SOA batnet.pl. root.batnet.pl. (
2009032514 ; serial
8H ; refresh
2H ; retry
1W ; expire
1D) ; ttl
Najważniejsze typy rekordów DNS, oraz ich znaczenie¶
Rekordy serwerów nazw (ang. name server record - NS)¶
Rekordy NS pozwalają na mapowanie nazwy domenowej na listę serwerów DNS dla tej domeny. Wpis rekordu NS powinien zawierać adresy/nazwy serwerów, które obsługują domenę.
IN NS ns1.host.pl.
Rekordy adresów (ang. address record - A)¶
Rekordy A przypisują nazwom 32 bitowe adresy IPv4. Pierwsze pole wpisu zawsze jest rozwijane do FQDN, aby temu zapobiec należy dodać użyć bezwzględnego wpisu z kropką na końcu lub znakiem «@» (at).
test IN A 127.0.0.1 ; to samo co niżej
test.0x1fff.com. IN A 127.0.0.1 ; to samo co wyżej
test.0x1fff.com@ IN A 127.0.0.1 ; to samo co wyżej
test.0x1fff.com. IN A 192.168.0.1 ; i jeszcze to
Jest możliwość mapowania jednej nazwy na kilka adresów IP celem rozładowania obciążenia - algorytm miał być podobny do Round Robina, ale ze względu na specyfikę (rozproszoność, cachowanie) systemu DNS - średnio takie coś działa. Niemniej jednak, by uzyskać taką funkcjonalność należy wpisać różne rekordy A z taką samą nazwą, ale z różnymi adresami IP.
IN A 192.168.0.1 ; wpis dla calej domeny 0x1fff.com => 192.168.0.1
test IN A 192.168.0.1
test IN A 192.168.0.2
test.0x1fff.com. IN A 192.168.0.3
Rekordy adresów IPv6 (ang. IPv6 address record - AAAA)¶
Rekordy AAAA przypisują nazwom 128-bitowe adresy IPv6. Wpisy wyglądają i mają taka samą funkcjonalności jak w przypadku rekordu A, oraz również zezwalają na load balancing.
testv6 IN AAAA 2001:db8::1428:57ab
testv6.0x1fff.com. IN AAAA 2001:db8::1428:57ab ; to samo co wyzej
@ IN AAAA 2001:db8::1428:57ab ; dla głównej domeny
Rekordy aliasów (ang. canonical name record - CNAME)¶
Rekord CNAME pozwala na stworzenie aliasu nazwy domeny. Wszystkie wpisy DNS oraz pod domeny są poprawne także dla aliasu.
Przykładem zastosowania rekordu typu CNAME, może być sytuacja w której rekord A „tp-link” wskazujący na adres IP 192.168.0.1, to kolejna nazwa (np. „router”) wskazująca na ten sam aders IP powinna być rekordem CNAME wskazującym na istniejącą już nazwę. Inne
przykłady zastosowania to:
jest wiele nazw domenowych dla tego samego adresu IP.
wskazywany rekord jest poza bieżącą strefą (np. przekierowanie usług na serwery Google) - tutaj trzeba pamiętać o kropce na końcu wpisu
jeśli wymagane jest przechwycenie wszystkich odwołań do strefy (rekord CNAME wieloznaczny)
tp-link IN A 192.168.0.1
router IN CNAME tp-link
moj-router IN CNAME tp-link.0x1fff.com.
* IN CNAME tp-link ; rekord wieloznaczny
Rekordy wymiany poczty (ang. mail exchange record - MX)¶
Rekordy MX służą do obsługi poczty, wpis rekordu składa się adresu komputera do którego poczta ma być kierowana, oraz tzw. liczby preferowanej - ustalającej priorytet w tym wypadku jest to kolejność łączenia się z serwerami poczty. Jeśli domena posiada kilka wpisów MX, domyślnym będzie ten z najniższą liczbą preferowaną.
IN MX 1 ASPMX.L.GOOGLE.COM.
IN MX 5 ALT1.ASPMX.L.GOOGLE.COM.
IN MX 5 ALT2.ASPMX.L.GOOGLE.COM.
IN MX 10 ASPMX2.GOOGLEMAIL.COM.
IN MX 10 ASPMX3.GOOGLEMAIL.COM.
IN MX 10 ASPMX4.GOOGLEMAIL.COM.
IN MX 10 ASPMX5.GOOGLEMAIL.COM.
Rekordy PTR (ang. pointer record)¶
Zamienia adres IPv4 lub IPv6 na nazwę kanoniczną hosta.
Określenie rekordu PTR dla nazwy hosta (ang. hostname) w domenie in-addr.arpa
(IPv4), bądź ip6.arpa
(IPv6),
który odpowiada adresowi IP, pozwala na dokonanie odwrotnej translacji adresów DNS (ang. reverse DNS lookup).
By móc zmodyfikować strefę odwrotną trzeba mieć odpowiednie prawa.
Jednemu adresowi IPv4 i IPv6 może być przypisana jedna nazwa kanoniczna (w przypadku innych rekordów nie ma takiego ograniczenia).
130 IN PTR rev130.0x1fff.com.
131 IN PTR rev131.0x1fff.com.
132 IN PTR rev132.0x1fff.com.
133 IN PTR rev133.0x1fff.com.
Rekordy (TXT) tekstowe¶
Rekordy TXT mogą służyć do dołączenia dowolnego tekstu i nazwy do rekordu DNS.
Często są używane do zaimplementowania informacji o tym, które adresy z danej domeny mogą wysyłać pocztę (systemy antyspamowe - specyfikacja Sender Policy Framework).
TXT "v=spf1 ip4:195.82.172.129 ip4:195.82.172.28 a mx ~all"
Rekordy serwisów (ang. service record - SRV)¶
Zawierają dodatkowe informacje dotyczące usług, którą udostępnia serwer wskazywany przez adres DNS.
Nazwy rekordów SRV powstają ze sklejenia nazwy usługi, protokołu (tcp lub udp) i nazwy domeny (w bieżącej strefie) np. _sip._tcp
dla rekordu SRV dla VoIP.
Rekordy te sa powszechnie używane w usłudze Jabber.
; srvce.prot.name ttl class rr pri weight port target
_xmpp-server._tcp.0x1fff.com. IN SRV 5 0 5269 xmpp-server.l.google.com.
_xmpp-server._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server1.l.google.com.
_xmpp-server._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server2.l.google.com.
_xmpp-server._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server3.l.google.com.
_xmpp-server._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server4.l.google.com.
_jabber._tcp.0x1fff.com. IN SRV 5 0 5269 xmpp-server.l.google.com.
_jabber._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server1.l.google.com.
_jabber._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server2.l.google.com.
_jabber._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server3.l.google.com.
_jabber._tcp.0x1fff.com. IN SRV 20 0 5269 xmpp-server4.l.google.com.
_xmpp-client._tcp.0x1fff.com. IN SRV 5 0 5269 talk.l.google.com.
_xmpp-client._tcp.0x1fff.com. IN SRV 20 0 5269 talk1.l.google.com.
_xmpp-client._tcp.0x1fff.com. IN SRV 20 0 5269 talk2.l.google.com.
_xmpp-client._tcp.0x1fff.com. IN SRV 20 0 5269 talk3.l.google.com.
_xmpp-client._tcp.0x1fff.com. IN SRV 20 0 5269 talk4.l.google.com.
Inne typy rekordów w systemie DNS¶
To był opis najczęściej używanych typów rekordów DNS - by uzyskać więcej informacji, np. o tym jak działa cały system, jak przetwarzane są zapytania itp. polecam zajrzeć do referencji umieszczonych na dole artykułu.
Oprócz tych ustawień serwer BIND posiada plik konfiguracyjny w którym podaje się jakie domeny są hostowane, oraz jakie inne hosty mogą ją transferować całą jej zawartość.
Zwykle te komputery to dodatkowe serwery DNS dla strefy.
W celu ochrony lista ta nie powinna być za duża, przykładowy plik do włączenia strefy wygląda następująco:
zone "0x1fff.com" {
type master;
file "master/0x1fff.com";
allow-update { none; };
allow-query { any; };
allow-transfer { 193.111.27.194; 194.145.96.21; };
};
Rodzaje odpowiedzi na zapytania DNS¶
autorytatywne
- dotyczące domeny w strefie, nad którą dany serwer DNS ma zarząd, pochodzą one bezpośrednio z bazy danych serweranieautorytatywne
- dane które zwraca serwer pochodzą spoza zarządzanej przez niego strefy (np. serwer cachujący)
Narzędzia przydatne podczas testowania usług DNS¶
host
Darmowe serwery DNS¶
Więcej informacji¶
W sumie ostatnio koledze coś konfigurowałem z domeną graniec.pl i powiem, że zostałem pozytywnie zaskoczony szybkością reakcji serwisu u którego domena była wykupiona (domenyonline.pl), więc właśnie dlatego podlinkuje do nich.