DNS HOWTO: Całkiem prosta domena.
Następna strona
Poprzednia strona
Spis treści
4. Całkiem prosta domena.
Jak skonfigurować własną domenę.
4.1 Wpierw troche teorii.
Zanim naprawdę rozpoczniemy ten rozdział, mam zamiar
przedstawić ci trochę teorii na temat pracy DNSu. A ty to przeczytasz,
ponieważ jest to ci potrzebne. Jeśli ci się nie chce, powinieneś choć
zapoznać się z nim powierzchownie. Możesz przestać, gdy dojdziesz do
wyjaśnień, co należy umieścić w pliku named.boot.
DNS jest systemem hierarchicznym. Domena główna (najwyższego
poziomu) jest oznaczana kropką `.' i nazywana `root'. W domenie
. można znaleźć kilka "Domen najwyższego poziomu (TLD)" np. ORG, COM,
EDU czy NET. Lecz jest ich znacznie więcej. Gdy chcesz znaleźć adres
kompuera prep.ai.mit.edu twój serwer musi odnaleźć komputer
obsługujący domenę edu. Zadaje pytanie serwerowi domeny .
(serwery domeny . zna z pliku root.cache), otrzymuje listę
serwerów obsługujących domenę edu. Oto mała ilustracja:
$ nslookup
Default Server: localhost
Address: 127.0.0.1
rozpoczynamy od zapytania serwera domeny głównej
> server c.root-servers.net.
Default Server: c.root-servers.net
Address: 192.33.4.12
Ustawiamy rodzj zapytania: rekordy NS (adresy serwrów DNS)
> set q=ns
pytamy się o domenę edu.
> edu.
Kropka po słowie edu ma znaczenie, informuje serwer, że pytamy się o
edu, które jest bezpośrednio w domenie głównej, w ten sposób wyłączamy
z przeszukiwania domeny podane w pliku /etc/resolv.conf.
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
Otrzymaliśmy informacje, że domenę edu obsługują serwery
*.root-servers.net, tak więc możemy kontynuować nasze pytanie
kierując je nadal do serwera c.root-serwers.net. Teraz chcemy
wiedzieć, kto obsługuje domenę następnego poziomu: mit.edu.:
> mit.edu.
Server: c.root-servers.net
Address: 192.33.4.12
Non-authoritative answer:
mit.edu nameserver = STRAWB.mit.edu
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu
Authoritative answers can be found from:
STRAWB.mit.edu internet address = 18.71.0.151
W20NS.mit.edu internet address = 18.70.0.160
BITSY.mit.edu internet address = 18.72.0.3
steawb, w20ns i bitsy obsługują mit, wybierz jeden
z nich i spytaj się o ai.mit.edu:
> server W20NS.mit.edu.
W nazwach kompyterów wielkość liter nie ma znaczenia, lecz ja do
przenoszenia tekstu używam myszy, zapytanie ma taką samą formę jak
poprzedzająca je odpowiedź.
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 = WHEATIES.AI.MIT.EDU
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
Authoritative answers can be found from:
AI.MIT.EDU nameserver = WHEATIES.AI.MIT.EDU
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
WHEATIES.AI.MIT.EDU internet address = 128.52.32.13
WHEATIES.AI.MIT.EDU internet address = 128.52.35.13
ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5
ALPHA-BITS.AI.MIT.EDU internet address = 128.52.37.5
GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.32.4
GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.32.6
TRIX.AI.MIT.EDU internet address = 128.52.38.6
MUESLI.AI.MIT.EDU internet address = 128.52.32.7
MUESLI.AI.MIT.EDU internet address = 128.52.39.7
Okazuje się, że weaties.ai.mit.edu jest serwerem nazw dla doemny ai.mit.edu:
> server WHEATIES.AI.MIT.EDU.
Default Server: WHEATIES.AI.MIT.EDU
Addresses: 128.52.32.13, 128.52.35.13
Teraz zmieniam rodzaj zapytania. Znamy już nazwę serwera nazw
dla interesującej nas domeny, spytamy sie o jakiekolwiek informacje
jakie serwer posiada na temat prep.ai.mit.edu.
> set q=any
> prep.ai.mit.edu.
Server: WHEATIES.AI.MIT.EDU
Addresses: 128.52.32.13, 128.52.35.13
prep.ai.mit.edu CPU = dec/decstation-5000.25 OS = unix
prep.ai.mit.edu
inet address = 18.159.0.42, protocol = tcp
#21 #23 #25 #79
prep.ai.mit.edu preference = 1, mail exchanger = life.ai.mit.edu
prep.ai.mit.edu internet address = 18.159.0.42
ai.mit.edu nameserver = alpha-bits.ai.mit.edu
ai.mit.edu nameserver = wheaties.ai.mit.edu
ai.mit.edu nameserver = grape-nuts.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 = life.ai.mit.edu
ai.mit.edu nameserver = mintaka.lcs.mit.edu
life.ai.mit.edu internet address = 128.52.32.80
alpha-bits.ai.mit.edu internet address = 128.52.32.5
wheaties.ai.mit.edu internet address = 128.52.35.13
wheaties.ai.mit.edu internet address = 128.52.32.13
grape-nuts.ai.mit.edu internet address = 128.52.36.4
grape-nuts.ai.mit.edu internet address = 128.52.32.4
mini-wheats.ai.mit.edu internet address = 128.52.32.11
mini-wheats.ai.mit.edu internet address = 128.52.54.11
mintaka.lcs.mit.edu internet address = 18.26.0.36
Jak widać rozpoczynając od domeny głównej . znaleźliśmy
kolejne serwery DNS. Gdybyśmy skorzystali z własnego serwera DNS,
named zpamiętałby wszystkie informacje otrzymywane z sieci i nie
musiałby przej jakiś czas pytać się serwerów, korzystając z
przechowywanych informacji.
Mniej opisywaną lecz równie ważną domeną jest
in-addr.arpa. Tak jak zwykłe domeny również posiada strukturę
hierachiczną. in-addr.arpa pozwala na znalezienie nazwy
komputera, jeśli tylko posiadamy jego adres IP. Należy tu zwrócić
uwagę, że adres IP jest zapisywany w odwrotnej kolejności. Jeśli twój
komputer posiada adres 192.128.52.43 named będzie się zachowywał tak
samo jak w przykładzie poszukiwania informacji na temat komputera
prep.ai.mit.edu: znajdź serwery domey arpa., znajdź serwery
in-addr.arpa., znajdź serwery 192.in-addr.arpa., znajdź
serwery 128.192.in-addr.arpa./, znajdź serwery
52.128.192.in-addr.arpa./, znjdź niezbędne rekordy dla
43.52.128.192.in-addr.arpa..
Jasne, nie ?! (opowiedz 'tak'). Przez pierwsze dwa lata odwracanie
kolejności częsci adresu IP sprawia małe kłopoty.
Właśnie skłamałem. DNS nie pracuje dokładnie w taki sposów jaki wam
przed chwilą przedstawiłem. Lecz jest to bardzo dobre przbliżenie.
4.2 Nasza własna domena.
Teraz zdefiniujemy naszą własną domenę. Nazwijmy ją
linux.bogus. Umieśćmy w niej jeden komputer. Specjalnie używam
całkowicie bzdurną nazwę domeny, aby mieć pewność, że nie
przeszkodzimy nikomu z Sieci.
Rozpoczęliśmy tę część dodając do named.boot wiersz:
primary 0.0.127.in-addr.arpa pz/127.0.0
Proszę zwrócić uwagę na brak kropki `.' kończącej nazwy domen.
Pierwszy wiersz określa, że plik pz/127.0.0 zawiera informacje
definiujące domenę 0.0.127.in-addr.arpa. Plik ten już został utworzony,
wygląda następująco:
@ IN SOA linux.bogus. hostmaster.linux.bogus. (
1 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS ns.linux.bogus.
1 PTR localhost.
Proszę zwrócić uwagę na kropkę `.' kończącą pełne nazwy domen,
w przeciwieństwie do omawianego wcześniej pliku
named.boot. Niektórzy wolą rozpoczynać każdy plik strefy
dyrektywą $ORIGIN lecz nie jest to konieczne. Pochodzenie
(miejsce w hierarchi DNS, do którego przynależy) pliku strefy jest
określone w kolumnie `domain' w pliku named.boot, w tym przypadku
jest to 0.0.127.in-addr.arpa.
Powyższy plik strefy zawiera trzy rekordy (RR): SOA RR, NS RR i PTR RR.
SOA jest skrótem Start Of Authority. Znak `@' jest znakiem specjalnym
określającym pochodzenie, a ponieważ kolumna `domain' odpowiadająca temu
plikowi mówi 0.0.127.in-addr.arpa, dlatego pierwszy wiersz tak naprawdę
ma postać:
0.0.127.IN-ADDR.ARPA. IN SOA ...
NS to rekord serwera nazw. Wskazuje komputer, który jest
serwerem nazw dla tej domeny. I na koniec rekord PTR mówi, że
1 (w pełnej formie 1.0.0.127.in-addr-arpa, tzn. 127.0.0.1) nosi nazwę
localhost.
Rekord SOA stanowi nagłówek wszystkich plików stref, w każdym
z plików powinien znajdować się dokładnie jeden rekord SOA, powinien
to być pierwszy rekord w pliku. Opisuje on strefę, z której pochodzi
(komputer o nazwie linux.bogus), kto jest odpowiedzialny za
jej zawartość (hostmaster@linux.bogus), numer wersji pliku strefy
(serial 1) oraz inne informacje, mające znaczenie dla pracy
serwerów drugorzędnych. Jeśli dla pól refresh, retry, expire i minimum
będziesz używał wartości jakie występują w tym dokumencie wszystko
powinno działać poprawnie.
Rekord NS określna kto serwuje informacje DNS na temat
0.0.127.in-addr.arpa, jest to ns.linux.bogus.
Rekord PTR mówi nam, że 1.0.0.127.in-addr.arpa (aka 127.0.0.1) jest
znany pod nazwą localhost.
Teraz zrestartuj proces named (poleceniem ndc restart) i sprawdź
poczynione zmiany programem nslookup:
$ 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
jak widać udało się pobrać informacje o localhost z komputera 127.0.0.1,
to dobrze. Teraz nasze podstawowe zadanie, domena linux.bogus, dodaj
do pliku named.boot wiersz definiujący nową domenę:
primary linux.bogus pz/linux.bogus
Zwróć uwagę na powtarząjący sie brak znaku `.' kończących nazwy
domen w pliku named.boot.
In the linux.bogus zone file we'll put some totally bogus data:
;
; Plik strefy linux.bogus
;
; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny
;
@ IN SOA linux.bogus. hostmaster.linux.bogus. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
NS ns.linux.bogus.
NS ns.friend.bogus.
MX 10 mail.linux.bogus ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
ns A 127.0.0.2
mail A 127.0.0.4
Należy zrócić uwagę na dwie rzeczy dotyczące rekordu
SOA. ns.linux.bogus musi byc rekordem RR typu A, czyli nazwą
komputera, która posiada przydzielony numer IP. Niedopuszczalne jest,
aby nazwa uzywana w rekordzie SOA byla rekordem tymu CNAME. Sam
komputer nie musi nosic nazwy 'ns', może to byc dowolna poprawna
nazwa.
hostamster.linux.bogus należy odczytać jako hostmaster@linux.bogus,
musi to byc adres (lub alias do) osoby (lub osób) opiekujących się
DNSem dla tej domeny (i czytajacyh regularnie tę pocztę). Wszelka
korespondencja dotycząca tej domeny będzie wysyłana na ten adres, może
to być dowolny adres e-mail, choć kązdy spodziewa się, że adres
'hostmaster' będzie również adresem kontaktowym domeny.
W powyższym pliku znalazł się rekord RR nowego typu, a mianowicie
rekord MX, inaczej rekord Mail eXchanger. Dostarcza on systemowi
pocztowemu informacji, dokąd wysyłać pocztę adresowaną
ktoś@linux.bogus, w tym przypadku do mail.linux.bogud lub
mail.friend.bogus. Liczba poprzedzająca nazwę komputera oznacza
priorytet rekordu. System pocztowy powinien korzystać w pierwszej
kolejności z rekordów o najmniejszym priorytecie (w naszym przypadku
10). Jeśli nie uda się dostarczyć poczty na ten adres, należy
spróbować innego adresu, o wyższym priorytecie. W naszym przypadku
byłby to mail.friend.bogus, który posiada priorytet 20.
Teraz trzeba zrestartowac program named wydając polecenie ndc
restart. Rezultaty naszej pracy mozemy sprawdzić programem nslookup.
$ nslookup
> set q=any
> linux.bogus
Server: localhost
Address: 127.0.0.1
linux.bogus
origin = linux.bogus
mail addr = hostmaster.linux.bogus
serial = 199511301
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 nameserver = ns.friend.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
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 127.0.0.2
mail.linux.bogus internet address = 127.0.0.4
Przypatrując się dokładnie widzimy, że popełniliśmy błąd.
Wiersz
linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
jest niepoprawny. powinien wyglądać następująco:
linux.bogus preference = 10, mail exchanger = mail.linux.bogus
Specjalnie popełniłem błąd, abyście mogli się na nim uczyć
:-). Przyglądając się plikowi źródłowemu zauważamy, że w wierszu
@ MX 10 mail.linux.bogus ; Primary Mail Exchanger
brakuje kropki. Lub inaczej mówiać ma zbyt wiele członów
'linux.bogus'. Gdy nazwa komputera występująca w pliku żródłowym
strefy nie kończy się kropką, program na koniec dokleja 'origin'
(pochodzenie, domenę definiowaną przez ten plik źródłowy).
Dlatego nazwy komputerów należy podawać w sposób pełny, pilnując
końcowej kropki
@ MX 10 mail.linux.bogus. ; Primary Mail Exchanger
lub uproszczony
@ MX 10 mail ; Primary Mail Exchanger
Oba sposoby są poprawne.
Osobiście preferuje drugą metodę, mniej pisania. W pliku strefy domena
powinna być podana w całości, razem z kończącą ją kropką (.) lub
w ogole nie powinna być podawana. W takim przypadku domyślnie
przyjmuje się tzw. origin. Muszę podkreślić, że nazwy domen w pliku
named.boot nie powinny się kończyć kropką. Nie macie pojęcia, jak
wiele razy nadmierna liczba kropek, lub ich brak spowodowała
zamieszanie i ogłupiła mnóstwo ludzi.
Skoro już powiedziłąem co miałęm do powiedzenia, poniżej
przedstawiam nowy źródłowy plik strefy z nowymi, dodatkowymi informacjami:
;
; Plik strefy dla linux.bogus
;
; Obowiązkowy zestaw minimum potrzebny do prawidłowej definicje domeny
;
@ IN SOA linux.bogus. hostmaster.linux.bogus. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
604800 ; expire, seconds
86400 ) ; minimum, seconds
NS ns ; Inet Address of name server
NS ns.friend.bogus.
MX 10 mail ; Primary Mail Exchanger
MX 20 mail.friend.bogus. ; Secondary Mail Exchanger
localhost A 127.0.0.1
ns A 127.0.0.2
mail A 127.0.0.4
;
; Extras
;
@ TXT "Linux.Bogus, your DNS consultants"
ns MX 10 mail
MX 20 mail.friend.bogus.
HINFO "Pentium" "Linux 1.2"
TXT "RMS"
richard CNAME ns
www CNAME ns
donald A 127.0.0.3
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "i486" "Linux 1.2"
TXT "DEK"
mail MX 10 mail
MX 20 mail.friend.bogus.
HINFO "386sx" "Linux 1.0.9"
ftp A 127.0.0.5
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "P6" "Linux 1.3.59"
Moglibyście chcieć przesując pierwsze trzy rekordy A, tak aby
sąsiadowały z innymi rekordami tego typu, zamiast siedzieć na początku
listy.
W powyższym przykładzie pojawiły się rekordy nowego typu:
HINFO (Host INFOrmation) składa się z dwóch częsci, dobrym zwyczajem
jest umiesczenie obu w cudzysłowach. Pierwsza część określa hardware,
lub procesor komputera, druga oprogramowanie lub pracujący na nim
system operacyjny. Komputer ns to Pentium, pracujące pod Linuxem 1.2.
Rekord TXT może zawierać dowolny tekst. Można go wykorzystywać do
różnych celów. CNAME (Cannonical NAME) to sposób na nadanie wielu nazw
jednemu komputerowi. Tak więc richard i www są aliasami komputera ns.
To ważne aby pamiętać, że rekordy A, MX, CNAME i SOA nigdy nie
powinny wskazywać na rekord CNAME. Zawsze powinny wsazywać na rekord
A. Dlatego ta forma jest niepoprawna
foobar CNAME richard ; NO!
i powinna zostać zastąpiona przez
foobar CNAME ns ; Yes!
Równie ważne jest pamiętanie, że rekord CNAME nie jest poprawną
nazwą, którą można stosować w adresach e-mail. Nawiązując do
poprzedniego przykładu, adres wmail webmaster@www.linux.bogus nie
jest niepoprawny. Możesz oczekiwać, że całkiem spora liczba
administratorów pocztowych Stamtąd będzie wymagała popdorządkowania
się tej regule pomimo, że w twoim przypadku wszystko może działać
poprawnie. Sposobem na uniknięcie kłopotów jest stosowanie rekordów A
(i być może również innych, np. rekordów MX):
www A 127.0.0.2
Paul Vixie, największy z wizardów programu named, sugeruje aby
nie korzystać z rekordów CNAME. Dlatego bardzo poważnie
zastanów się nad ograniczeniem uzywania rekordów CNAME.
Załaduj nową wersję bazy wydając polecenie ndc reload, wymusi
ona na procesie ponowne odczytanie plików konfiguracyjnych.
$ nslookup
Default Server: localhost
Address: 127.0.0.1
> ls -d linux.bogus
Powyższe polecenie spowoduje przedstawienie wszystkich rekordów.
[localhost]
linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995
11301 28800 7200 604800 86400)
linux.bogus. NS ns.linux.bogus
linux.bogus. NS ns.friend.bogus
linux.bogus. MX 10 mail.linux.bogus
linux.bogus. MX 20 mail.friend.bogus
linux.bogus. TXT "Linux.Bogus, your DNS consultants"
localhost A 127.0.0.1
mail A 127.0.0.4
mail MX 10 mail.linux.bogus
mail MX 20 mail.friend.bogus
mail HINFO 386sx Linux 1.0.9
donald A 127.0.0.3
donald MX 10 mail.linux.bogus
donald MX 20 mail.friend.bogus
donald HINFO i486 Linux 1.2
donald TXT "DEK"
www CNAME ns.linux.bogus
richard CNAME ns.linux.bogus
ftp A 127.0.0.5
ftp MX 10 mail.linux.bogus
ftp MX 20 mail.friend.bogus
ftp HINFO P6 Linux 1.3.59
ns A 127.0.0.2
ns MX 10 mail.linux.bogus
ns MX 20 mail.friend.bogus
ns HINFO Pentium Linux 1.2
ns TXT "RMS"
linux.bogus. SOA linux.bogus hostmaster.linux.bogus. (1995
11301 28800 7200 604800 86400)
Jest dobrze. Zobaczmy jaką odpowiedź otrymamy pytając się wyłącznie
o komputer www:
> set q=any
> www.linux.bogus.
Server: localhost
Address: 127.0.0.1
www.linux.bogus canonical name = ns.linux.bogus
... Innymi słowy, prawdziwa nazwa komputera www.linux.bogus to ns.linux.bogus.
linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 127.0.0.2
a ns.linux.bogus ma adres 127.0.0.2. To również wygląda poprawnie.
4.3 Co dalej.
Oczywiście powyższa domena jest nierzeczywista, jak również
adresy IP podane w przykładzie, co może utrudniać zrozumienie.
Przykład przwdziwej domeny znjdziecie w następnym rozdziale.
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
DNS49 HOWTO pl 6 (2)DNS49 HOWTO pl 2 (2)DNS49 HOWTO plDNS49 HOWTO pl 9 (2)DNS49 HOWTO pl (2)DNS49 HOWTO pl 5 (2)DNS49 HOWTO pl 8 (2)DNS49 HOWTO pl 7 (2)dns49 howto plDNS49 HOWTO pl 10 (2)DNS49 HOWTO pl 3 (2)DNS49 HOWTO pl 1 (2)bootdisk howto pl 8PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)cdrom howto pl 1jtz howto pl 5Keystroke HOWTO pl (2)PostgreSQL HOWTO pl 14więcej podobnych podstron