i den tidigare artikeln i den här tvådelade serien, introduktion till DNS (Domain Name System), beskrev jag hur DNS-databasen är strukturerad och hur man konfigurerar namntjänster på en klient. Jag listade också och beskrev några av de vanligaste DNS-posterna som du sannolikt kommer att stöta på när du bygger en namnserver eller bara försöker tolka resultaten av ett dig-kommando.

i den här artikeln visar jag dig hur du bygger din egen namnserver med BIND (Berkeley Internet Name Domain)., Det är inte så svårt som du kanske tror, särskilt för att du kan göra det i två steg.

i den här artikeln börjar du med att lära dig hur du skapar en cachningsserver, så går du vidare och lär dig hur du uppgraderar den till en komplett primär (Huvud) domännamnsserver för ditt nätverk, komplett med fram-och bakåtzonsfiler.

konfigurera en DNS-server med BIND

det är ganska enkelt att konfigurera en namnserver med BIND, så jag ska visa dig hur du gör det på vilken dator du kanske har tillgänglig för experiment., Det här lilla labbprojektet visar dig hur du installerar och konfigurerar BIND på din dator som en caching namnserver, testa den och ställ in den som en primär namnserver med en zonfil som du kan använda som namnlösare för ditt nätverk eller bara för testning.

det är tekniskt möjligt att konfigurera en namnserver på en GNU / Linux-dator som du har tillgänglig eftersom den inte kommer att störa andra värdar i nätverket eller deras funktion. Du bör dock förmodligen inte göra detta på en dator som du inte äger eller har rätt att ändra om du inte har uttryckligt tillstånd att göra det.,

min inställning

du behöver bara en dator för att utföra alla utom en av uppgifterna i det här labbprojektet. Jag använder den här inställningen på min mycket kraftfullare ThinkPad eftersom namnservrar som tillhandahålls av DHCP (Dynamic Host Configuration Protocol) när jag ansluter till icke-hemnätverk med antingen trådbundna eller trådlösa anslutningar ibland kan vara opålitliga. För att visa att nästan vilken värd som helst kan fungera bra som en namnserver, har jag testat det här projektet på en gammal ASUS EeePC 900 netbook.,

Jag kommer att använda min ASUS privata IP-adress för det här projektet, men du bör använda IP-adressen till den värd du använder.

hosts-filen

låt oss först ta en titt på/etc / hosts-filen. I standardläget bör det bara finnas två rader i hosts-filen, de två första raderna som ses i Lista 1 nedan.

Lista 1: Du kan behålla en enkel hosts-fil för att utföra funktionen för en resolver i små nätverk.,

även om du kan lägga till värdnamn och deras respektive IP-adresser som visas i Lista 1, är detta inte en optimal lösning för namntjänster, särskilt när du reser. Om det finns andra poster i din hosts-fil kan du behöva kommentera dem under hela projektet om de stör namngivning eller IP-adresser. De flesta av er kommer inte att ha några andra poster än de två standardrader.,

förberedelse

en caching namnserver kan inte ersätta din användning av / etc / värdar för att lösa värdnamn i det interna nätverket; men jämfört med att använda en ISP eller annan offentlig namnserver en caching namnserver kan förbättra prestanda när man löser vanliga externa namn, såsom www.cnn.com. det bästa är att ställa in en caching namnserver är ganska lätt.

innan du börjar bör du förbereda dig genom att utföra följande steg.

gör först säkerhetskopior av filerna/etc /hosts,/etc / named.conf, resolv.conf, och /etc/sysconfig/iptables.,

om de inte redan är installerade, Använd din Distributions pakethanterare för att installera följande BIND RPMs: bind, bind-chroot och bind-utils. För att göra det möjligt för din lab-värd att använda cachningsservern måste du lägga till en namnserverrad för att peka på din egen värd i /etc/resolv.conf. Till exempel, om din lab host IP-adress är 192.168.0.203, som är min epc, Lägg till följande rad till toppen av namnserverlistan i / etc / resolv.conf:

name server 192.168.0.203

var noga med att använda IP-adressen för den värd som du gör det här projektet.,

Du kan använda IP-adressen för din localhost, 127.0.0.1 istället för den externa IP-adressen. Du bör också kommentera ut några rader som pekar på andra värdar som namnservrar. Var noga med att spara den reviderade Resolven.conf-filen.

dessa ändringar träder i kraft omedelbart och ingen omstart eller omstart av tjänsten krävs. Försök nu att pinga en gemensam offentlig värd som inte blockerar ICMP (Internet Control Message Protocol) paket; använd gärna min brandvägg, som är en Raspberry Pi.,

ping wally2.both.org

Du bör få ett ”okänt värd” eller ”namn eller tjänst som inte är känd” fel eftersom du för närvarande inte har någon fungerande DNS-tjänst eller resolver definierad i resolv.conf-filen. Använd nu dig-kommandot för att se om namntjänster fungerar.

dig wally2.both.com

Du borde få felet, ”anslutningen tidsinställd; inga servrar kunde nås.”

konfigurera en caching name server

en caching name server är inte en auktoritativ källa för någon domän., Det cachar helt enkelt resultaten av alla namn resolver-förfrågningar från nätverket som det tjänar till att påskynda svaren på framtida förfrågningar om samma fjärrvärd.

Obs: den namngivna.conf-fil är mycket speciell om syntax och särskilt skiljetecken. Semikolon används för att avgränsa slutet av en post och slutet av en strof samt slutet av en linje. Var noga med att lägga till dem korrekt som visas i proverna.

för den första installationen av cachningsservern som gör ett par ändringar av standard /etc/ – namnet.conf-fil är nödvändig, så redigera den filen med din favoritredigerare., Lägg först till IP-adressen för din lokala testvärd till raden ”lyssna på port 53” som visas i Lista 2 nedan. Detta gör det möjligt för named att lyssna på den externa IP-adressen för din värd, så att andra datorer kan använda den som en namnserver också.

som standard hänvisar BIND till Internetens rotnamnsservrar för att hitta de auktoritativa namnservrarna för en domän. Det är möjligt att ange andra servrar som kallas ”skotare” som den lokala instansen av BIND skickar förfrågningar istället för rotservrarna. Detta ökar möjligheten att DNS kapning.,

Lägg till en ”skotare” linje som visas nedan. Detta talar om för din caching DNS-server var att få IP-adresser när de inte redan cachade lokalt. IP-adresserna i listan nedan är för Googles offentliga DNS-servrar Du kan använda din lokala ISP eller OpenDNS eller någon annan offentlig namnserver som din skotare. Det är inte nödvändigt att definiera några speditörer och i så fall skulle BIND använda Internetrotservrarna enligt definitionen i filen /var/named/named.CA för att hitta de auktoritativa namnservrarna för domäner om inga speditörer definieras., Men för denna övning, definiera speditörerna som jag har i Lista 2.

kommentera IPV6-linjen eftersom vi inte använder IPV6 i labbmiljön. Observera att ”/ / ” två framåt snedstreck betecknar kommentarer i namnet.conf-filen.

Lista 2: den/etc / named.conf-fil ger den enkla konfiguration som krävs för att ställa in en caching namnserver. De rader som behöver läggas till eller ändras markeras med fetstil.

Lägg till den lokala nätverksadressen, 192.168.0.0 / 24, till raden Tillåt-fråga., Den här raden anger nätverket(n) från vilket DNS-frågor kommer att accepteras av denna DNS-server.

starta namntjänsten

Starta nu den namngivna tjänsten och konfigurera den namngivna tjänsten för att starta vid varje start. Jag använder kommandot systemctl på min Fedora 25-värd, men kommandot kan vara annorlunda på din värd, beroende på vilken distribution du använder. Observera att namnet på BIND resolver-tjänsten heter.,

systemctl enable named
systemctl start named

det första testet Du kan utföra för att säkerställa att din cachningsnamnsserver fungerar är att använda dig för att hitta DNS-databasinformationen för wally2.both.org. för att ytterligare testa din cachningsnamnsserver, använd dig-kommandot för att få IP-adressen (er) för vissa vanliga internetwebbplatser, till exempel www.opensource.com CNN, Wired, och alla andra du gillar. Resultaten ska nu visa din värd som den svarande servern.,

vid denna tidpunkt kommer din cachningsnamnsserver att lösa värdar korrekt på Internet och det beror på att dessa DNS-förfrågningar om offentliga värdar vidarebefordras till Googles offentliga namnservrar—se ”skotare” – raden i namngiven.conf. Du är dock fortfarande beroende av/etc / hosts-filen för interna namntjänster. Att skapa en primär namnserver kan lösa det problemet.

det är inte alltför svårt att skapa en primär namnserver

När du har skapat en cachningsserver är det inte så svårt att konvertera den till en fullfjädrad primär namnserver., En primär namnserver är den auktoritativa källan för domänen den representerar.

Du måste ändra namnet.conf igen och skapa ett par nya filer. Du skapar en domän som heter Example.com, vilket är ett domännamn reserverat för exempel ändamål i dokument som den här. Den Example.com domänen har en IP-adress på Internet och en mycket glesa webbplats, men du kan använda namnet i resten av ditt labbprojekt utan att orsaka problem för någon. Du kommer att använda Example.com domän som det interna domännamnet för resten av denna övning.,

de två nya filerna du skapar är de framåtgående och omvända zonfilerna, som du placerar i katalogen /var/named. Denna plats anges av” directory ” – direktivet i namnet.conf konfigurationsfil.

skapa filen forward zone

filen forward zone innehåller ”A” – poster som parkopplar värdens namn i zonen, aka-domänen, med sina respektive IP-adresser. Det kan också innehålla CNAME-poster, som är alias för de verkliga värdnamnen i A-posterna och MX-posterna för e-postservrar.

skapa en grundläggande framåtriktad zonfil,/var/named / example.com.,zon, och Lägg till följande rader till den. Din zonfil ska se ut som exempelzonsfilen i Lista 3, nedan, när du är klar.

; 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.

Lista 3: filen framåtriktad zon för Example.com domänen innehåller värdnamnen och deras IP-adresser för den här domänen.

den första icke-kommentarsraden i Lista 3 är tiden att leva specifierare, som i detta fall är en dag för alla poster som inte anges på annat sätt. D står för dag. Specialisterna i SOA (start of Authority) linjen är lika uppenbara., Detaljer om parametrarna i SOA-posten beskrivs i detalj här.

ns-posten måste ha FQDN (fullständigt kvalificerat domännamn) för den värd som du utför detta labbprojekt. Det måste också finnas en a-post i filen med en giltig IP-adress för värden. I det här fallet bör du använda den lokalavärd IP-adress på 127.0.0.1.

posterna som visas ovan ger dig några värdnamn att experimentera med.

var noga med att använda dagens datum och lägga till en räknare som börjar vid 01 för serienumret. Serienumret ovan är den första ändringen av mars 4, 2017., Serienumret ökas när zonfilen ändras. Om det fanns sekundära namnservrar som använde den här för en primär, skulle de inte uppdateras om serienumret ökas.

Lägg till framåtzonsfilerna till namngivna.conf

innan DNS-servern fungerar måste du dock skapa en post i / etc / named.conf som kommer att peka på din nya zon fil. Lägg till följande rader under posten för toppnivå tips zon men innan” inkludera ” linjer.

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

lista 4: Lägg till dessa rader i namnet.conf-fil för att lägga till exemplet.,com zone-filen till resolver-konfigurationen.

Starta nu om namnet för att göra dessa ändringar träder i kraft. Testa din namnserver med hjälp av dig och nsloookup kommandon för att få IP-adresser för värdarna du har konfigurerat i den främre zonen filen. Observera att värden inte behöver finnas i nätverket för kommandona dig och nslookup för att returnera en IP-adress.

tänk på att det är nödvändigt att använda FQDN för dessa kommandon förutom kommandot nslookup så länge domänen och sökposterna för Example.com finns i/etc / resolv.conf-filen., I det här fallet är de förmodligen inte, så använd bara FQDNs för alla tester i det här projektet.

använda rotnamnsservrarna

Observera att rotnamnsservrarna ges som auktoritativa servrar för Amazon.com titta. Men kom ihåg att du använder Googles offentliga namnservrar som skotare. Kommentera nu ut speditörens linje i named.conf och starta namn. Kör ovanstående kommandon igen för att jämföra resultaten som returneras. Resultaten ska se ut som de nedan i Lista 5.

Lista 5: resultaten av en sökning på www.Amazon.,com har lite intressant information, inklusive tider att leva för de olika posttyperna.

När jag gjorde det här tog det första samtalet för att lösa den externa adressen för Amazon 3857ms medan data var lokaliserade och returnerade. Efterföljande resultat för att utföra samma fråga var 1ms, vilket visar fördelen med caching resolver resultat lokalt. Lägg märke till siffrorna 1800, 300 och 60 i svarsavsnittsraderna och 1831 i myndighetsavsnittsraderna—det här är TTL (tider att leva) på några sekunder., Om du utför sökningen flera gånger kommer dessa siffror att ändras, vilket visar hur lång tid posterna har kvar att leva i lokal cache.

skapa filen reverse zone

en Reverse zone för din domän kommer att ge möjlighet att göra reverse lookups. Många organisationer gör inte dessa internt, men omvända sökningar kan vara till hjälp för att göra problembestämning. Många skräppoststridskonfigurationer, som SpamAssassin, letar efter omvända sökningar för att verifiera giltiga e-postservrar.

skapa filen reverse zone,/var/named / example.com.rev och Lägg till följande innehåll., Var noga med att använda ett lämpligt 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.

lista 6: Använd denna omvänd zonfil, exempel.com.rev, för din namnserver.

Du kan också namnge din reverse zone file/var/named / 25.168.192.in-addr.arpa, som följer äldre konventioner. Du kan faktiskt namnge det vad du vill eftersom du kommer att peka på det uttryckligen i namnet.conf fil, men med hjälp av en av de två konventionerna kommer att göra det lättare för andra att följa ditt arbete.

Lägg till omvänd zon till namngiven.conf:

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

lista 7: lägga till denna stanza till namnet.,conf-fil möjliggör omvända uppslagningar.

Lägg till stanza i Lista 7 till/etc / named.conf-fil för att peka på den nya omvänd zonen. Nu ladda namn och testa din omvänd zon med hjälp av kommandon i notering 8. Dina resultat ska se ut som de nedan.

lista 8: När du har startat om namnet bör du se resultat som liknar dem när du gör en omvänd sökning på en IP-adress i omvänd zon.

var noga med att testa några av de andra omvända posterna i nätverket och prova även följande samt andra omvända sökningar som du vill experimentera med., Alternativet-x betyder omvänd sökning.

dig -x 192.168.25.23
dig -x 192.168.25.1

Observera att inte alla värdar som har poster i den främre zonen behöver ha poster i den omvända zonen, men det ger mer konsekventa resultat om de gör det.

vid denna tidpunkt har du en fungerande namnserver med BIND. Externa värdar kan dock inte använda den här namnservern eftersom brandväggen ännu inte ska konfigureras för att tillåta DNS-förfrågningar.

konfigurera IPTables för DNS

Du kan göra det här steget om du vill att andra värdar i ditt lokala nätverk ska använda din värd som namnserver.,

brandväggen på testvärden blockerar förmodligen åtkomst till din värd för namntjänster. IPTables måste konfigureras för att tillåta UDP (User Datagram Protocol) paket inkommande på din namnserver för att andra värdar ska kunna använda den för namnupplösning. Använd följande kommandon för att lägga till önskade poster och spara dem.

Lägg till en regel att din IPTables eller firewalld brandvägg som tillåter inkommande paket på port 53 (domän) för UDP och spara den nya regeluppsättningen., Var noga med att infoga den nya regeln efter-A INPUT-m state –state RELATED,ESTABLISHED-j ACCEPT line, så du måste räkna antalet INMATNINGSLINJER i filtertabellen för att göra det. Numret 7 i följande kommando innebär att denna regel kommer att infogas i position nummer 7 i de befintliga INMATNINGSREGLERNA.

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

Du kan spara dina nya brandväggsregler om du vill, och du skulle om detta skulle vara en permanent installation och inte ett labbprojekt. Testa sedan detta från en av dina andra värdar med kommandot i lista 9, nedan., Argumentet @epc talar om för dig-kommandot att använda den angivna namnservern med värdnamnet epc. Du bör ersätta antingen IP-adressen för DNS-servern du just har skapat, eller ett upplösbart värdnamn i nätverket som pekar på din nya namnserver. Naturligtvis kan du alltid lägga till värdnamnet med sin IP-adress till/etc / hosts-filen för värden du använder för fjärrtestet.

lista 9: testa namnet resolver du har skapat från en annan värd i samma nätverk.,

rensning

för rensning bör du utföra följande uppgifter med hjälp av de verktyg som är lämpliga för din distribution. Du kanske bara vill behålla denna namnserver för ditt nätverk om du inte redan har en.

  1. Återställ den ursprungliga/etc / hosts-filen.
  2. stoppa namnet på resolvervärden som används för detta labbprojekt.
  3. inaktivera den namngivna tjänsten.
  4. ta bort zonfilerna.
  5. återställ det ursprungliga namnet.conf-filen.
  6. Återställ den ursprungliga resolv.conf-filen.,

slutliga tankar

funktionen av namntjänster verkade mycket obskyra för mig tills jag faktiskt skapade en namnserver för mitt nätverk med BIND. Det är ganska enkelt och kan förbättra DNS lookup prestanda. Att ha ditt eget namn server kan också förhindra många av de relativt mindre men irriterande namn service avbrott som orsakas av dåligt underhållna ISP namnservrar.

Observera att även om min lilla EeePC körs med 100% CPU-användning för Seti@Home, svarar den extremt snabbt på resolverförfrågningar., Du borde kunna prova det här projektet på vilken Linux-värd du har tillgänglig med minuscule impact. Jag hoppas att många av er kommer att försöka ställa in ditt eget namn server och experimentera med det. Detaljerna i din namnserverinstallation beror på detaljerna i din värd och nätverk.