Do serca DNS – pliki stref

W poprzednich rozdziałach zapoznaliśmy się ze szczegółami pliku konfiguracyjnego przykładowego serwisu DNS opartego o system Linux i daemon bind. Czas najwyższy zanurkować w głąb stref aby zrozumieć zasady ich zdiałania.

Zakładając, że w głównym pliku konfiguracyjnym wprowadziliśmy definicję strefy:

zone "fafik.com" {
type master;
file "fafik.com.zone";
};

w pliku fafik.com.zone musimy zdefiniować szczegóły:

$ORIGIN fafik.com.
$TTL 86400

@ IN SOA dns1.fafik.com. hostmaster.fafik.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day

IN NS dns1.fafik.com.
IN NS dns2.fafik.com.
IN MX 10 mail.fafik.com.
IN MX 20 mail2.fafik.com.
dns1 IN A 10.0.1.1
dns2 IN A 10.0.1.2
server1 IN A 10.0.1.5
server2 IN A 10.0.1.6
ftp IN A 10.0.1.3
IN A 10.0.1.4
mail IN CNAME server1
mail2 IN CNAME server2
www IN CNAME server1

Zatem – co to właściwie wszystko jest? Znakami dolara opatrzone są tzw. zmienne globalne – TTL czyli Time To Live to czas życia strefy w pamięci cache poszczególnych serwerów DNS oraz ORIGIN czyli tzw. namespace w którym pracuje zona, który będzie uzupełniał skrócone rekordy w dalszej części pliku. Np. weźmy pojedynczą linię:

server1 IN A 10.0.1.5

Mówi on o tym, że rekord server1 będzie rozwiązywany na adres 10.0.1.5. Parametr ORIGIN umożliwia zastosowanie takiej skróconej nazwy server1 zamiast serverv1.fafik.com ponieważ sam dołoży na końcu odpowiedni suffix domenowy.

Dalej mamy definicję @ czyli w to miejsce wstawiany jest parametr $ORIGIN i rekord SOA (start of authority w którym określamy czasy życia), główny serwer dns dla strefy, hostmastera i numer seryjny.

W ty miejscu wspomnieć należy, że są różne rodzaje rekordów np.

  • A – rekord mapowania adresu na nazwe
  • PTR – odwrotny rekord mapuje nazwe na adres w strefach reverse lookup
  • AAAA – podobny jak A tylko dla Ipv6
  • MX – master exchanger czyli serwer mailowy
  • CNAME – alias do innego rekordu
  • NS – name server – czyli serwer DNS jaki odpowiada za rekord
  • TXT – rekord tekstowy o wielorakim zastosowaniu – często stosuje się go do weryfikacji SSL, do ustanawiania polityki SPF lub po prostu do opatrywania czegoś komentarzem
  • SRV – rekord usługi – szczególnie używany w odniesieniu do systemów Windows i domeny Active Directory do identyfikacji usług np. kerberos, ldap, itp. Posiad a inną składnię:

 <usługa> TTL <klasa> SRV <priorytet><waga><port><cel>

Istnieje także wiele innych mnie popularnych rekordów np.

  • DNAME – mapujący domenę
  • RRSIG,NSEC,DS,SIG – rekordy związane z bezpieczeństwem serwisu DNS w oparciu o DNSSEC. (o tym popiszemy osobno)
  • ISDN – przestarzały dot. usługi ISDN
  • HINFO – host info – niosący informację o hoście (CPU/OS)

Generalnie konstrukcja rekordu jest następująca

<nazwa rekordu > IN <typ rekordu> <wartość>

I tak w naszym przykładzie

@ IN NS dns1.fafik.com.

Oznacza, że strefa @ (fafik.com) przechowywana jest na serwerze dns1, a z kolei:

dns1 IN A 10.0.1.1

mówi, że ów dns1 znajduje się pod adresem 10.0.1.1. Czyli jeżeli używamy testowego klienta ustawionego na serwer DNS zawierający strefę to po przeprowadzeniu próby ping dns1.fafik.com, powinniśmy otrzymywać odpowiedzi z 10.0.1.1 (nazwa rozwiązana na adres).

I tak dalej, i tym podobne. Pliki stref mogą zawierać tysiące rekordów, nie powinny jednak zawierać adresów IP mieszanych lokalnych z publicznymi. Posiadamy np. domenę wewnętrzną fafik.local, która ma swój serwer DNS zawierający mapowania do lokalnych usług (lokalnych adresów) np.

service01 IN A 10.0.0.1
privatecloud IN A 10.0.2.2

Zwykle taki serwer DNS nazywa się internalowym i odpowiada on za rozwiązywanie nazw dla maszyn z wewnątrz przedsiębiorstwa. Z zewnątrz z kolei maszyna nikt nie powinien znać i móc rozwiązać takich nazw jak privatecloud, czy service01. Zamiast tego powinien z kolei rozwiązywać IP dla strony internetowej i rekordu WWW. Serwer, który za to odpowiada nazywamy externalowym i zawiear on mapowania publicznych rekordów na publiczne adresy IP np:

www IN A 89.123.23.1