Az első ugrás a DNS beállításhoz. Nagyon hasznos betárcsázós, kábel-modemes, ADSL és hasonló felhasználók számára.
A Red Hat és a Red Hat-hoz kapcsolódó disztribúciók esetén ezen HOGYAN
első fejezetéhez hasonló gyakorlati eredmény érhető el a bind
,
bind-utils
és caching-nameserver
csomagok telepítésével. Ha Debiant
használsz, egyszerűen csak telepítsd a bind
(vagy a bind9
csomagot, mivel
jelenleg a BIND 9-est nem támogatja a Debian Stable (potato)) és a
bind-doc
csomagot. Persze csak ezen csomagok telepítésével nem tanulsz annyit,
mint e HOGYAN olvasásával. Szóval telepítsd a csomagokat, azután
olvass tovább, és ellenőrizd az általuk telepített állományokat.
A gyorsítótáras névszerver megtalálja a választ a névlekérdezésekre, és megjegyzi a választ a legközelebbi alkalomig, amikor szükséged lesz rá. Ez jelentősen le fogja rövidíteni a várakozási időt a következő alkalommal, különösen ha lassú a kapcsolatod.
Először szükséged lesz egy /etc/named.conf
nevű állományra (Debianban:
/etc/bind/named.conf
). Ez betöltődik amikor a named elindul. Egyelőre
csak ezt kell tartalmaznia:
// Konfigurációs állomány kizárólag gyorsítótáras névszerver számára // // A HOGYAN ezen változata tartalmazhat a sor elején szóközöket // tartalmazó sorokat ebben és más állományokban. El kell távolítanod // a szóközöket, hogy bizonyos dolgok működjenek. // // Figyelem, az állománynevek és a könyvtárak nevei különbözhetnek, ám // a lényegi tartalmuknak hasonlónak kell lenniük. options { directory "/var/named"; // E sor engedélyezése segíthet, ha tűzfalon keresztül kell // átmenned, és a dolog nem működik. De valószínűleg beszélned // kell a tűzfal adminisztrátorával. // query-source port 53; }; controls { inet 127.0.0.1 allow { localhost; } keys { rndc_key; }; }; key "rndc_key" { algorithm hmac-md5; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; zone "." { type hint; file "root.hints"; }; zone "0.0.127.in-addr.arpa" { type master; file "pz/127.0.0"; };
A Linux disztribúciós csomagok eltérő állományneveket használhatnak minden egyes, itt említett állománytípusra; azonban közel ugyanazt fogják tartalmazni.
A "directory
" sor megmondja a named programnak, hol keresse az állományokat.
Minden ezután megnevezett állomány ehhez lesz viszonyítva. Tehát a pz
egy könyvtár a /var/named
alatt, azaz megegyezik a /var/named/pz
könyvtárral. A
/var/named
a helyes könyvtár, a Linux Fájlrendszer Szabvány alapján.
A /var/named/root.hints
állomány is megemlítődik benne. A
/var/named/root.hints
állománynak ezt kell tartalmaznia:
; ; Nyitó megjegyzések lehetnek itt, ha már megvan ez az állományod. ; Ha nem, ne aggódj. ; ; A kezdő szóközökről a sorok elején: távolítsd el őket! ; A sornak egy ;-vel, .-tal vagy betűvel kell kezdődniük, nem szóközzel. ; . 6D IN NS A.ROOT-SERVERS.NET. . 6D IN NS B.ROOT-SERVERS.NET. . 6D IN NS C.ROOT-SERVERS.NET. . 6D IN NS D.ROOT-SERVERS.NET. . 6D IN NS E.ROOT-SERVERS.NET. . 6D IN NS F.ROOT-SERVERS.NET. . 6D IN NS G.ROOT-SERVERS.NET. . 6D IN NS H.ROOT-SERVERS.NET. . 6D IN NS I.ROOT-SERVERS.NET. . 6D IN NS J.ROOT-SERVERS.NET. . 6D IN NS K.ROOT-SERVERS.NET. . 6D IN NS L.ROOT-SERVERS.NET. . 6D IN NS M.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 6D IN A 198.41.0.4 B.ROOT-SERVERS.NET. 6D IN A 128.9.0.107 C.ROOT-SERVERS.NET. 6D IN A 192.33.4.12 D.ROOT-SERVERS.NET. 6D IN A 128.8.10.90 E.ROOT-SERVERS.NET. 6D IN A 192.203.230.10 F.ROOT-SERVERS.NET. 6D IN A 192.5.5.241 G.ROOT-SERVERS.NET. 6D IN A 192.112.36.4 H.ROOT-SERVERS.NET. 6D IN A 128.63.2.53 I.ROOT-SERVERS.NET. 6D IN A 192.36.148.17 J.ROOT-SERVERS.NET. 6D IN A 198.41.0.10 K.ROOT-SERVERS.NET. 6D IN A 193.0.14.129 L.ROOT-SERVERS.NET. 6D IN A 198.32.64.12 M.ROOT-SERVERS.NET. 6D IN A 202.12.27.33
Ez az állomány írja le a fő névszervereket a világban. A szerverek időről időre változnak, és frissíteni kell őket most és később is. A Karbantartás fejezetben olvashatsz ezek naprakészen tartásáról.
A következő rész a named.conf
állományban a zone
(zóna). Használatát
egy későbbi fejezetben fogom elmagyarázni; most csak nevezzük el ezt az
állományt 127.0.0
-nak a pz
alkönyvtárban. (Újfent, kérlek távolítsd el
a sor eleji szóközöket, ha kivágod és beilleszted ezt.)
$TTL 3D @ IN SOA ns.linux.bogus. hostmaster.linux.bogus. ( 1 ; Serial 8H ; Refresh 2H ; Retry 4W ; Expire 1D) ; Minimum TTL NS ns.linux.bogus. 1 PTR localhost.
A key
és a control
részek azt határozzák meg, hogy a named programod
távolról irányítható az rndc
programmal ha egy helyi állomásról
kapcsolódik, ekkor egy kódolt titkos kulccsal azonosítja magát. Ez a kulcs
olyan, mint egy jelszó. Az rndc működéséhez az /etc/rndc.conf
állománynak meg
kell egyeznie ezzel:
key rndc_key { algorithm "hmac-md5"; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; options { default-server localhost; default-key rndc_key; };
Amint látod, a secret bejegyzések megegyeznek. Ha az rndc
programot egy másik gépről
szeretnéd használni, a két gép egymáshoz viszonyított rendszeridejének 5 percen belül kell
lennie. Ehhez ajánlom az ntp (xntpd
és ntpdate
) szoftvert.
És most, szükséged lesz egy ehhez hasonló /etc/resolv.conf
állományra: (Újfent:
Távolítsd el a szóközöket!)
search altartomány.a-te-tartományod.edu a-te-tartományod.edu nameserver 127.0.0.1
A "search
" sor határozza meg, milyen tartományban történjen a keresés az
állomások után, amelyekhez kapcsolódni akarsz. A "nameserver
" sor
határozza meg a névszervered címét, ebben az esetben a saját gépedet,
mert ez az, ahol a named programod fut (a 127.0.0.1 cím helyes, nem számít, ha
a gépednek van egy másik címe is). Ha több névszervert akarsz
felsorolni, rakd mindegyiket egy-egy "nameserver
" sorba. (Megjegyzés: A
named soha nem olvassa el ezt az állományt, a named programot használó feloldó
teszi ezt. Megjegyzés 2: Néhány resolv.conf állományban a
"domain" sort találod. Ez helyes, de ne használd a "search" és a
"domain" kulcsszót is egyszerre, csak az egyikük fog működni.)
Annak bemutatására, hogy ez az állomány mit csinál: Ha az ügyfél
megpróbálja kikeresni a foo
-t, akkor a
foo.altartomány.a-te-tartományod.edu
-t próbálja először, majd a
foo.a-te-tartományod.edu
-t, és végül a foo
-t. Ne akarj túl sok
tartományt rakni a keresősorba, mivel mindet végigkeresni időt vesz igénybe.
A példa feltételezi, hogy az altartomány.a-te-tartományod.edu
tartományba
tartozol. A keresősornak nem szabad tartalmaznia a legfelső
tartományodat (TLD - Top Level Domain), ebben az esetben az "edu
"-t. Ha
gyakran kell kapcsolódnod másik tartományban levő állomásokhoz,
hozzáadhatod azt a tartományt a keresősorhoz, így: (Ne felejtsd el
eltávolítani a szóközöket a sor elején, ha vannak)
search altartomány.a-te-tartományod.edu a-te-tartományod.edu másik-tartomány.com
és így tovább. Nyilvánvalóan valódi tartományneveket kell helyettük beraknod. Kérlek figyeld meg a tartománynevek végén a pontok hiányát. Ez fontos!
Mindezek után itt az idő a named indítására. Ha betárcsázós kapcsolatot
használsz, először csatlakozz. Most indítsd a named-et, vagy a boot
szkript futtatásával: /etc/init.d/named start
, vagy a named-et
közvetlenül: /usr/sbin/named
. Ha kipróbáltad a BIND előző verzióit,
valószínűleg az ndc-t használtad. A BIND 9-ben ezt az rndc
program váltotta fel,
ami távolról vezérelheti a named-et, de már nem tudja a named-et
indítani. Ha megnézed a rendszerüzenetek naplóállományát (általában
/var/log/messages
, a Debianban /var/log/daemon
, meg lehet még keresni a
/var/log
egy másik állományában is), mialatt indítod a named-et (ezt a
tail -f /var/log/messages
-el teheted meg), valami ilyesmit kell látnod:
(a \-el végződő sorok a következő sorban folytatódnak)
Dec 23 02:21:12 lookfar named[11031]: starting BIND 9.1.3
Dec 23 02:21:12 lookfar named[11031]: using 1 CPU
Dec 23 02:21:12 lookfar named[11034]: loading configuration from \
'/etc/named.conf'
Dec 23 02:21:12 lookfar named[11034]: the default for the \
'auth-nxdomain' option is now 'no'
Dec 23 02:21:12 lookfar named[11034]: no IPv6 interfaces found
Dec 23 02:21:12 lookfar named[11034]: listening on IPv4 interface lo, \
127.0.0.1#53
Dec 23 02:21:12 lookfar named[11034]: listening on IPv4 interface eth0, \
10.0.0.129#53
Dec 23 02:21:12 lookfar named[11034]: command channel listening on \
127.0.0.1#953
Dec 23 02:21:13 lookfar named[11034]: running
Ha bármilyen hibaüzenet megjelenik, akkor ott hiba van. A named megnevezi az állományt, amit épp olvas. Menj vissza, és ellenőrizd le az állományt. Indítsd újból a named-et, ha megjavítottad.
Most letesztelheted a beállításodat. Hagyományosan az nslookup
használatos erre. Napjainkban azonban már a dig
ajánlott:
$ dig -x 127.0.0.1
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26669
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa. IN PTR
;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 259200 IN PTR localhost.
;; AUTHORITY SECTION:
0.0.127.in-addr.arpa. 259200 IN NS ns.linux.bogus.
;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 23 02:26:17 2001
;; MSG SIZE rcvd: 91
Ha ilyen üzeneteket kaptál, akkor működik. Reméljük. Ha bármi teljesen eltérőt kapsz,
menj vissza, és ellenőrizz le mindent. Minden alkalommal, amikor
megváltoztatsz egy állományt, futtasd az rndc reload
parancsot.
Most már beadhatsz egy lekérdezést. Próbálj meg valami hozzád közeli
gépet. A pat.uio.no
közel van hozzám, az Oslói Egyetemen:
$ dig pat.uio.no
; <<>> DiG 9.1.3 <<>> pat.uio.no
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15574
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0
;; QUESTION SECTION:
;pat.uio.no. IN A
;; ANSWER SECTION:
pat.uio.no. 86400 IN A 129.240.130.16
;; AUTHORITY SECTION:
uio.no. 86400 IN NS nissen.uio.no.
uio.no. 86400 IN NS nn.uninett.no.
uio.no. 86400 IN NS ifi.uio.no.
;; Query time: 651 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 23 02:28:35 2001
;; MSG SIZE rcvd: 108
Ezúttal a dig
megkérte a named-et, hogy keresse meg a pat.uio.no
gépet. Az pedig kapcsolódott a root.hints
állományodban levő
egyik névszerver géphez, és lekérdezte az útvonalát onnan. Eltarthat egy
röpke pillanatig, míg megkapod az eredményt, mivel végig kell keresnie
az összes tartományt, amit a /etc/resolv.conf
-ban megneveztél.
Ha még egyszer lekérdezed ugyanazt, ezt kapod:
$ dig pat.uio.no
; <<>> DiG 8.2 <<>> pat.uio.no
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
;; QUERY SECTION:
;; pat.uio.no, type = A, class = IN
;; ANSWER SECTION:
pat.uio.no. 23h59m58s IN A 129.240.130.16
;; AUTHORITY SECTION:
UIO.NO. 23h59m58s IN NS nissen.UIO.NO.
UIO.NO. 23h59m58s IN NS ifi.UIO.NO.
UIO.NO. 23h59m58s IN NS nn.uninett.NO.
;; ADDITIONAL SECTION:
nissen.UIO.NO. 23h59m58s IN A 129.240.2.3
ifi.UIO.NO. 1d23h59m58s IN A 129.240.64.2
nn.uninett.NO. 1d23h59m58s IN A 158.38.0.181
;; Total query time: 4 msec
;; FROM: lookfar to SERVER: default -- 127.0.0.1
;; WHEN: Sat Dec 16 00:23:09 2000
;; MSG SIZE sent: 28 rcvd: 162
Ahogy azt nyilvánvalóan láthatod, ezúttal ez sokkal gyorsabb volt, 4 ms a korábbi több, mint fél másodperccel ellentétben. A válasz benne volt a gyorsítótárban. A gyorsítótárban lévő eredményeknél esély van arra, hogy már elavult, de az eredeti szerverek befolyásolhatják azt az időt, amíg a letárolt válaszok érvényesként lesznek nyilvántartva. Végül is nagy a valószínűség arra, hogy a kapott válasz érvényes.
Minden operációs rendszer, ami a C API szabványt alkalmazza, rendelkezik
a gethostbyname és a gethostbyaddr hívásokkal. Ezek különböző
forrásokból szerezhetik be az információt. Hogy melyik forrásból szerzik
ezt be, az Linux (és egyes Unix) rendszereken az /etc/nsswitch.conf
állományban van
beállítva. Ez egy hosszú állomány, amely megadja mely állományokból
vagy adatbázisokból szerezhetők be különböző adattípusok. Általában
hasznos megjegyzéseket tartalmaz a fejlécében, melyeket körültekintően
olvass el. Ezután keresd meg a "hosts:
" kulcsszóval kezdődő sort; így kell kinéznie:
hosts: files dns
(Emlékszel még a szóközökre a sor elején? Nem akarom újra megemlíteni.)
Ha nincs "hosts:
" kulcsszóval kezdődő sor, szúrd be a fentieket. Ezek a sorok azt jelentik,
hogy a programoknak először a /etc/hosts
állományban kell keresniük,
majd leellenőrzik a DNS-t a resolv.conf
állomány alapján.
Most már tudod, hogyan kell beállítani a gyorsítótáras named-et. Bonts egy sört, tejet, vagy bármit, amivel ünnepelni szeretsz.