I den forrige artikel i dette to-delt serie, Introduktion til DNS (Domain Name System), beskrev jeg, hvordan DNS-databasen er struktureret, og hvordan du konfigurerer navn tjenester på en klient. Jeg listede og beskrev også nogle af de mere almindelige DNS-poster, du sandsynligvis vil støde på, når du bygger en navneserver eller bare prøver at fortolke resultaterne af en dig-kommando.i denne artikel viser jeg dig, hvordan du bygger din egen navneserver ved hjælp af BIND (Berkeley Internet Name Domain)., Det er ikke så svært, som du måske tror, især fordi du kan gøre det i to faser.

i denne artikel starter du med at lære, hvordan du opretter en caching-navneserver, så går du videre og lærer, hvordan du opgraderer det til en komplet primær (master) domænenavnsserver til dit netværk, komplet med filer frem og tilbage zoneone.

opsætning af en DNS-server ved hjælp af BIND

opsætning af en navneserver ved hjælp af BIND er ret ligetil, så jeg viser dig, hvordan du gør det på enhver computer, du måtte have til rådighed til eksperimentering., Dette lille laboratorieprojekt viser dig, hvordan du installerer og konfigurerer BIND på din computer som en caching-navneserver, test den og sæt den derefter op som en primær navneserver med en zoneonefil, som du kan bruge som en navneopløsning til dit netværk eller bare til test.

opsætning af en navneserver på en GNU / Linu. – computer, du har til rådighed, er teknisk muligt, fordi det ikke vil forstyrre andre værter på netværket eller deres drift. Du bør dog sandsynligvis ikke gøre dette på en computer, som du ikke ejer eller har ret til at ændre, medmindre du har eksplicit tilladelse til at gøre det.,

min opsætning

Du behøver kun en computer til at udføre alle undtagen en af opgaverne i dette laboratorieprojekt. Jeg bruger denne opsætning på min meget mere kraftfulde ThinkPad, fordi navneserverne leveret af DHCP (Dynamic Host Configuration Protocol), når jeg opretter forbindelse til ikke-hjemmenetværk ved hjælp af enten kablede eller trådløse forbindelser, kan nogle gange være upålidelige. For at vise, at næsten enhver vært kan fungere godt som en navneserver, har jeg testet dette projekt på en gammel ASUS EeePC 900 netbook.,

Jeg vil bruge min ASUS ‘ private IP-adresse til dette projekt, men du skal bruge IP-adressen til den vært, du bruger.

værtsfilen

lad os først se på filen/etc / hosts. I sin standardtilstand skal der kun være to linjer i værtsfilen, de to første linjer, der ses i listen 1, nedenfor.

liste 1: Du kan opretholde en simpel hosts-fil til at udføre funktionen af en resolver i små netværk.,

selvom du kan tilføje værtsnavne og deres respektive IP-adresser som vist i Liste 1, er dette ikke en optimal løsning til at navngive tjenester, især når du rejser. Hvis der er andre poster i din hosts-fil, skal du muligvis kommentere dem i løbet af dette projekt, hvis de forstyrrer navngivning eller IP-adresser. De fleste af jer vil ikke have andre poster end de to standardlinjer.,

Forberedelse

En caching navneserver kan ikke erstatte din brug af /etc/hosts til at løse værtsnavne på det indre netværk; dog, i forhold til at bruge en INTERNETUDBYDER eller andre offentlige name server en caching navneserver kan forbedre ydeevnen, når du skal løse almindeligt anvendt eksterne navne, såsom www.cnn.com. Den bedste del er, at oprette en caching navneserver er ganske let.

før du starter, skal du forberede dig ved at udføre følgende trin.lav først sikkerhedskopier af filerne /etc/hosts, /etc/named.conf, resolv.conf, og/etc/sysconfig / iptables.,

hvis de ikke allerede er installeret, skal du bruge din distributions pakkehåndtering til at installere følgende bindings-RPM ‘ er: bind, bind-chroot og bind-utils. For at aktivere din labhost til at bruge caching-navneserveren, skal du tilføje en navneserverlinje for at pege på din egen vært i /etc/resolv.conf. For eksempel, hvis din lab host IP-adresse er 192.168.0.203, ligesom min epc, skal du tilføje følgende linje til toppen af navneserverlisten i /etc/resolv.conf:

name server 192.168.0.203

sørg for at bruge IP-adressen til den vært, som du laver dette projekt på.,

Du kan bruge IP-adressen på din localhost, 127.0.0.1 i stedet for den eksterne IP-adresse. Du bør også kommentere linjer, der peger på andre værter som navneservere. Sørg for at gemme den reviderede resolv.conf-filen.

disse ændringer træder i kraft med det samme, og der kræves ingen genstart eller genstart af tjenesten. Nu forsøge at pinge en fælles offentlig-vært, der ikke blokerer for ICMP (Internet Control Message Protocol) pakker; du er velkommen til at bruge min firewall, som er en Raspberry Pi.,

ping wally2.both.org

Du bør få en “ukendt vært” eller “navn eller tjeneste ikke kendt” fejl, fordi du i øjeblikket ikke har nogen fungerende DNS-tjeneste eller resolver defineret i resolv.conf-filen. Brug nu dig-kommandoen til at se, om navnetjenester fungerer.

dig wally2.both.com

Du bør få fejlen, “forbindelsen timeout; ingen servere kunne nås.”

Opsæt en caching-navneserver

en caching-navneserver er ikke en autoritativ kilde til noget domæne., Det cacher simpelthen resultaterne af alle navn resolver anmodninger fra netværket, at det tjener til at fremskynde svar på fremtidige anmodninger om den samme eksterne vært.

Bemærk: den navngivne.conf fil er meget specielt om syntaks og især tegnsætning. Semikoloner bruges til at afgrænse slutningen af en post og slutningen af en strofe samt slutningen af en linje. Sørg for at tilføje dem korrekt som vist i prøverne.

for den indledende opsætning af caching-navneserveren, der foretager et par ændringer til standard/etc / navngivet.conf fil er nødvendig, så redigere filen ved hjælp af din favorit editor., Først, tilføje IP-adressen på din lokale test vært til” Lyt-on port 53 ” linje som vist i Liste 2, nedenfor. Dette gør det muligt for named at lytte på den eksterne IP-adresse på din vært, så andre computere også kan bruge den som en navneserver.BIND henviser som standard til internettets root-navneservere for at finde de autoritative navneservere for et domæne. Det er muligt at angive andre servere, der kaldes “speditører”, som den lokale forekomst af BIND vil sende anmodninger i stedet for root-serverne. Dette øger muligheden for DNS kapring.,

Tilføj en “for .arders” linje som vist nedenfor. Dette fortæller din caching DNS-server, hvor du kan få IP-adresser, når de ikke allerede er cachelagret lokalt. IP-adresserne i nedenstående liste er for Googles offentlige DNS-servere, du kan bruge din lokale internetudbyder eller OpenDNS eller en anden offentlig navneserver som din speditør. Det er ikke nødvendigt at definere nogen speditører, og i så fald ville BIND bruge Internetroot-serverne som defineret i filen /var/named/named.ca til at finde de autoritative navneservere for domæner, hvis der ikke er defineret speditører., Men for denne øvelse skal du definere speditørerne, som jeg har i notering 2.

Kommenter IPV6-linjen, fordi vi ikke bruger IPV6 i laboratoriemiljøet. Bemærk, at de “/ / ” to fremadrettede skråstreger angiver kommentarer i det navngivne.conf-filen.

liste 2: Den/etc / navngivet.conf-fil giver den enkle konfiguration, der kræves for at oprette en caching-navneserver. Linjerne, der skal tilføjes eller ændres, fremhæves med fed skrift.

tilføj den lokale netværksadresse, 192.168.0.0 / 24, til Tillad-forespørgselslinjen., Denne linje angiver det eller de netværk, hvorfra DNS-forespørgsler vil blive accepteret af denne DNS-server.

Start navnetjenesten

start nu den navngivne tjeneste, og konfigurer den navngivne tjeneste til at starte ved hver opstart. Jeg bruger kommandoen systemctl på min Fedora 25 vært, men kommandoen kan være anderledes på din vært, afhængigt af den distribution, du bruger. Bemærk, at navnet på BIND resolver-tjenesten er navngivet.,

systemctl enable named
systemctl start named

Den første test, du kan udføre for at sikre, at din caching navneserver arbejder, er at bruge grave for at finde DNS-databasen oplysninger til wally2.both.org. For yderligere at teste din caching navneserver, skal du bruge grave kommando for at hente IP-Adressen (- erne) for nogle fælles Internet-hjemmesider, såsom www.opensource.com, CNN, Wired, og alle andre, du kan lide. Resultaterne skal nu vise din vært som den svarende server.,

På dette tidspunkt løser din caching—navneserver korrekt værter på internettet, og det skyldes, at disse DNS-anmodninger om offentlige værter videresendes til Googles offentlige navneservere-se linjen “speditører” i navngivet.conf. Du er dog stadig afhængig af/etc / hosts-filen til interne navnetjenester. Oprettelse af en primær navneserver kan løse dette problem.

oprettelse af en primær navneserver

Når du opretter en caching-navneserver, er det ikke for svært at konvertere den til en fuldgyldig primær navneserver., En primær navneserver er den autoritative kilde til det domæne, den repræsenterer.

Du skal ændre navngivet.conf igen og oprette et par nye filer. Du opretter et domæne kaldet Example.com, som er et domænenavn reserveret til eksempel formål i dokumenter som denne. At Example.com domæne har en IP-adresse på internettet og et meget sparsomt websiteebsted, men du kan bruge navnet i resten af dit laboratorieprojekt uden at forårsage problemer for nogen. Du vil bruge Example.com domæne som det interne domænenavn for resten af denne øvelse.,

de to nye filer, du opretter, er filerne frem og tilbage zoneone, som du vil placere i mappen/var / named. Denne placering er angivet af” directory ” – direktivet i det navngivne.conf konfigurationsfil.

Opret filen for .ard ne

filen for .ard containsone indeholder “a” – poster, der parrer navnene på værterne i zoneonen, alias domæne, med deres respektive IP-adresser. Det kan også indeholde CNAME-poster, som er aliaser for de rigtige værtsnavne i A-posterne, og m. – poster for mailservere.

Opret en grundlæggende fremad zoneone fil,/var/named / e .ample.com.,tilføje følgende linjer til det. Din zoneonefil skal se ud som eksempel zoneonefilen i notering 3, nedenfor, når du er færdig.

; Authoritative data for example.com zone
;
$TTL 1D
@ IN SOA epc.example.com root.epc.example.com. (
2017031301 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
$ORIGIN example.com.
example.com. IN NS epc.example.com.
epc IN A 127.0.0.1
server IN A 192.168.25.1
www IN CNAME server
mail IN CNAME server
test1 IN A 192.168.25.21
t1 IN CNAME test1
test2 IN A 192.168.25.22
test3 IN A 192.168.25.23
test4 IN A 192.168.25.24
; Mail server MX record
example.com. IN MX 10 mail.example.com.

notering 3: fremad zoneonefilen for Example.com domæne indeholder værtsnavne og deres IP-adresser for dette domæne.

den første ikke-kommentarlinje i Liste 3 er Time to Live-specifikationen, som i dette tilfælde er en dag for alle poster, der ikke er angivet på anden måde. D står for dag. Beregningerne i SOA (start of Authority) linjen er lige så indlysende., Detaljer om parametrene i SOA-posten er beskrevet i detaljer her.

NS-posten skal have f .dn (fuldt kvalificeret domænenavn) for den vært, som du udfører dette laboratorieprojekt på. Der skal også være en a-post i filen med en gyldig IP-adresse til værten. I dette tilfælde skal du bruge localhost IP-adressen på 127.0.0.1.de poster, der er vist ovenfor, giver dig et par værtsnavne, som du kan eksperimentere med.

sørg for at bruge dagens dato og tilføje en tæller, der starter ved 01 for serienummeret. Serienummeret ovenfor er den første ændring af 4.Marts 2017., Serienummeret øges, når zoneonefilen ændres. Hvis der var sekundære navneservere, der brugte denne til en primær, ville de ikke blive opdateret, medmindre serienummeret øges.

Tilføj filerne for .ard filesone til navngivet.conf

før din DNS-server fungerer, skal du dog oprette en post i/etc / navngivet.conf, der vil pege på din nye fileone fil. Tilføj følgende linjer under posten for hints zoneonen på øverste niveau, men før linjerne” Inkluder”.

zone "example.com" IN {
type master;
file "example.com.zone";
};

notering 4: Tilføj disse linjer til den navngivne.conf-fil for at tilføje eksemplet.,com fileone fil til resolver konfiguration.Genstart nu navngivet for at få disse ændringer til at træde i kraft. Test din navneserver ved hjælp af kommandoerne dig og nsloookup for at få IP-adresserne til de værter, du har konfigureret i filen for .ard fileone. Bemærk, at værten ikke behøver at eksistere på netværket for dig og nslookup kommandoer til at returnere en IP-adresse.vær opmærksom på, at det er nødvendigt at bruge f thesedn til disse kommandoer bortset fra nslookup-kommandoen, så længe domæne-og søgeposterne i Example.com findes i/etc / resolv.conf-filen., I dette tilfælde er de sandsynligvis ikke, så brug bare F .dns til alle test i dette projekt.

brug af root-navneserverne

Bemærk, at root – Navneserverne er angivet som de autoritative servere for Amazon.com opslag. Men husk, at du bruger Googles offentlige navneservere som speditører. Nu kommentere speditører linje i navngivet.conf og genstart navngivet. Kør ovenstående kommandoer igen for at sammenligne de resultater, der returneres. Resultaterne skal ligne dem nedenfor i Liste 5.

notering 5: resultaterne af et opslag på W…Amazon.,com har nogle interessante oplysninger, herunder tidspunkter at leve for de forskellige posttyper.

da jeg gjorde dette, tog det første opkald til at løse den eksterne adresse til Ama .on 3857ms, mens dataene var placeret og returneret. Efterfølgende resultater for at udføre den samme forespørgsel var 1ms, hvilket viser fordelen ved caching resolver resultater lokalt. Bemærk tallene 1800, 300 og 60 i svarsektionslinjerne og 1831 i autoritetssektionslinjer—disse er TTL (tider at leve) i sekunder., Hvis du udfører opslag flere gange, ændres disse tal, hvilket viser den tid, som posterne har tilbage til at leve i lokal cache.

oprettelse af den omvendte fileonefil

en omvendt zoneone for dit domæne giver mulighed for at foretage omvendte opslag. Mange organisationer gør ikke disse internt, men omvendte opslag kan være nyttige til at gøre problembestemmelse. Mange spam-kampkonfigurationer, såsom SpamAssassin, ser efter omvendte opslag for at verificere gyldige e-mail-servere.

Opret den omvendte fileonefil,/var/named / e .ample.com.rev og tilføj følgende indhold., Sørg for at bruge et passende serienummer.

; Authoritative data for example.com reverse zone
;
$TTL 1D
@ IN SOA test1.example.com root.test1.example.com. (
2017031501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS epc.example.com.
example.com. IN NS epc.example.com.
1 IN PTR mail.example.com.
1 IN PTR server.example.com.
21 IN PTR test1.example.com.
22 IN PTR test2.example.com.
23 IN PTR test3.example.com.
24 IN PTR test4.example.com.

liste 6: Brug denne reverse fileone-fil, f.eks.com.rev, til din navneserver.

Du kan også navngive din reverse fileone-fil/var/named / 25.168.192.in-addr.arpa, som følger ældre konventioner. Du kan faktisk navngive det noget, du ønsker, fordi du vil pege på det eksplicit i den navngivne.conf fil, men ved hjælp af en af de to konventioner vil gøre det lettere for andre at følge dit arbejde.

tilføj den omvendte zoneone til navngivet.conf:

zone "25.168.192.in-addr.arpa" IN {
type master;
file "example.com.rev";
};

liste 7: tilføjelse af denne strofe til den navngivne.,conf-fil muliggør omvendte opslag.

Tilføj Stan 7aen i Liste 7 til/etc / navngivet.conf-fil for at pege på den nye omvendte zoneone. Genindlæs nu navngivet og test din omvendte zoneone ved hjælp af kommandoerne i Liste 8. Dine resultater skal ligne dem nedenfor.

liste 8: Efter genstart navngivet bør du se resultater svarende til disse, når du gør en omvendt opslag på en IP-adresse i den omvendte zoneone.

sørg for at teste nogle af de andre omvendte poster i dit netværk, og prøv også følgende såvel som andre omvendte opslag, du vil eksperimentere med., Indstillingen-option betyder omvendt opslag.

dig -x 192.168.25.23
dig -x 192.168.25.1

Bemærk, at ikke alle værter, der har poster i fremad zoneonen, skal have poster i omvendt zoneone, men det giver mere konsistente resultater, hvis de gør det.

på dette tidspunkt har du en fungerende navneserver ved hjælp af BIND. Eksterne værter kan dog endnu ikke bruge denne navneserver, fordi fire .allen endnu ikke skal konfigureres til at tillade DNS-anmodninger.

konfiguration af IPTables til DNS

Du kan gøre dette trin, hvis du vil have andre værter på dit lokale netværk til at bruge din vært som deres navneserver.,

fire .allen på din testhost blokerer sandsynligvis adgang til din vært for navnetjenester. IPTables skal konfigureres til at tillade UDP (User Datagram Protocol) pakker indgående på din navneserver, for at andre værter kan bruge det til navneopløsning. Brug følgende kommandoer til at tilføje de nødvendige poster og gemme dem.

Tilføj en regel til din IPTables-eller firewalld firewall, der tillader indkommende pakker på port 53 (domæne) for UDP og gemme det nye regelsæt., Sørg for at indsætte den nye regel efter linjen-A INPUT-m state — state relateret, etableret-j ACCEPT, så du bliver nødt til at tælle antallet af INPUTLINJER i filtertabellen for at gøre det. Nummer 7 i den følgende kommando betyder, at denne regel indsættes i position nummer 7 i de eksisterende INPUTREGLER.

iptables -t filter -I INPUT 7 -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT

Du kan gemme dine nye fire .allregler, hvis du vil, og det ville du, hvis dette skulle være en permanent installation og ikke et laboratorieprojekt. Test derefter dette fra en af dine andre værter ved hjælp af kommandoen I Liste 9, herunder., @Epc-argumentet fortæller dig-kommandoen at bruge den angivne navneserver med værtsnavnet epc. Du skal erstatte enten IP-adressen på den DNS-server, du lige har oprettet, eller et opløseligt værtsnavn på dit netværk, der peger på din nye navneserver. Selvfølgelig kan du altid tilføje det værtsnavn med sin IP-adresse til /etc/hosts-filen på den vært, du bruger til fjerntesten.

liste 9: Test navnet resolver du har oprettet fra en anden vært på det samme netværk.,

oprydning

for oprydning skal du udføre følgende opgaver ved hjælp af de værktøjer, der passer til din distribution. Du ønsker måske bare at beholde denne navneserver til dit netværk, hvis du ikke allerede har en.

  1. Gendan den originale/etc / hosts-fil.
  2. Stop navngivet på resolver-værten, der bruges til dette laboratorieprojekt.deaktiver den navngivne tjeneste.
  3. Slet zoneonefilerne.
  4. Gendan den oprindelige navngivne.conf-filen.
  5. Gendan den oprindelige resolv.conf-filen.,

Endelige tanker

funktionen af navnetjenester virkede meget uklar for mig, indtil jeg faktisk oprettede en navneserver til mit netværk ved hjælp af BIND. Det er ret ligetil og kan forbedre DNS-opslagsydelsen. At have din egen navneserver kan også forhindre mange af de relativt mindre, men alligevel irriterende navneserviceafbrydelser forårsaget af dårligt vedligeholdte ISP-navneservere.

Bemærk, at selvom min lille EeePC kører med 100% CPU-brug for Seti@Home, reagerer den ekstremt hurtigt på resolver-anmodninger., Du skal være i stand til at prøve dette projekt på enhver Linu. – vært, du har tilgængelig med minuscule impact. Jeg håber, at mange af jer vil forsøge at oprette din egen navneserver og eksperimentere med den. Specifikationerne for din navneserverinstallation afhænger af detaljerne i din vært og netværk.