in het vorige artikel in deze tweedelige serie, Introduction to the DNS (Domain Name System), heb ik beschreven hoe de DNS-database gestructureerd is en hoe nameservices op een client geconfigureerd kunnen worden. Ik heb ook vermeld en beschreven een aantal van de meer voorkomende DNS-records die u waarschijnlijk tegenkomt bij het bouwen van een naamserver of gewoon proberen om de resultaten van een dig-opdracht te interpreteren.
in dit artikel laat ik u zien hoe u uw eigen nameserver kunt bouwen met BIND (Berkeley Internet Name Domain)., Het is niet zo moeilijk als je zou denken, vooral omdat je het in twee fasen kunt doen.
in dit artikel begint u met het leren hoe u een caching name server maakt, daarna gaat u verder en leert u hoe u deze kunt upgraden naar een complete primaire (master) domeinnaam server voor uw netwerk, compleet met forward en reverse zone bestanden.
het opzetten van een DNS-server met BIND
Het opzetten van een nameserver met BIND is vrij eenvoudig, dus Ik zal je laten zien hoe je dit kunt doen op elke computer die beschikbaar is voor experimenten., Dit kleine lab project laat je zien hoe je BIND op je computer installeert en configureert als een caching name server, test het en stel het vervolgens in als een primaire name server met een zone bestand dat je kunt gebruiken als een naam resolver voor je netwerk of gewoon voor het testen.
het opzetten van een nameserver op elke GNU / Linux computer die beschikbaar is, is technisch mogelijk omdat het niet interfereert met andere hosts op het netwerk of hun werking. U moet dit echter waarschijnlijk niet doen op een computer die u niet bezit of het recht heeft om aan te passen, tenzij u hiervoor uitdrukkelijke toestemming hebt.,
mijn instellingen
u hebt slechts één computer nodig om alle taken in dit labproject uit te voeren, op één na. Ik gebruik deze setup op mijn veel krachtiger ThinkPad omdat de nameservers die worden geleverd door DHCP (Dynamic Host Configuration Protocol) wanneer ik verbinding maak met niet-thuisnetwerken met behulp van bekabelde of draadloze verbindingen soms onbetrouwbaar kunnen zijn. Om aan te tonen dat bijna elke host goed kan presteren als een name server, heb ik dit project getest op een oude ASUS EeePC 900 netbook.,
Ik zal het privé-IP-adres van mijn ASUS voor dit project gebruiken, maar u moet het IP-adres van de host gebruiken die u gebruikt.
het hosts bestand
laten we eerst eens kijken naar het /etc/hosts bestand. In zijn standaard staat, zouden er slechts twee regels in het hosts bestand moeten zijn, de eerste twee regels in Lijst 1, hieronder.
Listing 1: U kunt een eenvoudig hosts-bestand onderhouden om de functie van een resolver in kleine netwerken uit te voeren.,
hoewel u hostnamen en hun respectievelijke IP-adressen kunt toevoegen zoals weergegeven in Lijst 1, is dit geen optimale oplossing voor het benoemen van services, vooral tijdens het reizen. Als er andere items in je hosts bestand staan, moet je ze misschien uitschrijven voor de duur van dit project als ze de naamgeving of IP adressen verstoren. De meesten van jullie zullen geen andere items hebben dan de twee standaard regels.,
voorbereiding
een caching name server kan uw gebruik van /etc/hosts om hostnamen op het interne netwerk op te lossen niet vervangen; in vergelijking met het gebruik van een ISP of andere openbare naamserver kan een caching name server de prestaties verbeteren bij het oplossen van veelgebruikte externe namen, zoals www.cnn.com. het beste deel is dat het opzetten van een caching name server is vrij eenvoudig.
voordat u begint, moet u zich voorbereiden door de volgende stappen uit te voeren.
maak eerst reservekopieën van de bestanden /etc / hosts,/etc / named.conf, resolv.conf, en /etc / sysconfig / iptables.,
als ze nog niet geïnstalleerd zijn, gebruik dan de pakketbeheerder van uw distributie om de volgende BIND-RPM ‘ s te installeren: bind, bind-chroot en bind-utils. Om je lab host in staat te stellen de caching name server te gebruiken, moet je een nameserver regel toevoegen om naar je eigen host te wijzen in /etc/resolv.conf. Bijvoorbeeld, als je lab host IP adres 192.168.0.203 is, net als mijn epc, voeg dan de volgende regel toe aan de top van de nameserver lijst in /etc/resolv.conf:
name server 192.168.0.203
gebruik het IP-adres van de host waarop u dit project uitvoert.,
u kunt het IP-adres van uw localhost gebruiken, 127.0.0.1 in plaats van het externe IP-adres. Je moet ook commentaar geven op alle regels die naar andere hosts verwijzen als nameservers. Zorg ervoor dat u de herziene resolv op te slaan.conf file.
deze wijzigingen zullen onmiddellijk van kracht worden en er is geen herstart of herstart van de service vereist. Probeer nu een gemeenschappelijke publieke host te pingen die ICMP (Internet Control Message Protocol) pakketten niet blokkeert; voel je vrij om mijn firewall te gebruiken, dat is een Raspberry Pi.,
ping wally2.both.org
u zou een” unknown host “of” Name or service not known ” fout moeten krijgen omdat u op dit moment geen werkende DNS-service of resolver hebt gedefinieerd in de resolv.conf file. Gebruik nu het dig commando om te zien of name services werkt.
dig wally2.both.com
u zou de fout moeten krijgen, ” time-out van de verbinding; er konden geen servers worden bereikt.”
een caching name server instellen
een caching name server is geen gezaghebbende bron voor enig domein., Het slaat gewoon de resultaten van alle naam resolver verzoeken van het netwerk die het dient om de reacties op toekomstige verzoeken voor dezelfde remote host versnellen.
Opmerking: De named.conf-bestand is zeer specifiek over syntaxis en vooral interpunctie. Puntkomma ‘ s worden gebruikt om het einde van een regel en het einde van een strofe af te bakenen. Zorg ervoor dat u ze correct toevoegt zoals weergegeven in de monsters.
voor de initiële instelling van de caching name server die een paar wijzigingen aanbrengt in de standaard /etc / named.conf bestand is nodig, dus Bewerk dat bestand met behulp van uw favoriete editor., Voeg eerst het IP-adres van uw lokale testhost toe aan de “listen-on poort 53” regel zoals weergegeven in lijst 2 hieronder. Hierdoor kan named luisteren op het externe IP-adres van uw host, zodat andere computers het ook als Nameserver kunnen gebruiken.
BIND verwijst standaard naar de root name servers van het Internet om de gezaghebbende name servers voor een domein te vinden. Het is mogelijk om andere servers te specificeren die “doorstuurservers” worden genoemd waarnaar de lokale instantie van BIND verzoeken zal sturen in plaats van de rootservers. Dit verhoogt de mogelijkheid van DNS-kaping.,
voeg een” doorstuurservers ” regel toe zoals hieronder getoond. Dit vertelt uw caching DNS-server waar IP-adressen te verkrijgen als ze niet al lokaal in de cache zijn. De IP-adressen in de onderstaande lijst zijn voor de Google public DNS-servers die u kunt gebruiken uw lokale ISP of OpenDNS of een andere openbare naamserver als uw doorstuurserver. Het is niet nodig om doorstuurservers te definiëren en in dat geval gebruikt BIND de internet-rootservers zoals gedefinieerd in het bestand /var/named/named.ca om de gezaghebbende naamservers voor domeinen te vinden als er geen doorstuurservers zijn gedefinieerd., Maar voor deze oefening, definieer de forwarders zoals Ik heb in lijst 2.
commentaar geven op de IPV6-regel omdat we IPV6 niet gebruiken in de labomgeving. Merk op dat de “//” twee voorwaartse schuine strepen commentaar geven in de named.conf file.
Listing 2: De/etc / named.conf file biedt de eenvoudige configuratie die nodig is om een caching name server op te zetten. De regels die moeten worden toegevoegd of gewijzigd, worden vetgedrukt gemarkeerd.
voeg het lokale netwerkadres 192.168.0.0 / 24 toe aan de allow-query-regel., Deze regel specificeert het(de) netwerk (en) van waaruit DNS-query ‘ s door deze DNS-server worden geaccepteerd.
Start de name service
start nu de named service en configureer de named service om te starten bij elke boot. Ik gebruik het systemctl commando op mijn Fedora 25 host, maar het commando kan anders zijn op jouw host, afhankelijk van de distributie die je gebruikt. Merk op dat de naam van de BIND resolver-service een naam heeft.,
systemctl enable named
systemctl start named
de eerste test die u kunt uitvoeren om er zeker van te zijn dat uw caching name server werkt, is door dig te gebruiken om de DNS-databasegegevens voor wally2.both.org. om uw caching name server verder te testen, gebruikt u het dig commando om het IP adres(sen) te verkrijgen voor sommige veelgebruikte Internet websites, zoals www.opensource.com CNN, Wired, en alle anderen die je wilt. De resultaten moeten nu uw host tonen als de server die reageert.,
op dit moment zal uw caching name server hosts op het Internet correct omzetten en dat komt omdat die DNS—verzoeken voor publieke hosts worden doorgestuurd naar de publieke nameservers van Google-refereer naar de regel “doorstuurservers” in named.conf. Je bent echter nog steeds afhankelijk van het /etc/hosts bestand voor interne naamservices. Het maken van een primaire naamserver kan dat probleem oplossen.
een primaire naamserver aanmaken
Als u een caching-naamserver aanmaakt, is het niet al te moeilijk om deze om te zetten naar een volwaardige primaire naamserver., Een primaire naamserver is de gezaghebbende bron voor het domein dat het vertegenwoordigt.
u moet de naam wijzigen.conf opnieuw en maak een paar nieuwe bestanden aan. U maakt een domein genaamd Example.com, dat is een domeinnaam gereserveerd voor bijvoorbeeld doeleinden in documenten zoals deze. Het Example.com domein heeft wel een IP-adres op het Internet en een zeer schaarse website, maar u kunt de naam gebruiken in de rest van uw lab project zonder problemen voor iedereen. Je gebruikt de Example.com domein als de interne domeinnaam voor de rest van deze oefening.,
de twee nieuwe bestanden die u zult aanmaken zijn de zonebestanden forward en reverse, die u zult plaatsen in de map/var / named. Deze locatie wordt gespecificeerd door de” directory ” richtlijn in de named.conf configuratiebestand.
Maak het zonebestand doorstuur
het zonebestand doorstuur bevat ” A ” – records die de namen van de hosts in de zone, ook bekend als domein, koppelen aan hun respectieve IP-adressen. Het kan ook CNAME-records bevatten, wat aliassen zijn voor de echte hostnamen in de A-records, en MX-records voor mailservers.
Maak een basis zonebestand voor forward aan, / var / named / example. com.,zone, en voeg de volgende regels toe. Uw zonebestand moet eruit zien als het voorbeeldzonebestand in Lijst 3, hieronder, wanneer u klaar bent.
; 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.
Listing 3: The forward zone file for the Example.com domein bevat de hostnamen en hun IP-adressen voor dit domein.
de eerste non-commentaarregel in Lijst 3 is de time to Live-specifier, die in dit geval één dag is voor alle records die niet anders zijn gespecificeerd. D staat voor dag. De voorschrijvers in de soa (Start Of Authority) lijn zijn net zo duidelijk., Details van de parameters in het SOA-record worden hier in detail beschreven.
de NS record moet de FQDN (Fully Qualified Domain Name) hebben van de host waarop u dit lab project uitvoert. Er moet ook een A-record in het bestand staan met een geldig IP-adres voor de host. In dit geval moet je het localhost IP adres van 127.0.0.1 gebruiken.
de bovenstaande items geven u een paar hostnamen waarmee u kunt experimenteren.
gebruik de datum van vandaag en voeg een teller toe die begint bij 01 voor het serienummer. Het serienummer hierboven is de eerste wijziging van 4 maart 2017., Het serienummer wordt verhoogd wanneer het zonebestand wordt gewijzigd. Als er secundaire nameservers waren die deze voor een primaire server gebruikten, zouden ze niet worden bijgewerkt tenzij het serienummer wordt verhoogd.
voeg de zonebestanden doorsturen toe aan named.conf
voordat uw DNS server zal werken, moet u echter een regel aanmaken in /etc/named.conf die naar uw nieuwe zonebestand wijst. Voeg de volgende regels toe onder de regel voor de top-level hints zone maar voor de “include” regels.
zone "example.com" IN {
type master;
file "example.com.zone";
};
Listing 4: Voeg deze regels toe aan de named.conf bestand om het voorbeeld toe te voegen.,com-zonebestand naar de resolverconfiguratie.
herstart named nu om deze wijzigingen door te voeren. Test je name server met behulp van de dig en nsloookup commando ‘ s om de IP adressen te verkrijgen voor de hosts die je hebt geconfigureerd in het forward zone bestand. Merk op dat de host niet hoeft te bestaan op het netwerk voor de dig en nslookup commando ‘ s om een IP adres terug te geven.
wees ervan bewust dat het gebruik van de FQDN voor deze commando ‘ s nodig is, behalve voor de NSLOOKUP Commando, zolang de domein en zoek items van Example.com worden geleverd in de /etc/resolv.conf file., In dit geval zijn ze dat waarschijnlijk niet, dus gebruik gewoon de FQDNs voor alle testen in dit project.
met behulp van de root name servers
merk op dat de root name servers worden gegeven als de gezaghebbende servers voor de Amazon.com zoek op. Maar vergeet niet dat u de openbare nameservers van Google gebruikt als doorstuurservers. Nu commentaar op de doorstuurservers Lijn in named.conf en herstart named. Voer de bovenstaande commando ‘ s opnieuw uit om de resultaten te vergelijken die worden geretourneerd. De resultaten moeten lijken op die hieronder in lijst 5.
Listing 5: de resultaten van een lookup op www.Amazon.,com hebben een aantal interessante informatie, waaronder tijden om te leven voor de verschillende soorten record.
toen ik dit deed, nam de eerste oproep om het externe adres voor Amazon op te lossen 3857ms terwijl de gegevens werden gelokaliseerd en geretourneerd. Volgende resultaten om dezelfde query uit te voeren was 1ms, wat het voordeel van caching resolver resultaten lokaal toont. Let op de nummers 1800, 300 en 60 in het antwoord sectie regels en 1831 in Autoriteit sectie regels-Dit zijn TTL (Times to Live) in seconden., Als u de lookup meerdere keren uitvoert, zullen deze nummers veranderen, waardoor de tijd wordt weergegeven dat de records nog in de lokale cache moeten leven.
het reverse zone bestand aanmaken
een reverse zone voor uw domein biedt de mogelijkheid om reverse lookups uit te voeren. Veel organisaties doen dit intern niet, maar reverse lookups kunnen nuttig zijn bij het bepalen van problemen. Veel spam fighting configuraties, zoals SpamAssassin, zoeken naar reverse lookups om geldige e-mailservers te verifiëren.
Maak het omgekeerde zonebestand aan, / var / named / example. com. rev en voeg de volgende inhoud toe., Zorg ervoor dat u een passend serienummer gebruikt.
; 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.
Listing 6: Gebruik dit reverse zone-bestand, bijvoorbeeld.com.rev, voor uw name server.
u kunt ook uw reverse zone-bestand /var/named/25.168.192.in-addr.arpa een naam geven, die volgt op oudere conventies. Je kunt het eigenlijk alles noemen wat je wilt, omdat je er expliciet naar wijst in de named.conf bestand, maar het gebruik van een van de twee conventies zal het makkelijker maken voor anderen om uw werk te volgen.
voeg de omgekeerde zone toe aan named.conf:
zone "25.168.192.in-addr.arpa" IN {
type master;
file "example.com.rev";
};
Listing 7: Deze strofe toevoegen aan de named.,conf-bestand schakelt reverse lookups in.
voeg de strofe in Lijst 7 toe aan /etc/named.conf-bestand om naar de nieuwe omgekeerde zone te wijzen. Herlaad nu named en test je reverse zone met behulp van de commando ‘ s in lijst 8. Uw resultaten moeten lijken op die hieronder.
Listing 8: Na het herstarten van named zou u vergelijkbare resultaten moeten zien als u een reverse lookup uitvoert op een IP-adres in de reverse zone.
zorg ervoor dat u een aantal van de andere reverse entries in uw netwerk test en probeer ook de volgende en andere reverse lookups waarmee u wilt experimenteren., De optie-x betekent reverse lookup.
dig -x 192.168.25.23
dig -x 192.168.25.1
merk op dat niet alle hosts die items in de voorwaartse zone hebben, items in de omgekeerde zone moeten hebben, maar het zorgt wel voor meer consistente resultaten als ze dat doen.
op dit moment heeft u een werkende naamserver die BIND gebruikt. Externe hosts kunnen deze Nameserver echter nog niet gebruiken omdat de firewall nog niet geconfigureerd moet zijn om DNS-verzoeken toe te staan.
iptables configureren voor DNS
u kunt deze stap uitvoeren als u wilt dat andere hosts op uw lokale netwerk uw host als hun naamserver gebruiken.,
De firewall op uw testhost blokkeert waarschijnlijk de toegang tot uw host voor naamservices. IPTables moet worden geconfigureerd om UDP (User Datagram Protocol) pakketten binnen te laten komen op uw Nameserver, zodat andere hosts het kunnen gebruiken voor naamomzetting. Gebruik de volgende commando ‘ s om de vereiste items toe te voegen en op te slaan.
voeg een regel toe aan uw iptables of firewalld firewall die inkomende pakketten toestaat op poort 53 (domein) voor UDP en sla de nieuwe regelset op., Zorg ervoor dat u de nieuwe regel invoegt na de-A INPUT-m state –state RELATED,ESTABLISHED-j ACCEPT regel, dus u zult het aantal invoerregels in de filtertabel moeten tellen om dat te doen. Het nummer 7 in het volgende commando betekent dat deze regel wordt ingevoegd in positie nummer 7 in de bestaande invoerregels.
iptables -t filter -I INPUT 7 -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT
u kunt uw nieuwe firewall regels opslaan als u wilt, en dat zou u doen als dit een permanente installatie zou zijn en geen lab project. Test dit dan van een van je andere hosts met het commando in lijst 9 hieronder., Het @ epc argument vertelt het dig commando om de opgegeven naamserver te gebruiken met de hostnaam epc. U moet het IP-adres van de DNS-server die u zojuist hebt gemaakt vervangen, of een oplosbare hostnaam op uw netwerk die naar uw nieuwe Nameserver wijst. Natuurlijk kun je die hostnaam met zijn IP-adres altijd toevoegen aan het /etc/hosts bestand van de host die je gebruikt voor de remote test.
Listing 9: het testen van de naam resolver die u hebt gemaakt van een andere host op hetzelfde netwerk.,
opschonen
voor opschonen dient u de volgende taken uit te voeren met de Hulpmiddelen die geschikt zijn voor uw distributie. Het kan zijn dat u deze name server voor uw netwerk wilt behouden als u er nog geen hebt.
- herstel het oorspronkelijke/etc / hosts-bestand.
- Stop named op de resolver host gebruikt voor dit lab project.
- Schakel de benoemde service uit.
- verwijder de zonebestanden.
- de oorspronkelijke naam herstellen.conf file.
- herstel de oorspronkelijke resolutie.conf file.,
Final thoughts
het functioneren van nameservices leek me erg obscuur totdat ik een nameserver voor mijn netwerk maakte met BIND. Het is vrij eenvoudig en kan DNS lookup prestaties te verbeteren. Het hebben van uw eigen name server kan ook voorkomen dat veel van de relatief kleine maar vervelende Naam service onderbrekingen veroorzaakt door slecht onderhouden ISP name servers.
merk op dat, hoewel mijn kleine EeePC draait met 100% CPU gebruik voor Seti@Home, het zeer snel reageert op resolver Verzoeken., Je zou dit project moeten kunnen uitproberen op elke Linux host die je beschikbaar hebt met een minuscule impact. Ik hoop dat velen van jullie zullen proberen om uw eigen naamserver op te zetten en ermee te experimenteren. De details van je Nameserver installatie hangen af van de details van je host en netwerk.
Geef een reactie