Następna strona Poprzednia strona Spis treści

4. Prosta domena

Jak skonfigurować własną domenę.

4.1 Ale najpierw trochę czystej teorii

Zanim naprawdę zaczniemy ten rozdział, zamierzam podać ci trochę teorii o działaniu DNSu. A ty to przeczytasz, ponieważ jest to przydatne. Jeśli nie chcesz, powinieneś przynajmniej przejść przez to bardzo szybko. Przestań przeglądać, kiedy dojdziesz do opisu, mówiącego co powinieneś wstawić do pliku named.conf.

DNS to system hierarchiczny. Najwyższa pozycja to ,,.'', nazywa się ,,root''. Pod . istnieje kilka Domen Najwyższego Poziomu (Top Level Doamins, TLD), najpopularniejsze to ORG, COM, EDU i NET, ale jest jeszcze wiele innych. (np. MIL, GOV, ART, NOM, PRIV - przyp. tłum.)

Kiedy poszukiwany jest komputer, zapytanie jest przeprowadzane rekursywnie, zgodnie z hierarchią, począwszy od góry. Jeżeli chcesz znaleźć adres komputera prep.ai.mit.edu, twój serwer nazw musi znaleźć serwer obsługujący domenę edu. Pyta serwer . (zna już serwery . - po to jest plik root.hints), serwer . zwraca listę serwerów edu:

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

Zacznij pytać server root:

> server c.root-servers.net.
Default Server:  c.root-servers.net
Address:  192.33.4.12

Ustaw typ zapytania na NS (rekordy serwerów nazw):

%gt; set q=ns

Spytaj o edu:

> edu.

Końcowa kropka jest wymagana, mówi serwerowi, że edu jest pod . (to zawęża obszar poszukiwań).

edu     nameserver = A.ROOT-SERVERS.NET
edu     nameserver = H.ROOT-SERVERS.NET
edu     nameserver = B.ROOT-SERVERS.NET
edu     nameserver = C.ROOT-SERVERS.NET
edu     nameserver = D.ROOT-SERVERS.NET
edu     nameserver = E.ROOT-SERVERS.NET
edu     nameserver = I.ROOT-SERVERS.NET
edu     nameserver = F.ROOT-SERVERS.NET
edu     nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET      internet address = 198.41.0.4
H.ROOT-SERVERS.NET      internet address = 128.63.2.53
B.ROOT-SERVERS.NET      internet address = 128.9.0.107
C.ROOT-SERVERS.NET      internet address = 192.33.4.12
D.ROOT-SERVERS.NET      internet address = 128.8.10.90
E.ROOT-SERVERS.NET      internet address = 192.203.230.10
I.ROOT-SERVERS.NET      internet address = 192.36.148.17
F.ROOT-SERVERS.NET      internet address = 192.5.5.241
G.ROOT-SERVERS.NET      internet address = 192.112.36.4

Wynik mówi nam, że *.root-servers.net podaje edu., możemy więc dalej pytać c. Teraz chcemy wiedzieć, kto obsługuje następny poziom nazwy domeny: mit.edu.:

> mit.edu.
Server:  c.root-servers.net
Address:  192.33.4.12

Non-authoritative answer:
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu
mit.edu nameserver = STRAWB.mit.edu

Authoritative answers can be found from:
W20NS.mit.edu   internet address = 18.70.0.160
BITSY.mit.edu   internet address = 18.72.0.3
STRAWB.mit.edu  internet address = 18.71.0.151

STRAWB, W20NS i BITSY obsługują mit, wybierz jeden i pytaj o ai.mit.edu:

> server W20NS.mit.edu.

Serwery nazw nie rozróżniają wielkości liter, ale używam myszki do wycinania i wklejania, więc kopiuje wynik prosto z ekranu.

Server:  W20NS.mit.edu
Address:  18.70.0.160

> ai.mit.edu.
Server:  W20NS.mit.edu
Address:  18.70.0.160

Non-authoritative answer:
ai.mit.edu      nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu      nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu      nameserver = TRIX.AI.MIT.EDU
ai.mit.edu      nameserver = MUESLI.AI.MIT.EDU
ai.mit.edu      nameserver = LIFE.AI.MIT.EDU
ai.mit.edu      nameserver = BEET-CHEX.AI.MIT.EDU
ai.mit.edu      nameserver = MINI-WHEATS.AI.MIT.EDU
ai.mit.edu      nameserver = COUNT-CHOCULA.AI.MIT.EDU
ai.mit.edu      nameserver = MINTAKA.LCS.MIT.EDU

Authoritative answers can be found from:
AI.MIT.EDU      nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU      nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU      nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MUESLI.AI.MIT.EDU
AI.MIT.EDU      nameserver = LIFE.AI.MIT.EDU
AI.MIT.EDU      nameserver = BEET-CHEX.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINI-WHEATS.AI.MIT.EDU
AI.MIT.EDU      nameserver = COUNT-CHOCULA.AI.MIT.EDU
AI.MIT.EDU      nameserver = MINTAKA.LCS.MIT.EDU
ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.32.5
GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.37.6
MUESLI.AI.MIT.EDU       internet address = 128.52.39.7
LIFE.AI.MIT.EDU internet address = 128.52.32.80
BEET-CHEX.AI.MIT.EDU    internet address = 128.52.32.22
MINI-WHEATS.AI.MIT.EDU  internet address = 128.52.54.11
COUNT-CHOCULA.AI.MIT.EDU        internet address = 128.52.38.22
MINTAKA.LCS.MIT.EDU     internet address = 18.26.0.36

A więc muesli.ai mit.edu jest serwerem nazw dla ai.mit.edu:

> server MUESLI.AI.MIT.EDU
Default Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7

Teraz zmieniamy typ zapytania - znaleźliśmy serwer nazw, więc teraz zapytajmy go o wszystko, co wie o prep.ai.mit.edu.

> set q=any
> prep.ai.mit.edu.
Server:  MUESLI.AI.MIT.EDU
Address:  128.52.39.7

prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix
prep.ai.mit.edu
        inet address = 18.159.0.42, protocol = tcp
          ftp  telnet  smtp  finger
prep.ai.mit.edu preference = 1, mail exchanger = gnu-life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu      nameserver = beet-chex.ai.mit.edu
ai.mit.edu      nameserver = alpha-bits.ai.mit.edu
ai.mit.edu      nameserver = mini-wheats.ai.mit.edu
ai.mit.edu      nameserver = trix.ai.mit.edu
ai.mit.edu      nameserver = muesli.ai.mit.edu
ai.mit.edu      nameserver = count-chocula.ai.mit.edu
ai.mit.edu      nameserver = mintaka.lcs.mit.edu
ai.mit.edu      nameserver = life.ai.mit.edu
gnu-life.ai.mit.edu     internet address = 128.52.32.60
beet-chex.ai.mit.edu    internet address = 128.52.32.22
alpha-bits.ai.mit.edu   internet address = 128.52.32.5
mini-wheats.ai.mit.edu  internet address = 128.52.54.11
trix.ai.mit.edu internet address = 128.52.37.6
muesli.ai.mit.edu       internet address = 128.52.39.7
count-chocula.ai.mit.edu        internet address = 128.52.38.22
mintaka.lcs.mit.edu     internet address = 18.26.0.36
life.ai.mit.edu internet address = 128.52.32.80

Zaczynając od ., znaleźliśmy sukcesywne serwery nazw dla następnych poziomów w nazwie domeny. Jeżeli używałbyś własnego serwera DNS zamiast wszystkich innych, twój named zapisałby wszystkie informacje w czasie poszukiwań, nie musiałbyś więc znowu ich pytać przez jakiś czas.

O wiele mniej mówi się o, tak samo ważnej domenie in-addr.arpa. Jest ona też podzielona jak normalne domeny. in-addr.arpa pozwala otrzymywać nazwy maszyn kiedy posiadamy ich adresy. Ważne: numery IP w domenie in-addr.arpa są pisane w odwrotnej kolejności. Jeżeli adres maszyny to 192.128.52.43, named poszukuje tak, jak dla przykładu z prep.ai.mit.edu: znaleźć serwery arpa.. Znaleźć seerwery in-addr.arpa., znaleźć serwery 192.in-addr.arpa., znaleźć serwery 128.192.in-addr.arpa., znaleźć serwery 52.128.192.in-addr.arpa.. Znaleźć potrzebne rekordy dla 43.52.128.192.in-addr.arpa.. Sprytne, no nie? (Powiedz ,,tak''.) Odwracanie numerów IP może sprawiać kłopoty przez pierwsze dwa lata.

Właśnie skłamałem. DNS nie działa dokładnie tak jak przedstawiłem. Ale byłem wystarczająco blisko.

4.2 Własna domena

Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją linux.bogus (,,bogus'', to po angielsku coś fałszywego, bzdurnego - przyp. tłum.) i zdefiniujemy w niej maszyny. Używam całkowicie bzdurnej (bogus) nazwy domeny, żeby upenić się, że nie przeszkadzamy nikomu Gdzieś Tam.

Jeszcze jedna rzecz zanim zaczniemy: Nie wszystkie znaki mogą wchodzić w skład nazw komputerów. Jesteśmy ograniczeni do znaków angielskiego alfabetu, tzn. a-z, numerów 0-9 i znaku ,,-'' (łącznika). Trzymajmy się tych znaków. Wielkie i małe litery nie są rozróżniane przez DNS, a więc pat.uio.no jest identyczne z Pat.UiO.No.

Już zaczeliśmy część z linią 0.0.127 w pliku named.conf:


zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};

Zauważ brak kropki na końcu nazw domen w tym pliku - definiujemy strefę 0.0.127.in-addr.arpa, że jesteśmy głównym jej serwerem i jest zapisana w pliku pz/127.0.0. Mamy już ten plik, zawiera on:


@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                8H      ; Refresh
                                2H      ; Retry
                                1W      ; Expire
                                1D)     ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Zauważ znak ,,.'' na końcu wszystkich pełnych nazw domen w tym pliku, kontrastuje to z plikiem named.conf powyżej. Niektórzy ludzie lubią rozpocząć każdą strefę z dyrektywą $ORIGIN, ale to już ekstrawagancja. Origin (pochodzenie - gdzie znajduje się w hierarchii DNS), pliku strefy jest zdefiniowany w linii strefy w pliku named.conf, w tym przypadku 0.0.127.in-addr.arpa.

Ten ,,plik strefy'' zawiera 3 ,,rekordy zasobów'' (resource records, RR): RR SOA, RR NS i RR PTR. SOA to skrót od Start of Authority. Znak ,,@'' jest specjalną notacją znaczącą pochodzenie (origin), a jeżeli kolumna domeny dla tego pliku to ,,0.0.127.in-addr.arpa'', pierwsza linia tak naprawdę znaczy

0.0.127.in-addr.arpa.   IN      SOA ...

NS to RR Name Server - rekord serwera nazw. Nie jest potrzebne ,,@'' na końcu tej linii, ponieważ ostatnia linia zaczęła sie na ,,@''. Oszczędza to trochę pisania. A więc linia NS tak naprawdę znaczy

0.0.127.in-addr.arpa.   IN      NS      ns.linux.bogus

Mówi DNS'owi, która maszyna jest serwerem nazw domeny 0.0.127.in-addr.arpa - jest to ns.linux.bogus. ,,ns'' to zazwyczaj stosowana nazwa serwera nazw, ale skoro serwery www są nazywane www.cośtam, nazwą może być cokolwiek.

I w końcu rekord PTR. Mówi, że komputer o adresie 1 w podsieci 0.0.127.in-addr.arpa, np. 127.0.0.1, nazywa się localhost.

Rekord SOA jest początkiem wszystkich plików stref. W każdym pliku musi być dokładnie jeden, jako pierwszy rekord. Opisuje strefę, z której pochodzi (z maszyny nazwanej ns.linux.bogus), osobę, która jest za nią odpowiedzialna (hostmaster@linux.bogus), wersję pliku strefy (numer seryjny: 1) i inne rzeczy mające związek z zapamiętywaniem (caching) i drugorzędnymi (secondary) serwerami DNS. Dla reszty pól: odświeżenia, powtórzenia, przedawnienia i minimalnego TTL użycie wartości podanych w tym HOWTO powinno być bezpieczne. Teraz uruchom ponownie named'a (komendą ndc restart) i użyj nslookup, żeby sprawdzić, co zrobiłeś:

$ nslookup

Default Server:  localhost
Address:  127.0.0.1

> 127.0.0.1
Server:  localhost
Address:  127.0.0.1

Name:    localhost
Address:  127.0.0.1

a więc udaje mu się otrzymać localhost ze 127.0.0.1, to dobrze. Teraz nasze główne zadanie, domena linux.bogus. Wstaw nową sekcję ,,zone'' w pliku named.conf:


zone "linux.bogus" {
        notify no;
        type master;
        file "pz/linux.bogus";
};

Zauważ dalszy brak kończącej kropki w nazwie domeny w pliku named.conf.

W pliku strefy linux.bogus umieścimy pewne całkowicie bzdurne (bogus) dane:


;
; Plik strefy dla linux.bogus
;
; Pełny plik strefy
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; numer seryjny, dzisiejsza data i numer zmiany
                        8H              ; odświeżanie, w sekundach
                        2H              ; powtórzenie, w sekundach
                        1W              ; przedawnienie, w sekundach
                        1D )            ; minimum, w sekundach
;
                NS      ns              ; Adres Internetowy serwera nazw
                MX      10 mail.linux.bogus     ; Podstawowy serwer poczty
                MX      20 mail.friend.bogus.   ; Drugorzędny serwer poczty
;
localhost       A       127.0.0.1
ns              A       192.168.196.2
mail            A       192.168.196.4

Należy zwrócić uwagę na dwie rzeczy w rekordzie SOA. ns.linux.bogus musi być prawdziwą maszyna z rekordem A. Nie jest dozwolone wpisaanie rekordu CNAME dla maszyny w rekordzie SOA. Jej nazwą nie musi być ,,ns'', może być jakąkolwiek dozwoloną nazwą komputera. Po drugie, hostmaster.linux.bogus powinien być odczytany jako hostmaster@linux.bogus, a powinien być to alias pocztowy lub oddzielna skrzynka, gdzie osoba(y) nadzorujące DNS powinny często czytać pocztę. Jakikolwiek list w sprawie domeny będzie wysłany na adres podany w tej linii. Nazwą nie musi być ,,hostmaster'', może to być jakikolwiek dozwolony adres e-mail, ale adres ,,hostmaster'' będzie również działał.

Jest jeden nowy typ RR w tym pliku, MX czyli Mail eXchanger. Mówi systemom pocztowym gdzie wysyłać pocztę zaadresowaną do ktośtam@linux.bogus, odpowiednio do mail.linux.bogus lub mail.friend.bogus. Liczba przed każdą nazwą maszyny oznacza priorytet MX'ów. RR z najmniejszą liczbą (10) jest tym, do którego poczta powinna być wysyłana najpierw. Jeżeli to się nie uda, może być wysłana do serwera z wyższą liczbą, drugorzędnego serwera poczty, np. mail.friend.bogus, który ma tu priorytet 20.

Uruchom ponownie named, używając komendy ndc restart. Sprawdź wynik z nslookup:

$ nslookup
> set q=any
> linux.bogus
Server:  localhost
Address:  127.0.0.1

linux.bogus
        origin = ns.linux.bogus
        mail addr = hostmaster.linux.bogus
        serial = 199802151
        refresh = 28800 (8 hours)
        retry   = 7200 (2 hours)
        expire  = 604800 (7 days)
        minimum ttl = 86400 (1 day)
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
linux.bogus     preference = 20, mail exchanger = mail.friend.bogus
linux.bogus     nameserver = ns.linux.bogus
ns.linux.bogus  internet address = 192.168.196.2
mail.linux.bogus        internet address = 192.168.196.4

Przy dokładnym sprawdzaniu, odkryjesz błąd. Linia

linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

jest niepoprawna. Powinno być

linux.bogus     preference = 10, mail exchanger = mail.linux.bogus

Specjalnie popełniłem błąd, żebyś mógł się z niego uczyć :-) Patrząc na plik strefy zobaczymy, że w linii

                MX      10 mail.linux.bogus     ; Podstawowy serwer poczty

brakuje kropki. Można też powiedzieć, że ma o jeden człon ,,linux.bogus'' za dużo. Jeżeli nazwa komputera nie kończy się kropką w pliku strefy, pochodzenie (origin) zostaje dodane do niej, powodując podwójny linux.bogus.linux.bogus. Więc piszemy albo


                MX      10 mail.linux.bogus.    ; Podstawowy serwer poczty

albo


                MX      10 mail                 ; Podstawowy serwer poczty

Oba są poprawne. Wolę ostatnią formę, mniej pisania. Są znani użytkownicy bind'a którzy nie zgadzają się z tym, są też tacy, którzy zgadzają się z tą regułą. W pliku strefy domena powinna bądź to być całkowita i zakończona kropką, bądź to nie powinna być wogóle załączona, w tym przypadku zawiera domyślne pochodzenie (origin).

Muszę zaznaczyć, że w pliku named.conf nie powinno być kropek po nazwach domen. Nie masz pojęcia, jak często ludzie głupieli i klęli na czym świat stoi z powodu znaku ,,.''.

A więc po wyjaśnieniu mojej uwagi, mamy nowy plik strefy, zawierający trochę dodatkowych informacji:


;
; Plik strefy dla linux.bogus
;
; Pełny plik strefy
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; numer seryjny, dzisiejsza data + numer zmiany
                        8H              ; odświeżanie, w sekundach
                        2H              ; powtórzenie, w sekundach
                        1W              ; przedawnienie, w sekundach
                        1D )            ; minimum, w sekundach
;
                TXT     "Linux.Bogus, twoi konsultanci DNS"
                NS      ns              ; Adresy Internetowe serwerów nazw
                NS      ns.friend.bogus.
                MX      10 mail         ; Podstawowy MX
                MX      20 mail.friend.bogus. ;  Drugorzędny MX

localhost       A       127.0.0.1

gw              A       192.168.196.1
                HINFO   "Cisco" "IOS"
                TXT     "Router"

ns              A       192.168.196.2
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "Pentium" "Linux 2.0"
www             CNAME   ns

donald          A       192.168.196.3
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "i486"  "Linux 2.0"
                TXT     "DEK"

mail            A       192.168.196.4
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "386sx" "Linux 1.2"

ftp             A       192.168.196.5
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "P6" "Linux 2.1.86"

Jest tu kilka nowych RR'ów: HINFO (Host INFOrmation) ma dwie części, dobrym zwyczajem jest branie każdej w cudzysłowy. Pierwsza część określa nazwę sprzętową lub procesor komputera, a druga oprogramowanie lub system operacyjny. Maszyna nazwana ,,ns'' ma procesor Pentium i Linuxa 2.0. CNAME (Canonical NAME) jest sposobem nadawania każdej maszynie kilku nazw. Www jest więc aliasem ns.

Używanie rekordów CNAME jest trochę kontrowesyjne. Ale bezpiecznie jest przestrzegać zasady, że rekordy MX, CNAME lub SOA nigdy nie powinny odnosić się do rekordu CNAME, powinny odnosić się do czegoś z rekordem A, więc źle jest


foobar          CNAME   www                     ; NIE!

ale poprawnie


foobar          CNAME   ns                      ; Tak!

Jest też bezpiecznie przyjąć, że CNAME nie jest dozwoloną nazwą komputera dla adresu e-mail: webmaster@www.linux.bogus jest niedozwolonym adresem, jeżeli przyjąć powyższe ustawienia. Możesz się spodziewać, że wielu adminów Gdzieś Tam będzie wymagało tej zasady, nawet jeśli to działa u ciebie. Sposobem uniknięcia tego jest używanie rekordów A (i może innych, takich jak MX) zamiast CNAME:


www             A       192.168.196.2

Kilku ,,czarodziejów'' bind'a radzi, aby nie używać CNAME. Zastanów się więc nad tym bardzo poważnie.

Ale jak widzisz, to HOWTO i wiele serwerów nie przestrzega tej zasady.

Załaduj nową bazę danych komendą ndc reload, sprawi to, że named przeczyta ponownie swoje pliki.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

> ls -d linux.bogus

Znaczy to, że wszystkie rekordy powinny być wymienione. Wyświetli:

[localhost]
$ORIGIN linux.bogus.
@                       1D IN SOA       ns hostmaster (
                                        199802151       ; numer seryjny
                                        8H              ; odświeżanie
                                        2H              ; powtórzenie
                                        1W              ; przedawnienie
                                        1D )            ; minimum

                        1D IN NS        ns
                        1D IN NS        ns.friend.bogus.
                        1D IN TXT       "Linux.Bogus, twoi konsultanci DNS"
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
gw                      1D IN A         192.168.196.1
                        1D IN HINFO     "Cisco" "IOS"
                        1D IN TXT       "Router"
mail                    1D IN A         192.168.196.4
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "386sx" "Linux 1.0.9"
localhost               1D IN A         127.0.0.1
www                     1D IN CNAME     ns
donald                  1D IN A         192.168.196.3
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "i486" "Linux 1.2"
                        1D IN TXT       "DEK"
ftp                     1D IN A         192.168.196.5
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "P6" "Linux 1.3.59"
ns                      1D IN A         192.168.196.2
                        1D IN MX        10 mail
                        1D IN MX        20 mail.friend.bogus.
                        1D IN HINFO     "Pentium" "Linux 1.2"
@                       1D IN SOA       ns hostmaster (
                                        199802151       ; numer seryjny
                                        8H              ; odświeżanie
                                        2H              ; powtórzenie
                                        1W              ; przedawnienie
                                        1D )            ; minimum

To jest w porządku. Jak widzisz, wygląda prawie jak plik strefy. Sprawdźmy co powie o samym www:

> set q=any
> www.linux.bogus.
Server:  localhost
Address:  127.0.0.1

www.linux.bogus canonical name = ns.linux.bogus
linux.bogus     nameserver = ns.linux.bogus
linux.bogus     nameserver = ns.friend.bogus
ns.linux.bogus  internet address = 192.168.196.2

Inaczej mówiąc, prawdziwa nazwa www.linux.bogus to ns.linux.bogus. Daje ci to też trochę informacji, które ma o ns, wystarczjąco dużo, żeby się z nim połączyć, jeżeli byłbyś programem.

Jesteśmy w połowie drogi.

4.3 Strefa odwrotna

Teraz programy mogą konwertować nazwy w linux.bogus na adresy, z którymi mogą się połączyć. Ale potrzebna jest też strefa odwrotna, która pozwala DNS'owi przekształcać adresy na nazwy (FTP, IRC, WWW i inne), żeby zdecydować, czy chcą z tobą rozmawiać, czy nie, a jeżeli tak, może nawet zdecydują jaki priorytet powinien być ci nadany. Strefa odwrotna jest wymagana dla pełnego dostępu do wszystkich usług Internetu.

Wstaw następujące linie w named.conf:


zone "196.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "pz/192.168.196";
};

Tak samo jak z 0.0.127.in-addr.arpa, zawartość także jest podobna:


@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151 ; Numer seryjny, data + numer
                        8H      ; odświeżanie
                        2H      ; powtarzanie
                        1W      ; przedawnienie
                        1D)     ; minimalny TTL
                NS      ns.linux.bogus.

1               PTR     gw.linux.bogus.
2               PTR     ns.linux.bogus.
3               PTR     donald.linux.bogus.
4               PTR     mail.linux.bogus.
5               PTR     donald.linux.bogus.

Teraz uruchom ponownie named (ndc restart) i sprawdź swoją pracę znowu korzystając z nslookup:


> 192.168.196.4
Server:  localhost
Address:  127.0.0.1

Name:    mail.linux.bogus
Address:  192.168.196.4

Wygląda w porządku, spróbuj wyświetlić wszystko, żeby to sprawdzić:


> ls -d 196.168.192.in-addr.arpa
[localhost]
$ORIGIN 196.168.192.in-addr.arpa.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (
                                        199802151       ; serial
                                        8H              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        ns.linux.bogus.
1                       1D IN PTR       gw.linux.bogus.
2                       1D IN PTR       ns.linux.bogus.
3                       1D IN PTR       donald.linux.bogus.
4                       1D IN PTR       mail.linux.bogus.
5                       1D IN PTR       donald.linux.bogus.
@                       1D IN SOA       ns.linux.bogus. hostmaster.linux.bogus. (
                                        199802151       ; numer seryjny
                                        8H              ; odświeżanie
                                        2H              ; powtarzanie
                                        1W              ; przedawnienie
                                        1D )            ; minimum

Wygląda dobrze!

Jest kilka rzeczy, które powinienem tu dodać. Numery IP używane w przykładach pochodzą z jednego z bloków ,,sieci prywatnych'', tzn. nie wolno używać ich publicznie w internecie. Są bezpieczne do pokazania jako przykład w HOWTO. Druga rzecz, to linia notify no;. Mówi named, żeby nie zawiadamiać serwera drugorzędnego (secondary, slave), kiedy jeden z plików stref zostanie uaktualniony. W bind'dzie-8 named może zawiadamiać inne serwery wymienione w rekordach NS w pliku strefy, kiedy strefa zostanie uaktualniona. Jest to przydatne do użytku zwykłego, ale dla prywatnych eksperymentów ze strefami ta opcja powinna być wyłączona, nie chcemy przecież chyba, żeby nasz eksperyment zaśmiecał Internet, czyż nie tak?

No i oczywiście ta domena jest nieprawdziwa (bogus) i takie też są wszystkie adresy w niej. Zobacz następny rozdział dla przykładu z prawdziwą domeną.


Następna strona Poprzednia strona Spis treści