Linux – Friheden til systemadministration: Version 2.8.20060113 – 2021-01-07 | ||
---|---|---|
forrige | Kapitel 6. TCP/IP og DNS | næste |
Dette afsnit vil gennemgå opsætningen af et registreret domæne på en DNS-server. Strukturen fra BIND 8.x er benyttet, da dette er den version de fleste DNS-servere anvender, modsætningen er den noget ældre BIND 4.x. De følgende eksempler kører på BIND 8.1.2, men nye versioner udvikles hele tiden. Opgraderinger kan hentes fra http://www.isc.org.
Den overordnede opsætningsfil er /etc/named.conf. I denne defineres hvilke zoner (domæner) DNS-serveren administrerer og i hvilke filer de enkelte zoner er defineret.
Som standard vil man skulle definere 4 zoner for domænet "intranet" med IP-adresser i intervallet 192.168.0.1-192.168.0.254 (ikke 255, da dette er broadcast-adressen).
. (punktum) : Først og fremmest root, denne zone henviser til root-serverne således at DNS-serveren kan spørge disse om domæner den ikke selv er ansvarlig for, hvilket vil sige at det er denne zone som DNS-serveren benytter når den modtager forespørgsler om IP-adresser på et domæne, som den ikke selv er ansvarlig for. Nedenfor er dette angivet i filen /var/named/root.cache.
0.0.127.in-addr.arpa: Reverse lookup betyder, at man har en IP-adresse og gerne vil vide hvilket domæne denne tilhører. For at DNS-serveren kan besvare denne slags forespørgsler, kræves det at reverse-zonerne bliver defineret. Reverse-zonen 127.0.0 refererer blot til DNS-serveren selv (filen /var/named/127.0.0.rev), TCP/IP-software kræver i nogle tilfælde at denne IP-adresse henviser til DNS-serveren selv. Derfor skal denne zone altid medtages.
0.168.192.in-addr.arpa: Den anden (eller de andre) reverse-zoner er de "rigtige" IP-adresser. Hvis man for eksempel råder over adresserne 192.168.0.1-192.168.0.254, laver man en reverse-zone-fil til disse IP-numre. (De nævnte adresser er kun et eksempel, de eksisterer ikke på internettet da de er nogle af de "private" adresser). Denne zone gemmes i /var/named/192.168.0.rev.
intranet: Du skal også lave en fil, der kan afbilde fra navn til IP-nummer for det domæne, du sætter op. I filen /var/named/intranet kan du erklære navne og aliaser for alle maskiner.
Følgende er et eksempel på en /etc/named.conf fil som indeholder ovenstående grundlæggende opsætning:
options { /* Hvor er filerne med DNS-opsætning */ directory "/var/named"; /* Indsaet 1-3 forwarder nameservere */ /* Brug dem fra din ISP og indsaet IP-adresserne */ /* i stedet for NNN.NNN.NNN.NNN og MMM.MMM.MMM.MMM */ forwarders { NNN.NNN.NNN.NNN; MMM.MMM.MMM.MMM; }; /* Lyt på DNS-forespørgsler til to IP-adresser */ listen-on { 192.168.0.1; 127.0.0.1 ; }; /* Udkommenter følgende linje hvis dit domæne er kendt på internettet */ notify no; }; logging { category lame-servers { null; }; category cname { null; }; }; zone "." in { type hint; file "root.cache"; }; zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.rev"; }; zone "0.168.192.in-addr.arpa" in { type master; file "192.168.0.rev"; }; zone "intranet" in { type master; file "intranet"; };
De første linjer definer i hvilket bibliotek de senere omtalte filer skal placeres. Standard er: /var/named, men du kan også anvende f.eks. /etc/named eller andre steder.
Logging-linjen forhindrer at man får en masse unødigt i sin syslog. (Log-funktionen er meget avanceret, en masse forskellige kriterier kan defineres).
Næste linje er en zone-definition. Her gælder det root-zonen, selve filen hentes fra ftp://ftp.internic.net. De resterende linjer fortæller først hvilket domæne det handler om, og derefter i hvilken fil selve domænet er defineret. Samtidig får serveren af vide om den er "master" eller "slave" for det pågældende domæne. I ovenstående tilfælde er DNS-serveren master for alle zoner. For at kunne registrere et domæne kræves det at man har 2 DNS-servere til domænet, master og slave, eller primær og sekundær. Følgende er et eksempel på en slave-zone:
zone "intranet" in { type slave; file "intranet"; masters { 192.168.0.1; }; };
Udover at der nu står slave i stedet for master, er en linje tilføjet som fortæller hvilken server er master. Grunden til at slave-serveren skal kende master-serveren er, at slave-serveren henter zone-filerne fra master-serveren. Dette betyder at ændringer i et domæne på master-serveren automatisk vil blive overført til slave-serveren.
Vi kan f.eks. bruge følgende udgangspunkt for /var/named/root.cache – dvs. root-zonen.
; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC registration services ; under anonymous FTP as ; file /domain/named.root ; on server FTP.RS.INTERNIC.NET ; -OR- under Gopher at RS.INTERNIC.NET ; under menu InterNIC Registration Services (NSI) ; submenu InterNIC Registration Archives ; file named.root ; ; last update: Feb 28, 1997 ; related version of root zone: 1997022800 ; ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; temporarily housed at NSI (InterNIC) ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10 ; ; temporarily housed at NSI (InterNIC) ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 ; ; temporarily housed at ISI (IANA) ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12 ; ; temporarily housed at ISI (IANA) ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 ; End of File
Den næste fil er for maskinerne i 192.168.0.*-området:
$TTL 1D @ IN SOA ns.intranet. hostmaster.intranet. ( 1999102400 ; serial number 60000 ; refresh (1 day) 3600 ; retry (1 hour) 2600000 ; expire (1 month) 60000 ; minimum (1 day) ) ; ; NB: BRUG TABULATOR SOM MELLEMRUM ; ; ; Dette domænes DNS-servere: ; IN NS ns.intranet. ; ; Mailserveren for dette domæne: ; IN MX 0 mail.intranet. ; ; Standardhostnavne afbildet til IP-adresser: ; localhost IN A 127.0.0.1 linus IN A 192.168.0.1 ; ; Øvrige hostnavne afbildet til IP-adresser: ; alan IN A 192.168.0.2 richard IN A 192.168.0.3 eric IN A 192.168.0.4 ; ; Alias adresser: ; ns IN CNAME linus.intranet. mail IN CNAME linus.intranet.
Husk: Den første linje $TTL - "Time to live" skal med, og der anvendes tabulator til at adskille hvert felt, og der må ikke anvendes mellemrum. Bemærk specielt, at der er punktum efter hvert maskin-navn i CNAME-linjerne.
Når en computer ude på nettet har spurgt vores server om noget på vores zone vil den have modtaget noget data. Efter et par dage vil det være muligt at disse data er forældet. Derfor kan man med "TTL"-parameteren angive hvor lang tid en klient må beholde data som den har fået fra en DNS-server.
Linje to til syv angiver diverse parametre for selve domænet. Det er ikke så vigtigt at forstå ordenen i disse linjer, derimod er det vigtigt at forstå betydningen. Det første tegn "@" er en variabel for selve domænet. Her kunne altså i stedet stå "intranet.". Grunden til at man i stedet sætter en variabel, er at man på den måde ikke behøver ændre dette felt hvis man bruger denne zone-fil til at lave en anden zone-fil.
"IN" står for "INTERNET" og angiver den klasse data man benytter. I dag bliver der meget sjældent benyttet andre klasser, så derfor er IN default, og man behøver derfor ikke angive dette. SOA står som tidligere skrevet for "Start Of Authority" og fortæller efterfølgende hvilken navneserver der er ansvarlig for denne zone.
"ns.intranet." fortæller hvilket domæne navneserveren er ansvarlig for, "hostmaster.intranet" er e-post-adressen til vedkommende som er ansvarlig for domænet. Bemærk, at det første . (punktum) skal læses som et @.
"Serial" er serienummeret for zonen. Hver gang man laver en ændring, skal serienummeret opdateres. Eneste regel er at tallet skal blive mindst én højere (inkrementeres). De fleste vælger at bruge dags dato sammen med et 2-cifret tal. Det gør det muligt at vide hvornår sidste opdatering blev foretaget. Grunden til at man har serienummeret, er at man kun opdaterer sine zone-filer på sin master-server. Slave-serveren vil derefter selv hente ændringerne, men den ved kun at der er foretaget ændringer hvis serienummeret er blevet inkrementeret.
"Refresh" fortæller hvor tit slave-serveren skal spørge master-serveren om serienummeret på det pågældende domæne og herved beslutte om der skal foretages en overførsel.
Hvis slave-serveren ikke er i stand til at skabe kontakt til master-serveren i første forsøg, definerer man med "Retry" hvor lang tid den skal vente før den prøver igen.
I tilfælde af at slave-serveren slet ikke kan få kontakt til master-serveren, vil det efter nogle dage kunne være sandsynligt at der er foretaget ændringer på master-serveren som slave-serveren ikke har. Hvilket vil sige at den primære og den sekundære server giver modstridende oplysninger til deres klienter! For at undgå dette kan man definere hvor lang tid slave-serveren skal tro på at dens zone-data er gode nok. Dette gøres med "expire"-parameteren. Det skal forstås således, at når slave-serveren ikke kan kontakte master-serveren og det angivne tidsrum er udløbet, vil slave-serveren smide sine data om den pågældende zone ud, og altså ikke besvare forespørgsler omkring denne zone.
Ovenstående parametre som angives i tidsrum, kan skrives i S, M, H, D (Sekunder, Minutter, Timer, Dage). De fleste vælger at angive dem alle i sekunder, det gør dog ingen forskel, og det er rimelig besværligt at skulle omregne eksempelvis 86400 sekunder (1 dag).
Der findes mange meninger om hvorledes ovenstående parametre skal sættes. De 4 første handler udelukkende om DNS-serverne, og derfor er det yderst begrænset hvor store fejl, der kan opstå ved at sætte nogle af disse 4 parametre "forkert", hvis man selv administrerer både master og slave. Derimod er det mindre hensigtsmæssigt at sætte TTL helt forkert. Resultatet kan eksempelvis blive at man ikke kan modtage post i en uges tid, hvis man er kommet til at angive en forkert IP-adresse til mail-serveren, og TTL er sat til en uge.
Resten af zone-filen er selve "records". Den første kolonne fortæller hvilket navn man vil omsætte. Eksempelvis kunne der stå "mail.intranet" for at fortælle hvad "mail.intranet" skulle referere til. Hvis man ikke angiver noget i den første kolonne, vil selve zonen være default, altså "intranet."
En vigtig ting som altid gælder når man angiver navne: Hvis man ikke afslutter med et "." (punktum) vil serveren automatisk tilføje det pågældende domæne til navnet. "mail.intranet" vil derfor blive til "mail.intranet.intranet".
Herefter skal der angives hvilken klasse man arbejder med – her er "IN" igen default. Derpå skal man fortælle hvilken type record man vil angive (de mest brugte vil blive gennemgået i det efterfølgende). Det sidste der skal angives, er hvilket navn eller hvilken IP-adresse DNS-serveren skal svare tilbage med, når den bliver spurgt om denne record.
Den først record er af typen "NS" (Name Server), her angiver man navnet på DNS-serveren, først den primære, herefter den sekundære.
Den næste record er af typen "MX" (Mail eXchanger), her angives navnet på post-serveren.
Herefter kommer en stribe standard "A"-records (A = Address). Denne record angiver hvilket IP-nummer den omtalte host har.
"CNAME" står for Canonical name og betyder alias. Denne record-type bruges til at have flere navne til at referere til en IP-adresse.
Den første "reverse"-fil er for "localhost", som vi i /etc/named.conf valgte at gemme i /var/named/127.0.0.rev.
$TTL 1D @ IN SOA ns.intranet. hostmaster.intranet. ( 1999102400 ; serial number 60000 ; refresh (1 day) 3600 ; retry (1 hour) 2600000 ; expire (1 month) 60000 ; minimum (1 day) ) ; ; NB: BRUG TABULATOR SOM MELLEMRUM ; ; ; DNS-serveren for denne zone: ; IN NS ns.intranet. ; ; Reverse mappings: ; 1 IN PTR localhost.
Husk den første linje $TTL - "Time to live" - skal med, og der anvendes tabulator til at adskille hvert felt. Bemærk specielt, at der er punktum efter hvert maskin-navn.
Igen har vi SOA-recorden (fra linje 2 til 7). Det er en fordel at have en generel SOA-record for alle sine zoner, dog kan man naturligvis have behov for forskelle nogle steder, men rent administrativt er det langt mere overskueligt med samme parametre.
Grunden til at der kun er angivet en DNS-server, er at denne zone udelukkende er for 127.0.0 som altså kun kan være den lokale server, hvilket ikke har noget at gøre med den/de andre DNS-servere.
Reverse records er af typen PTR. Da forespørgsler til reverse-zoner skal besvares med et navn i stedet for en IP-adresse er strukturen i disse zoner også anderledes. Der er simpelthen byttet om på navnet og IP-adressen. Derfor står IP-adressen først, i det her tilfælde 1 (1 + zone-navnet (127.0.0) = 127.0.0.1), herefter klassen (IN), record-typen (PTR) og til sidst navnet (localhost).
Den næste "reverse"-fil er for maskinerne i 192.168.0.*-området:
$TTL 1D @ IN SOA ns.intranet. hostmaster.intranet. ( 1999102400 ; serial number 60000 ; refresh (1 day) 3600 ; retry (1 hour) 2600000 ; expire (1 month) 60000 ; minimum (1 day) ) ; ; NB: BRUG TABULATOR SOM MELLEMRUM ; ; ; Name Servers for this reverse zone: ; IN NS ns.intranet. ; ; Reverse mappings: ; 1 IN PTR linus.intranet. 2 IN PTR alan.intranet. 3 IN PTR richard.intranet. 4 IN PTR eric.intranet.
Ovenstående er reverse zone-filen for zonen 192.168.0.*. Nok en gang - den første linje $TTL - "Time to live" skal med, og der anvendes tabulator til at adskille hvert felt. Bemærk igen, at der er punktum efter hvert maskin-navn.
Her gælder de samme regler som for 127.0.0 zonen. 4 reverse records er defineret fra 1 til 4 svarende til 192.168.0.1-192.168.0.4, dvs. vores fire maskiner. Har du brug for et andet eksempel på opsætning af DNS, så kan du se i http://www.sslug.dk/artikler/dnsbind.shtml.