Ostatnio postanowiłem zainstalować i skonfigurować domowy serwer DNS. Powodów miąłem kilka: chciałem się nauczyć jak to zrobić, chciałem aby przeglądanie stron internetowych umieszczonym na moim domowym serwerze odbywało się szybciej (bez konieczności wychodzenia z domowego LANu) a także chciałem polepszyć ogólne działanie mojego domowego LANu poprzez przyspieszenie translacji nazw domen na adresy IP.
Według podręcznika przygotowawczego do certyfikatu RHCE autorstwa Michaela Jang, najpopularniejszym serwerem DNS internetu jest program BIND. Dlatego nie zastanawiałem się długo, jaki serwer DNS zainstalować. Rozpocząłem od instalacji tego programu na moim domowym serwerze. Oto lista pakietów, które zainstalowałem:
Powyższa lista pakietów pochodzi z książki, o której przed chwilą wspomniałem. Nie wszystkie z powyższych pakietów są konieczne, ale nie zaszkodzi ich zainstalować.
Instalacja tych pakietów w Fedorze jest bardzo prosta:
# yum -y install bind bind-chroot bind-devel bind-libbind-devel bind-libs bind-sdb \
bind-utils caching-nameserver system-config-bind
Ogólnie rzecz biorąc, istnieją cztery rodzaje serwerów DNS (nie tłumaczę nazw z angielskiego, bo nie wiem jak):
Tutaj pokażę jak skonfigurować jeden z wyżej wymienionych rodzajów serwerów: Caching only DNS server. Jest to konfiguracja, którą zastosowałem w moim LANie (z wyjątkiem kilku domen, dla których mój serwer to Master DNS server). Oznacza ona, ze serwer wszystkie zapytania referuje do ważniejszych serwerów DNS internetu, a następnie zachowuje je w pamięci tak, aby przy kolejnych zapytaniach odpowiedz osiągalna była szybciej.
Istnieje kilka plików konfiguracyjnych dla serwera DNS (BIND). Najważniejsze z nich to
/etc/named.conf
/etc/named.rfc1912.zones
Jeżeli zainstalowałeś pakiet bind-chroot, pliki te będą jedynie symbolicznymi linkami do następujących plików:
/var/named/chroot/etc/named.conf
/var/named/chroot/etc/named.rfc1912.zones
W takim przypadku, aby wyrobić sobie odpowiednie przyzwyczajenie, najlepiej edytować pliki umieszczone w folderze i podfolderach /var/named/chroot.
W Fedorze, po zainstalowaniu odpowiednich pakietów związanych z usługą BIND, w folderze /etc instalowane są domyślne pliki konfiguracyjne. Dla wygody, zamieszczam wzór takiego pliku konfiguracyjnego:
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; };
recursion yes;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
Plik ten zawiera instrukcję include, która włącza do konfiguracji plik /etc/named.rfc1912.zones. Oto jego pierwotna konfiguracja:
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
Podążając za wyżej wymienioną książką, oraz za wynikami moich poszukiwań w internecie, zmieniłem nieco powyższe pliki. Poniżej zamieszczam moją konfigurację kolejno named.conf oraz named.rfc1912.zones:
options {
listen-on port 53 { 192.168.1.254; 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { 192.168.1.0/24; localhost; };
recursion yes;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { any; };
match-destinations { any; };
recursion yes;
include "/etc/named.rfc1912.zones";
};
include "/etc/rndc.key";
zone "kozieglowy" IN {
type master;
file "kozieglowy.zone";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "kozieglowy.rr.zone";
};
zone "szymi.com" IN {
type master;
file "szymi.com.zone";
allow-update { none; };
};
zone "szymi.blogsite.org" IN {
type master;
file "szymi.blogsite.org.zone";
allow-update { none; };
};
zone "thebunker.pl" IN {
type master;
file "thebunker.pl.zone";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
Na przykładzie mojego pliku konfiguracyjnego named.conf omówię teraz co oznaczają poszczególne dyrektywy.
Ilość komentarzy: 0