HOWTO:
Named, a Domain Name Server geschreven door Johan Huysmans
1. Over deze howto. Deze howto legt uit hoe je een Named server kan configureren. Enkel de elementen die voorkomen in het voorbeeld zullen uitvoerig uitgelegd worden. Dit zijn de meest voorkomende instellingen en daarmee is het dus mogelijk gemakkelijk een goede DNS server op te zetten. Na de configuratie van de server wordt er ook uitgelegd hoe men de dns-clients kan instellen, zowel onder windows als linux. Ook worden er enkele tools uitgelegd waarmee men handmatig request kan behandelen, en zo oa. de goede werking van de server testen.
2. /etc/named.conf Dit is de algemene configuratiefile en wordt voor de gemakkelijkheid hier opgedeeld in drie delen: Opties, zones en logging. A. Opties Hier gaan we 2 statements bespreken, options (= lijst van globale configuraties en defaults) en acl (= definieert de IP adressen in een Access Control List). • Options Dit is meestal het eerste deel binnen de configuratiefile. Er kan maar 1 "options" sectie zijn, maar deze kan wel meerdere values bevatten. Algemeen ziet dit er zo uit: options { value "property"; }; • Acl Deze optie laat je een lijst van IP adressen definiëren. Algemeen ziet dit er zo uit: acl acl-name { address_match_element; ... };
Het opties-gedeelte binnen onze configuratie ziet er als volgt uit: options { version ""; directory "/var/named/"; listen-on { 127.0.0.1; 192.168.123.101; }; forwarders { 195.130.131.9; 195.130.130.4; }; allow-query { private; }; allow-transfer { none; }; }; acl private { 192.168.123.0/24; }; ...
•
•
•
•
•
•
version ""; Hier kan men een (fictief) versienummer invoeren, dit zorgt ervoor dat men het echte versienummer niet gemakkelijk te weten kan komen. directory "/var/named/"; Hier stelt men de directory in waar de zone files gevonden kunnen worden, hierdoor moet men in de zone de directory niet meer vermelden en is enkel de file -name voldoende. Standaard gebruikt men de directory "/var/named/". listen-on { 127.0.0.1; 192.168.123.101; }; Hierin vermeld men de ipadressen waarop de server zal luisteren. Zo kan men vermijden dat request die op een bepaald ip binnenkomen worden afgehandeld. forwarders { 195.130.131.9; 195.130.130.4; }; Indien de request niet afgehandeld kan worden door deze server zal het geforward worden naar een van deze servers. Hier kan men bevoorbeeld de name servers invoeren van de ISP (hier zijn het de ns van telenet). allow-query { private; }; Enkel deze clients mogen queries uitvoeren. Hier is in plaats van een of meerder ipadressen een acl ingegeven die later wordt gedefinieerd. allow-transfer { none; }; Hier worden de ip's gedefinieerd die transfers mogen uitvoeren op deze server, dit is wanneer er sprake is van een secundaire dns, in ons geval is er dat dus niemand.
•
acl private { 192.168.123.0/24 }; Hier wordt de acl (Access Control List) "private" gedefinieerd. Door te werken met acl's hoeft men op slecht 1 plaats de ipadressen invullen en hoeven ze ook maar op 1 plaats vervangen worden indien ze wijzigen. Hier is een volledig netwerk gedefinieerd.
B. Zones Dit is het belangrijkste onderdeel van de config file. Hier worden de zones gedefinieerd waarvoor deze dns server verantwoordelijk is. Algemeen ziet dit er zo uit: zone "zone.naam" { type (master | slave | hint); // master: primaire dns - slave: secundaire dns - hint: enkel gebruiken bij root-zone. file "file.name"; ... }; ... zone "." { type hint; file "named.ca"; }; zone "localhost" { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" { type master; file "0.0.127.in-addr.arpa.zone"; }; zone "pinguin.be" { type master; file "pinguin.zone"; }; zone "123.168.192.in-addr.arpa" { type master; file "123.168.192.in-addr.arpa.zone"; }; ...
C. Logging Met dit statement worden de logging opties bepaald. Binnen het "logging" statement wordt nog de "channel" en de "category" gedefinieerd. Algemeen ziet dit er zo uit: logging { channel channel-name { file "file-name" versions aantal-versies size bestandsgrootte-in-bytes; print-time (yes | no ); print-category (yes | no); print-severity (yes | no); }; ... category category-name { channel-name; }; }; ... logging { channel named { file "/var/log/named/named.log" versions 3 size 1m; print-time yes; print-category yes; print-severity yes; }; channel query { file "/var/log/named/queries.log" versions 1 size 1m; print-time yes; print-category no; print-severity no; }; channel updates { file "/var/log/named/updates.log" versions 3 size 1m; print-time yes; print-category no; print-severity no; }; category default { named; }; category queries { query; }; category update { updates; }; };
3. zone files Hier worden de verschillende zone files besproken, deze zijn reeds in 2B gedefinieerd in /etc/named.conf. A. named.ca In deze file staan staan de 13 root name servers gedefinieerd. Men kan steeds de recenste versie ervan downloaden op ftp://ftp.internic.net/domain/named.cache B. localhost.zone Dit is de "host to IP address" file voor de localhost. $TTL 86400 @
IN
SOA
@ 1 28800 7200 604800 86400
root.localhost ( ; serial ; refresh ; retry ; expire ; ttl
@
IN
NS
localhost.
@
IN
A
127.0.0.1
)
C. 0.0.127.in-addr.arpa.zone Deze file bevat de reverse lookup voor de localhost. $TTL 86400 @
IN
SOA
localhost. 1 28800 7200 604800 86400
@
IN
NS
localhost.
1
IN
PTR
localhost.
)
root.localhost ( ; serial ; refresh ; retry ; expire ; ttl
D. pinguin.zone Deze zone file bevat de Resource Records (RR) van de IP adressen. $ORIGIN . $TTL 86400 pinguin.be
; 1 day IN SOA
NS
•
• • •
ns.pinguin.be. root.pinguin.be. ( 2005028000 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) ns.pinguin.be.
$ORIGIN pinguin.be. ns johan
A CNAME
192.168.123.101 ns
steve
A
192.168.123.102
dimi dimitri
A CNAME
192.168.123.103 dimi
SOA (Start Of Authority) De SOA zorgt ervoor dat de name server geïdentificeerd wordt als authoritaire bron voor informatie in dat domein. NS (Name Server) Duidt de name server(s) aan voor dit domein. A (Address) Omzetten van een naam naar een ipadres. CNAME (Canonical Name) Omzetten van een naam naar een naam (alias).
E. 123.168.192.in-addr.arpa.zone Dit is een reverse zone file dat de reverse lookups verzorgd, hier worden de ipadressen omgezet in een naam. Hier worden de ipadressen binnen 192.168.123.0/24 omgezet naar hun FQDN. $ORIGIN . $TTL 86400 ; 1 day 123.168.192.in-addr.arpa IN SOA ns.pinguin.be. root.pinguin.be. ( 2005028000 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS ns.pinguin.be. $ORIGIN 123.168.192.in-addr.arpa. 101 PTR johan.pinguin.be. 102 PTR steve.pinguin.be. 103 PTR dimi.pinguin.be.
•
PTR (POINTER) Omzetten van een ipadres naar een naam.
4. Instellingen op de client Op de client moeten er telkens 2 instellingen gemaakt worden, meestal wordt dit meegegeven via dhcp, maar dit kan ook handmatig gebeuren. De 2 instellingen zijn: het ip van de dns server en het DNS-suffix
A. Windows Instellen van de dns server:
Instellen van de dns suffix:
B. Linux Hier worden de dns instellingen bijgehouden in "/etc/resolv.conf" ; generated by /sbin/dhclient-script search pinguin.be nameserver 192.168.123.101
Zoals vermeld in de file wordt deze telkens aangepast door dhclient. Als deze gegevens niet gewijzigd mogen worden, moet dit ingesteld worden. Deze instelling gebeurt bij de interface die zijn gegevens krijgt via dhcp. In de file "/etc/sysconfig/network-scripts/ifcfg-ethx" deze regel invoegen/aanpassen. PEERDNS=no
5. Checking tools Er zijn enkele tools waarmee je de configuratie van de configurartie files kan testen. A. named-checkconf Hiermee kan je de named.conf file op syntax-fouten controlleren. Indien er geen melding wordt weergegeven zijn er geen syntax-fouten in die file. syntax: named-checkconf B. named-checkzone Hiermee kan je de zone file op syntax en integriteit fouten controlleren. Er worden dezelfde controlles uitgevoerd dan tijdens het starten van de named server. syntax: named-checkzone zone zone-file 6. DNS tools Bij BIND zijn er 3 tools die handig zijn bij het troubleshooting van DNS problemen. A. Nslookup Nslookup heeft 2 modes: interactive en non-interactive. In interactive mode kan men query's op de names server uitvoeren om informatie te bekomen over verschillende hosts en domains. In non-interactive mode gebruikt men om juist de naam en gevraagde informatie van een host of domein te bekomen.
B. Host Host is een eenvoudig en gemakkelijk tooltje voor het uitvoeren van DNS lookups. Het wordt gebruikt voor het omzetten van namen naar IP adressen en vice versa.
C. Dig (Domain Information Groper) Dig is een flexibel tooltje waarmee men DNS servers kan ondervragen, Dig laat dan het antwoord op de request zien. Dig wordt meestal gebruikt omwille van de flexibiliteit, gebruiksgemak en de duidelijkheid van de output.