Op m'n werk gebruiken we Linux als een DNS-server. Het voldoet uitstekend. Deze sectie richt zich op de configuratie van DNS-tabellen voor deze services door gebruik te maken van het package BIND 8.x dat standaard bij de Red Hat distributie wordt geleverd.
![]() | Noot: In Red Hat versie 5.1 en eerder wordt gebruik gemaakt van het package BIND 4.x, welke een iets ander formaat voor zijn configuratie bestand toepast. BIND 8.x biedt meer functionaliteit dan wat door BIND 4.x wordt geboden en aangezien 4.x niet langer verder wordt ontwikkeld, zou je moeten overwegen je BIND-package tot de laatste versie bij te werken. Installeer gewoon het BIND RPM-package (zie the section called Het gebruik van de Red Hat Package Manager (RPM) in Chapter 10 voor details over het gebruik van het RPM utility), en converteer je configuratiebestand dan naar het nieuwe formaat. Gelukkig is het eenvoudig je bestaande BIND 4.x configuratiebestand te converteren zodat het in overeenstemming is met BIND 8.x! In de documentatie directory waarin als onderdeel van BIND wordt voorzien (bijvoorbeeld ``/usr/doc/bind-8.1.2/'' voor BIND versie 8.1.2), komt een bestand voor genaamd ``named-bootconf.pl'', dit is een uitvoerbaar Perl-programma. In de veronderstelling dat je Perl op je systeem hebt geïnstalleerd, kun je dit programma gebruiken om je configuratiebestand te converteren. Typ hiervoor (als root) de volgende commando's:
Nu zou je een bestand ``/etc/named.conf'' moeten hebben dat “direct voor gebruik” met BIND 8.x zou moeten werken. Je bestaande DNS-tabellen zullen met de nieuwe versie van BIND werken zoals ze zijn, aangezien het formaat van de tabellen hetzelfde is gebleven. |
Het configureren van DNS-services onder Linux bestaat uit de volgende stappen:
Om DNS-services te activeren, zou het bestand ``/etc/host.conf'' er ongeveer zo uit moeten zien:
# Zoek namen eerst op via /etc/hosts, dan door een DNS query order hosts, bind # We hebben geen computers met meerdere adressen multi on # Controleer op IP-adres spoofing nospoof on # Waarschuw ons als iemand toegang tot de root van het systeem probeert te # krijgen alert on |
De extra spoof-detectie treft de performance iets van de DNS-lookups (alhoewel te verwaarlozen), dus als je je hier niet al te veel zorgen om maakt, kun je de regels met “nospool” en “alert” deactiveren.
Configureer naar wens het bestand ``/etc/hosts''. Kenmerkend dat hieraan niet veel hoeft te worden gedaan, maar voor een verbeterde performance kun je alle hosts toevoegen die je vaak benaderd (zoals lokale servers) om de uitvoering van DNS-lookups hierop te voorkomen.
Het bestand ``/etc/named.conf'' zou zodanig moeten zijn geconfigureerd dat het naar de DNS-tabellen overeenkomstig het voorbeeld hieronder verwijst.
![]() | (Noot: de hierboven gebruikte IP-adressen zijn slechts voorbeelden en moeten door je eigen class adressen worden vervangen!): |
options {
// DNS tabellen zijn gelokaliseerd in de directory /var/named
directory "/var/named";
// Forward eventule onopgeloste verzoeken naar onze ISP's name server
// (dit is slechts een voorbeeld IP-adres, gebruik het niet!)
forwarders {
123.12.40.17;
};
/*
* Als er zich een firewall bevindt, tussen jou en de nameservers
* waarmee je wilt communiceren, dan kan het zijn dat je de
* commentaar-tekens voor de query-source richtlijn hieronder weg
* moet halen.
* Vorige versies van BIND stelden vragen altijd via poort 53,
* maar BIND 8.1 gebruikt standaard geen vastgestelde poort.
*/
// query-source address * port 53;
};
// Activeer caching en laad root server info
zone "named.root" {
type hint;
file "";
};
// Al onze DNS informatie wordt opgeslagen in /var/named/mijndomein_naam.db
// (bv. als mijndomein.naam = foobar.com gebruik dan foobar_com.db)
zone "mijndomein.naam" {
type master;
file "mijndomein_naam.db";
allow-transfer { 123.12.41.40; };
};
// Reverse lookups voor 123.12.41.*, .42.*, .43.*, .44.* class C's
// (dit zijn slechts voorbeelden van Class C's -- gebruik ze niet!)
zone "12.123.IN-ADDR.ARPA" {
type master;
file "123_12.rev";
allow-transfer { 123.12.41.40; };
};
// Reverse lookups voor 126.27.18.*, .19.*, .20.* class C's
// (dit zijn slechts voorbeelden van Class C's -- gebruik ze niet!)
zone "27.126.IN-ADDR.ARPA" {
type master;
file "126_27.rev";
allow-transfer { 123.12.41.40; };
}; |
![]() | Tip: Let hierboven op de opties allow-transfer, waarmee DNS zone transfers tot een gegeven IP-adres worden begrenst. In ons voorbeeld staan we de host op 123.12.41.40 (waarschijnlijk een slave DNS-server in ons domein) toe zone transters te ondervragen. Als je deze optie achterwege laat, zal iedereen op het Internet de mogelijkheid hebben dergelijke transporten te ondervragen. Aangezien de hierboven geleverde informatie vaak door spammers en IP-spoofers wordt gebruikt, raad ik je ten zeerste aan zone transfers te begrenzen behalve naar je slave DNS-server(s), of in plaats daarvan gebruik te maken van het loopback adres, ``127.0.0.1''. |
Nu kun je je DNS-tabellen instellen in de ``var/named/'' directory zoals is geconfigureerd in het bestand ``/etc/named.conf'' in stap drie. Het voor de eerste keer configureren van DNS database bestanden is een grootse onderneming, en valt buiten het kader van dit boek. Er zijn verscheidene leidraads, online en in afgedrukte vorm die zouden moeten worden geraadpleegd. Hieronder worden echter verscheidene voorbeelden gegeven.
Voorbeeld-entries in het ``/var/named/mijndomein_naam.db'' forward lookup bestand:
; Dit is het Start of Authority (SOA) record. Bevat contact
; & andere informatie over de name-server. Het serienummer
; moet worden gewijzigd wanneer het bestand is bijgewerkt (ter informatie aan
; secondary servers dat de zone informatie is gewijzigd).
@ IN SOA mijndomein.naam. postmaster.mijndomein.naam. (
19990811 ; Serienummer
3600 ; 1 uur refresh
300 ; 5 minuten retry
172800 ; 2 dagen expiry
43200 ) ; 12 uur minimum
; Een opsomming van de in gebruik zijnde name-servers. Onopgeloste
; (entries in andere zones)
; zullen naar onze ISP's name server isp.domein.naam.com gaan
IN NS mijndomein.naam.
IN NS isp.domein.naam.com.
; Dit is de mail-exchanger. Je kunt er meer dan één inzetten.
; (als van toepassing), met het integer veld dat de prioriteit aangeeft
; (laagste heeft hogere prioriteit).
IN MX mail.mijndomein.naam.
; Voorziet in optionele informatie over het type computer &
; besturingssysteem dat voor de server wordt gebruikt
IN HINFO Pentium/350 LINUX
; Een lijst met computernamen & adressen
spock.mijndomein.naam. IN A 123.12.41.40 ; OpenVMS Alpha
mail.mijndomein.naam. IN A 123.12.41.41 ; Linux (main server)
kirk.mijndomein.naam. IN A 123.12.41.42 ; Windows NT (blech!)
; Inclusief eventuele in onze andere class C's
twixel.mijndomein.naam. IN A 126.27.18.161 ; Linux test machine
foxone.mijndomein.naam. IN A 126.27.18.162 ; Linux devel. kernel
; Alias (gebruikelijke) namen
gopher IN CNAME mail.mijndomein.naam.
ftp IN CNAME mail.mijndomein.naam.
www IN CNAME mail.mijndomein.naam. |
Voorbeeld entries in het ``/var/named/123_12.rev'' reverse lookup bestand:
; Dit is het Start of Authority record. Hetzelfde als in de forward lookup
; tabel.
@ IN SOA mijndomein.naam. postmaster.mijndomein.naam. (
19990811 ; Serienummer
3600 ; 1 uur refresh
300 ; 5 minuten retry
172800 ; 2 dagen expiry
43200 ) ; 12 uur minimum
; Name servers zoals opgesomd in forward lookup tabel
IN NS mail.mijndomein.naam.
IN NS isp.domein.naam.com.
; Een lijst met computernamen & adressen, maar dan omgekeerd.
; We wijzen hier meer dan één class C toe, dus we moeten hier
; ook het class B gedeelte opsommen.
40.41 IN PTR spock.mijndomein.naam.
41.41 IN PTR mail.mijndomein.naam.
42.41 IN PTR kirk.mijndomein.naam.
; Zoals je kunt zien, kunnen we onze andere class C's toewijzen, zolang ze maar
; onder de 123.12.* class B adressen zijn
24.42 IN PTR tsingtao.mijndomein.naam.
250.42 IN PTR redstripe.mijndomein.naam.
24.43 IN PTR kirin.mijndomein.naam.
66.44 IN PTR sapporo.mijndomein.naam.
; In het reverse lookup bestand zouden geen alias (gebruikelijke) namen
; moeten staan (om vanzelfsprekende redenen). |
Enige andere reverse lookup bestanden die nodig zijn om adressen in een andere class B (zoals 126.27.*) in te delen, kunnen worden aangemaakt, en die zouden er vrijwel hetzelfde uitzien als het reverse lookup voorbeeldbestand van hierboven.
Zorg ervoor dat de named daemon draait. Deze daemon wordt normaal gesproken bij de systeemstart vanuit het bestand ``/etc/rc.d/init.d/named'' opgestart. Je kunt de daemon ook handmatig starten en stoppen; typ respectievelijk ``named start'' en ``named stop''.
Wanneer er wijzigingen aan de DNS-tabellen worden aangebracht, zou de DNS-server opnieuw moeten worden opgestart door het intikken van ``/etc/rc.d/init.d/named restart''. Wellicht dat je je wijzigingen dan wilt testen door gebruik te maken van een tool zoals “nslookup” om de computer die je hebt toegevoegd of gewijzigd te ondervragen.
Meer informatie over het configureren van DNS-services is te vinden in de ``DNS-HOWTO'' op http://metalab.unc.edu/Linux/HOWTO/DNS-HOWTO-5.html.