DNS Server Bind9 configureren (Lokale domeinzone maken)

Tegenwoordig is het internet niet meer voor te stellen zonder DNS. Veel beheerders nemen echter niet de tijd om deze service op hun servers te configureren, dus gebruiken ze niet al zijn kracht, zelfs niet een derde.

Dus plannen voor vandaag!

  1. Hoofdzone instellen.
  2. Aansluiting van zones in de slave.
  3. Ieder zijn eigen. We configureren de parameters afhankelijk van het adres van de klant waarvan het verzoek afkomstig is.
  4. We sluiten een extern DNS-filter aan.

Intro

Toen ik een baan kreeg, was het aantal diensten in ons netwerk op de vingers van één hand te tellen. Naarmate de tijd verstreek, groeide het aantal diensten. Er was slechts één dienende DNS-server en fungeerde als de master voor één zone (laten we het xak.ru noemen). Hij stuurde eenvoudig alle andere verzoeken door naar de Google DNS-server (8.8.8.8). En ik vergat bijna toe te voegen: deze server was virtueel. Op een dag crashte de server fysiek. Na de vervanging werd het systeem omhoog gehesen, de virtualisatie erop geschroefd. We hebben er een vers geïnstalleerde Debian op geïnstalleerd en BIND 9. We hebben hetzelfde IP-adres toegewezen als de DNS-server voor de crash. De instellingen zijn hersteld vanaf de back-up. Na succesvolle start begon na te denken over "de bouten aandraaien".

Parallel met dit werk werd hosting geïnstalleerd, die de zone (bijvoorbeeld) xaker.ru bevatte. Natuurlijk moet de centrale DNS hiervan op de hoogte zijn, of beter nog, de slave DNS-server voor deze zone zijn. Verder werd het noodzakelijk om DNS-verzoeken van de centrale server om te leiden naar de redirector, afhankelijk van van welk netwerk het verzoek afkomstig was. Dit is gedaan om externe DNS-filters aan te sluiten, maar niet voor iedereen. Maar alleen voor degenen die het nodig hebben, namelijk educatieve stedelijke netwerken - territoria onderwijsinstellingen! Dit alles zal hieronder worden besproken.

Een beetje theorie

Als je kennis wilt maken met de "nieuwe" BIND, dan raad ik je aan om te lezen. In een notendop: versie 9 was de laatste, sinds versie 10 zijn de rechten overgedragen aan de community, en deze software heet nu Bundy.

Snelle installatie, of weer ongeveer hetzelfde

Dus hoe BIND 9 op Debian / Ubuntu te installeren, er is veel materiaal op internet. Laten we dit punt dus snel doornemen zonder in details te treden. Eerst moet u BIND 9 op uw systeem installeren. Voor MS Windows-gebruikers is er een versie van BIND 9 voor hun platform.

$ sudo apt install bind9

Voor andere distributies zijn er tal van handleidingen over het bouwen van broncodes op internet, snel oppikken, herschrijven in notitieboekjes, totdat de nieuwe "superhandige" wet het hele internet bestrijkt of totdat je wordt uitgescholden omdat je loopt of een bezoek brengt aan een site met verboden literatuur. 😉

Ga na de installatie naar de map / etc / bind9 / en bekijk daar het hoofdconfiguratiebestand genaamd.conf, de rest van de genoemde.conf-bestanden zijn binnenin verbonden. We zullen weglaten hoe de masterzone moet worden ingesteld, omdat de informatie op het web zeer gedetailleerd wordt weergegeven. Voeg de regel toe aan het bestand genaamd.conf

Voeg "/etc/bind/named.conf.acl" toe;

dan zullen we een nieuw bestand opnemen in de configuratie voor subnetregels. Maak vervolgens het bestand /etc/bind/named.conf.acl en voeg de regels toe:

Acl "lan" (192.168.181.0/24;); acl "doen" (10.0.0.0/24; 192.168.253.0/24;); acl "srv" (192.168.254.0/24;); acl "alles" (10.10.0.0/16;); acl "dou" (192.168.201.0/24; 192.168.202.0/24; 192.168.203.0/24; 192.168.204.0/24; 192.168.205.0/24;); acl "school" (172.16.0.0/24;);

Hier hebben we de netwerken onderverdeeld in groepen voor verdere verwerking. Voordat we verder gaan, zal ik één punt verduidelijken. Voor een correcte verwerking van zones is het noodzakelijk om alle zones toe te voegen aan elke regelgroep. U kunt dit in één bestand doen of de zone-instellingen verplaatsen naar apart bestand en dan gewoon op de juiste plaatsen aansluiten. We brengen dus wijzigingen aan in het bestand /etc/bind/named.conf.local:

Bekijk "edu" (match-clients (school;); recursie ja; allow-query (school;); forwarders (77.88.8.7;); zone "xaker.ru" (type master; bestand "/ etc / bind / xaker .ru_loc ";); zone" 254.168.192.in-addr.arpa. "(type master; bestand" /etc/bind/xaker.rev ";); zone" zone2.ru "(type slave; bestand" / etc / bind / db.zone2.ru "; masters (192.168.254.5;);););

Hier duiden we de groep aan waarmee BIND gaat samenwerken. We voegen hier klanten toe vanuit de regels die we hierboven hebben gedefinieerd. We wijzen een upstream-server aan waarnaar verzoeken van netwerken worden doorgestuurd volgens de beschreven regels. Dit is de enige groep schooladressen hier. De Yandex DNS-server, die "slechte" inhoud filtert, werd ingesteld als de superieure DNS. Andere DNS-services zoals SkyDNS kunnen op dezelfde manier worden gebruikt.

Voortzetting is alleen beschikbaar voor abonnees

Optie 1. Abonneer u op "Hacker" om alle materialen op de site te lezen

Met een abonnement kunt u ALLES lezen binnen de opgegeven periode betaalde materialen plaats. Wij accepteren betaling: bankkaarten, elektronisch geld en overschrijvingen van de rekeningen van mobiele operators.

Het bestand /etc/resolv.conf bewerken: de eerste DNS-server is een loopback naar uw lokale DNS-server (127.0.0.1), de tweede is de DNS-server die het dichtst bij u ligt (meestal geleverd door uw ISP), een lijst van de rest DNS naar eigen goeddunken (ze zijn optioneel). Het bestand resolv.conf vertelt ons dat indien niet succesvol DNS-query naar uw server (127.0.0.1), wordt het verzoek automatisch doorgestuurd naar de tweede DNS-server in de lijst, enz.

> ee /etc/resolv.conf domein uw.domen naamserver 127.0.0.1 #DNS uw ISP naamserver x.x.x.x naamserver x.x.x.x

Oplosser is een set routines in de C-bibliotheek die toegang geeft tot het interne Wat is DNS (Domain Name System)? DNS biedt de mogelijkheid om symbolische hostnamen te vertalen in IP-adressen en vice versa in symbolische namen). Configuratiebestand /etc/resolv.conf want de resolver bevat informatie die eerst wordt gelezen door de subroutines van de resolver die door een proces worden aangeroepen. Dit bestand is ontworpen om voor mensen leesbaar te zijn en bevat een lijst met trefwoorden en waarden die verschillende informatie aan de oplosser verstrekken.

In een normaal geconfigureerd systeem dit bestand onnodig: aanvragen worden verwerkt door de server op de lokale host, de domeinnaam wordt bepaald uit de machinenaam en het zoekpad voor de machine in het domein wordt opgebouwd uit de domeinnaam.

Configuratie opties:

Internetnaamserveradres (in xxx.xxx.xxx.xxx-notatie) dat verzoeken van de resolver zal verwerken. Naamservers kunnen zijn maximaal 3(andere worden genegeerd), één op elke regel. Als er meerdere servers zijn opgegeven, peilt de resolverbibliotheek deze in de volgorde waarin ze worden vermeld. Als er geen nameserververmeldingen zijn, is de standaardnaam de naamserver op de lokale computer. (Het gebruikte algoritme probeert verbinding te maken met de nameserver, en als het verzoek na enige tijd niet is verwerkt, wordt geprobeerd verbinding te maken met volgende server namen, enzovoort totdat de hele lijst met servers is verwerkt, herhaal dan de procedure totdat het maximale aantal herhalingen is bereikt).

Lokale domeinnaam. De meeste zoekopdrachten voor machinenamen in dit domein kunnen alleen korte namen gebruiken, zonder een domeinnaam op te geven. Als er geen domeinrecords zijn, wordt het domein bepaald op basis van de naam van de lokale machine, die wordt geretourneerd door de functie gethostname () ; het domeingedeelte van de naam is alles wat volgt op de eerste punt `". Tot slot, als de hostnaam geen domeingedeelte bevat, wordt het rootdomein toegewezen.

Lijst voor het zoeken naar machinenamen. De lijst is meestal afgeleid van de lokale domeinnaam; standaard bevat het alleen de lokale domeinnaam. In de lijst kunnen meerdere domeinen worden opgegeven, die het zoekwoord moeten volgen en van elkaar moeten worden gescheiden door spaties of tabs. In de meeste gevallen, als het verzoek aan de resolver aangeeft: korte naam machine (zonder domeindeel), dan elk domein van gegeven lijst totdat een volledige overeenkomende machinenaam is gevonden. Let erop dat dit proces kan traag zijn en veel netwerkverkeer genereren als de servers die de vermelde domeinen bedienen niet lokaal zijn, en verzoeken zullen een time-outfout retourneren als de server voor een van de domeinen niet beschikbaar is. Lijst in dit moment beperkt tot zes domeinen, met een totale lengte van 256 tekens of minder.

Hiermee kunnen adressen worden gesorteerd die worden geretourneerd door gethostbyname (). De sorteerlijstoptie wordt gespecificeerd met behulp van een IP-adres / netmasker-paar. Netmasker is optioneel, het huidige netmasker wordt standaard gebruikt. Paren van IP-adres en optioneel netmasker worden gescheiden door schuine strepen. Er kunnen maximaal 10 paren worden ingesteld. voorbeeld: sorteerlijst 130.155.160.0/255.255.240.0 130.155.0.0

Met deze optie kunnen bepaalde resolvervariabelen worden gewijzigd. De syntaxis is:

Opties optie ... waarbij optie een van de volgende waarden kan aannemen: debug --- stelt RES_DEBUG in op _res.options. ndots: n --- stelt de drempel in voor het aantal punten dat in de naam moet staan ​​die is opgegeven in res_query (zie oplosser (@ [e-mail beveiligd])) voordat de eerste absolute query wordt gemaakt. Standaard betekent n `` 1 "" dat als er ten minste één punt in de naam staat, het zal proberen deze naam als absoluut te behandelen voordat er items uit de zoeklijst aan worden toegevoegd.

Het domein en de zoekwoorden sluiten elkaar uit. Als deze woorden beide worden gegeven, zal de laatste werken.

Het trefwoord en de waarde moeten op dezelfde regel staan ​​en bovendien moet het trefwoord (bijvoorbeeld nameserver) als eerste op de regel staan. De waarde moet worden gescheiden van trefwoord een ruimte.

Een van de belangrijkste diensten in een dedicated server of VDS is ongetwijfeld de domeinnaamserver. Een van de implementaties van de DNS-server in linux is het bindpakket. ik zal beschrijven makkelijke installatie en het opzetten van het bindpakket op CentOS 4.x linux. Hoewel praktisch ongewijzigd, kan deze configuratie voor alle Linux-distributies worden gebruikt.

Bind installeren op een server is heel eenvoudig. We gaan naar de console en schrijven:

yum install bind-chroot caching-naamserver

Als gevolg hiervan hebben we een DNS-server geïnstalleerd in een chroot-omgeving en is deze klaar om te werken als een caching-server. De server wordt gestart met het commando:

Vraag waarom genoemd wanneer het pakket bind wordt genoemd? Alles is correct. Er is geen fout. U hoeft alleen te onthouden:

  • we installeren een DNS-server;
  • het softwarepakket heet BIND;
  • de service op de server die is geïnstalleerd als gevolg van het installeren van het BIND-pakket wordt genoemd.
  • Vervolgens moeten we ervoor zorgen dat de serverservices onze DNS-server gebruiken. Open hiervoor het bestand /etc/resolv.conf in uw favoriete editor en voeg het volgende toe in de eerste regel: naamserver 127.0.0.1 We bewaren en hebben een werkende caching nameserver, maar vol gaten. om de serverbeveiliging te vergroten, opent u het bestand /etc/named.conf in onze favoriete editor en brengt u wijzigingen aan in de sectie opties:

    opties (map "/ var / benoemde";
    dump-bestand "/var/named/data/cache_dump.db";
    statistiekenbestand "/var/named/data/named_stats.txt";
    versie "geen versie-info";
    toestaan-overdracht (geen;);
    meeluisteren (127.0.0.1; 111.222.333.444;);
    vraag toestaan ​​(localhost; 127.0.0.1/8; 111.222.333.444;);
    recursie toestaan ​​(localhost; 127.0.0.1/8; 111.222.333.444;);
    };

    Nog even over de instellingen:
    versie “geen versie-info”; - geef bij het aanvragen van de serverversie "geen versie-info" op. Hoewel je alles tussen aanhalingstekens kunt schrijven.
    toestaan-overdracht (geen;); - niemand toestemming geven om de zone over te dragen.
    luisterpoort 53 (127.0.0.1; 111.222.333.444;); - accepteer alleen verzoeken van de loopback-interface 127.0.0.1 en van het adres 111.222.333.444 - het ip-adres van onze server.
    recursie toestaan ​​(127.0.0.1; 111.222.333.444;); - recursieve verzoeken van de loopback-interface 127.0.0.1 en het ip-adres van onze server toestaan.
    vraag toestaan ​​(localhost; 127.0.0.1/8; 111.222.333.444;); - verzoeken aan de server vanaf de loopback-interface 127.0.0.1 en het ip-adres van onze server toestaan.

    Bind opslaan en opnieuw starten:

    Na dergelijke instellingen zal de beveiliging van onze server aanzienlijk verbeteren. Ik wil meteen zeggen dat niet alles is beschreven wat kan worden gedaan, bijvoorbeeld totdat de kwestie van de tweede DNS-server wordt aangeroerd, en de overdracht van zones ernaar, het creëren van zones voor domeinen en nog veel meer. De basisinstelling wordt weergegeven.

    Schildwacht

    Een bouwblog helpt je bij de bouw van je huis.

    Goede tijd, lezers. Voortzetting van het theoretische materiaal over, in het huidige artikel dat ik wil overwegen: praktijkvoorbeeld installaties en instellingen verschillend BIND-serverconfiguraties. In het artikel zal ik beschrijven DNS-cache configureren en vol DNS-masterserver... Ik zal de beschrijving beginnen met algemene concepten en noodzakelijke stappen voor het organiseren van eventuele DNS-servers.

    Algemene informatie

    Genaamd is een demon die deel uitmaakt van bind9 pakket en zijn domein naam server. De benoemde daemon kan de functies van alle soorten servers implementeren: meester, slaaf, cache... In het bovenstaande diagram heb ik geprobeerd de belangrijkste weer te geven: Hoe de BIND DNS-server werkt... Het binaire bestand dat het meeste werk doet, bevindt zich in / usr / sbin / genoemd... Het vereist instellingen uit het hoofdconfiguratiebestand genaamd genaamd.conf en bevindt zich in de directory / etc / binden. In de hoofdconfiguratie beschreven aserver werkmap, dit is vaak een directory / var / cache / binden in welke leugen zonebeschrijvingsbestanden en andere servicebestanden. Correspondentie zonenamen en zonebeschrijvingsbestand vraagt zone sectie met parameter het dossier. Zone sectie bepaalt ook het type verantwoordelijkheid deze server per zone (master, slave, enz.), en definieert ook speciale parameters voor de huidige zone (bijvoorbeeld op welke interface verzoeken voor de huidige zone moeten worden verwerkt). In zonebeschrijvingsbestanden bevat zoneparameters en bronrecords (de paden gespecificeerd in deze paragraaf kunnen verschillen, dit hangt af van: Linux-distributie of parameters).

    Dit algemeen schema werk dat ervoor zorgt dat u in de toekomst niet in de war raakt bij het overwegen van specifieke configuraties.

    Het configuratiebestandsformaat voor de 4e versie van het programma verschilt van degene die wordt gebruikt in de achtste en negende versie BINDEN... Aangezien ik ernaar uitkijk om een ​​nieuwe te installeren DNS server, en oude versie Ik zie geen reden om het te plaatsen, daarom zal ik de configuratie van de nieuwe versie overwegen.

    Initiële data

    Voor correct werk DNS is daarvoor nodig. DNS in dit artikel wordt geconfigureerd op de Debian-distributie, de bijzonderheden van andere distributies zullen ook worden vermeld. De stand-netwerkconfiguratie is als volgt:

    Dns: ~ # cat / etc / netwerk / interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet statisch adres 10.0.0.152 netmask 255.255.255.0 gateway 10.0.0.254 auto eth1 iface eth1 inet statisch adres 192.168.1.1 netmask 255.255.255.0

    waar 10.0.0.152/24 - externe interface (subnet toegewezen door de provider), 192.168.1.1/24 - intern (lokaal netwerk). De aangepaste zone krijgt de naam example.com. In het voorbeeld met slavenserver, de secundaire server bevindt zich op IP 10.0.0.191 .

    BIND9 . installeren

    Om de DNS-server te laten werken, heb je nodig: bind9 (in sommige distributies - binden ). Zoals aangegeven in het diagram - door het hoofdconfiguratiebestand BINDEN is het bestand? genaamd.conf(dit bestand kan in de directory worden geplaatst) / enzovoort, soms in / etc / binden).

    Parameters (syntaxis) genaamd.conf

    Named.conf-syntaxis houdt zich aan de volgende regels:

    IP-adressen- IP-lijst moet worden gescheiden door ";" , is het mogelijk om een ​​subnet op te geven in het formaat 192.168.1.1/24 of 192.168.1.1/255.255.255.0, (om IP uit te sluiten, moet u een teken plaatsen!), is het mogelijk om namen op te geven "elke", "geen", "localhost" tussen dubbele aanhalingstekens.

    Opmerkingen (1)- regels die beginnen met #, // en tussen / * en * / worden beschouwd als opmerkingen.

    V zonebeschrijvingsbestanden -symbool @ is een "variabele" die de naam van de zone opslaat die is opgegeven in het configuratiebestand genaamd.conf of in de @-richtlijn $ OORSPRONG de huidige beschrijving van de zone.

    Elk beëindigde string parameters moeten eindigen met een teken; ...

    Acl-sectie

    Acl (toegangscontrolelijst)- hiermee kunt u een benoemde lijst met netwerken instellen. Sectie formaat: acl "netwerknaam" (ip; ip; ip;);

    Opties sectie:

    Opties sectie: vraagt globale parameters configuratiebestand, beheer van alle zones. Dit gedeelte heeft het formaat: opties (clausule_Options_operators);... Opties kunnen worden "genest" in Zone sectie, waarbij het de globale opties overschrijft. Vaak gebruikt optieverklaringen:

    • vraag toestaan ​​( ip_list} - Staat alleen antwoorden op vragen toe van ip_list... Bij afwezigheid reageert de server op alle verzoeken.
    • recursie toestaan ​​( ip_list} - Recursieve zoekopdrachten worden uitgevoerd op verzoeken van ip_list. Voor de rest - iteratief. Als de parameter niet is opgegeven, voert de server recursieve query's uit voor alle netwerken.
    • toestaan-overdracht ( ip_list} - Geeft een lijst aan van servers die de zone van de server mogen overnemen (in principe worden slave-servers hier aangegeven)
    • directory / pad / naar / werk / dir- geeft aan absoluut pad naar de werkmap van de server. Deze operator is alleen geldig in de sectie opties.
    • expediteurs ( ip-poort, ip-poort ...} - geeft de adressen van de hosts aan en, indien nodig, de poorten waar verzoeken naartoe moeten worden omgeleid (meestal worden hier de DNS-providers van de ISP aangegeven).
    • naar voren ENKEL EN ALLEEN of naar voren EERST - parameter eerst geeft aan dat de DNS-server zal proberen namen op te lossen met behulp van de DNS-servers die zijn opgegeven in de parameter forwarders, en alleen als de naamomzetting met behulp van deze servers mislukt, zal het proberen de naam zelf op te lossen.
    • op de hoogte stellen JA | NEE - JA- de slave-server op de hoogte stellen van wijzigingen in de zone, NEE- niet melden.
    • herhaling JA | NEE - JA- recursieve queries uitvoeren op verzoek van de klant, NEE- niet uitvoeren (alleen iteratieve queries). Als het antwoord in de cache wordt gevonden, wordt het uit de cache geretourneerd. (kan alleen worden gebruikt in de sectie Opties)

    Zone sectie

    Definieert de omschrijving van de zone(s). Sectie formaat: zone ( zone_key_operators}; Operators welke het meest worden gebruikt:

    • toestaan-update ( ip_list} - geeft systemen aan die deze zone dynamisch mogen updaten.
    • het dossier "Bestandsnaam "- specificeert het pad van het zone-optiesbestand (moet zich in de map bevinden die is opgegeven in de optiessectie door de directory-instructie)
    • meesters ( ip_list} -geeft een lijst met masterservers aan. (alleen geldig in ondergeschikte zones)
    • typ " zone_type "- geeft het type zone aan dat wordt beschreven in de huidige sectie, zone_type kan de volgende waarden aannemen:
      • naar voren- geeft een omleidingszone aan die verzoeken omleidt die naar deze zone komen.
      • hint- geeft een hulpzone aan (dit type bevat informatie over de rootservers waarmee de server contact zal opnemen als hij het antwoord niet in de cache kan vinden)
      • meester- geeft aan te werken als een masterserver voor de huidige zone.
      • slaaf- geeft aan te werken als een slave-server voor de huidige zone.

    Extra configuratie-opties

    Tijdwaarden in zonebestanden standaard wordt dit gespecificeerd in seconden, als ze niet worden gevolgd door een van de volgende letters: S - seconden, M - minuten, H - uren, D - dagen, W - weken. Dienovereenkomstig is de invoer 2u20m5s heeft een waarde van 2 uur 20 minuten 5 seconden en komt overeen met 8405 seconden.

    Elke hostnaam / invoer die niet eindigt met punt telt niet FQDN naam en wordt aangevuld met de naam van de huidige zone. De koepelinvoer in het zonebestand examle.com wordt bijvoorbeeld uitgebreid naar de FQDN-naam domen.examle.com. ...

    V BIND-configuratiebestanden het volgende kan van toepassing zijn: richtlijnen:

    • $ TTL- definieert standaard TTL voor alle records in de huidige zone.
    • $ OORSPRONG- verandert de naam van de zone van degene die is opgegeven in het bestand genaamd.conf. Tegelijkertijd strekt de reikwijdte van deze richtlijn zich niet uit tot "boven" (dat wil zeggen, als het bestand is opgenomen in de $ INCLUDE-richtlijn, dan is de reikwijdte van $ ORIGN niet van toepassing op de ouder)
    • $ INCLUSIEF- inclusief gespecificeerd bestand als onderdeel van het zonebestand.

    Ik zou het apart willen beschrijven parameter toestaan-overdracht (10.0.0.191;);. Deze parameter beschrijft de servers die een kopie van de zone mogen downloaden - zogenaamd slavenserver... In het volgende voorbeeld zullen we de instelling opsplitsen: slaaf DNS.

    Om de logboekregistratie correct te laten werken, moet u een geschikte map maken en de nodige rechten toewijzen:

    Dns: ~ # mkdir / var / log / bind / dns: ~ # chmod 744 / var / log / bind / dns: ~ # ps aux | grep genaamd bind 4298 0,0 3,4 46792 13272? Ssl Jul05 0:00 / usr / sbin / genaamd -u bind root 4815 0.0 0.1 3304 772 pts / 4 S + 18:19 0:00 grep genaamd dns: ~ # chown bind / var / log / bind / dns: ~ # ls -ld / var / log / bind / drwxr - r-- 2 bind root 4096 6 juli 18:18 / var / log / bind /

    Dns: ~ # cat /var/cache/bind/example.com $ TTL 3D @ IN SOA ns.example.com. root.voorbeeld.com. (2011070601; serieel 8H; ververs 2H; probeer 2W opnieuw; vervallen 1D); minimaal @ IN NS ns.voorbeeld.com. @ IN NS ns2.voorbeeld.com. @ IN A 10.0.0.152 @ IN MX 5 mx.voorbeeld.com. ns IN A 10.0.0.152 ns2 IN A 10.0.0.191 mx IN A 10.0.0.152 www IN CNAME @

    evenals in het domein in-addr.arpa.

    Dns: ~ # cat /var/cache/bind/0.0.10.in-addr.arpa $ TTL 3600 @ IN SOA ns.examle.com. root.voorbeeld.com. (2007042001; Serienummer 3600; 900 vernieuwen; 3600000 opnieuw proberen; 3600 verlopen); Minimum IN NS ns.examle.com. IN NS ns2.voorbeeld.com. 152 IN PTR examle.com. 191 IN PTR ns.voorbeeld.com. * IN PTR examle.com. dns: ~ # cat /var/cache/bind/1.168.192.in-addr.arpa $ TTL 3600 @ IN SOA ns.examle.com. root.voorbeeld.com. (2007042001; Serienummer 3600; 900 vernieuwen; 3600000 opnieuw proberen; 3600 verlopen); Minimum IN NS ns.examle.com. IN NS ns2.voorbeeld.com. * IN PTR examle.com.

    Ons netwerk is klein, er wordt aangenomen dat er maar heel weinig machines op het netwerk zijn. Alle netwerkdiensten worden gehost op dezelfde host example.com., dus zowel master DNS (ns.example.com.) als mail server(mx.example.com.) verwijst naar één machine (10.0.0.152).

    Secundaire (slave) gezaghebbende server voor de zone

    Hoofdfunctie slavenserver - automatische synchronisatie beschrijvingen van de zone met de masterserver. Deze taak gereguleerd door document RFC 1034 In hoofdstuk 4.3.5. Volgens dit document het wordt aanbevolen om gegevens tussen servers uit te wisselen door middel van een AXFR-verzoek. Voor deze aanvraag moet de hele zone in één TCP-verbinding (RFC 1035) worden verzonden.

    Zelfde manier, slave DNS-server deelt de belasting met de masterserver of neemt de volledige belasting over bij een storing op de eerste server.

    Alvorens verder te gaan met: een slave DNS-server instellen, moet u controleren of u de zone handmatig kunt ophalen van de secundaire server met behulp van de volgende opdracht:

    [e-mail beveiligd]: ~ # dig @ 10.0.0.152 voorbeeld.com. axfr;<<>> DiG 9.7.3<<>> @ 10.0.0.152 voorbeeld.com. axfr; (1 server gevonden);; globale opties: + cmd example.com. 259200 IN SOA ns.voorbeeld.com. root.voorbeeld.com. 2011070801 28800 7200 1209600 86400 voorbeeld.com. 259200 IN NS ns.voorbeeld.com. voorbeeld.com. 259200 IN NS ns2.voorbeeld.com. voorbeeld.com. 259200 IN A 10.0.0.152 voorbeeld.com. 259200 IN MX 5 mx.voorbeeld.com. mx.voorbeeld.com. 259200 IN A 10.0.0.152 ns.voorbeeld.com. 259200 IN A 10.0.0.152 ns2.voorbeeld.com. 259200 IN A 10.0.0.191 www.voorbeeld.com. 259200 IN CNAME voorbeeld.com. voorbeeld.com. 259200 IN SOA ns.voorbeeld.com. root.voorbeeld.com. 2011070801 28800 7200 1209600 86400 ;; Opvraagtijd: 14 msec ;; SERVER: 10.0.0.152 # 53 (10.0.0.152) ;; WANNEER: vr 8 juli 15:33:54 2011 ;; XFR-grootte: 11 records (berichten 1, bytes 258)

    1. Kopiëren het configuratiebestand met de naam.conf van de hoofdserver;
    2. Vervangen type parameter meester Aan type slaaf
    3. Overdrachtparameter toestaan ​​(10.0.0.191;); vervangen Aan meesters (10.0.0.152;); in die gebieden waarvoor het secundair zal zijn;
    4. Zones verwijderen, die de huidige server niet zal dienen, inclusief de root, als de slave niet reageert op recursieve verzoeken;
    5. Mappen maken voor logboeken, zoals in het vorige voorbeeld.

    Dus we krijgen de slave-serverconfiguratie:

    [e-mail beveiligd]: ~ # cat /etc/bind/named.conf options (directory "/ var / cache / bind"; allow-query (any;); // reageren op queries van alle interfaces recursie nr; // recursieve queries auth- nxdomain no; // voor RFC1035-compatibiliteit listen-on-v6 (geen;); // IPv6 hebben we versie "onbekend" niet nodig; // geef de DNS-serverversie niet weer in reacties); // de hieronder beschreven zones definiëren de server als gezaghebbend voor loopback //-interfaces, evenals voor uitzendzones (volgens RFC 1912) zone "localhost" (type master; bestand "localhost";); zone "127.in-addr.arpa" (type master; bestand "127.in-addr.arpa";); zone "0.in-addr.arpa" (type master; bestand "0.in-addr.arpa";); zone "255.in-addr.arpa" (type master; bestand "255.in-addr.arpa";); // beschrijving van de hoofdzone "example.com" (type slave; bestand "example.com"; masters (10.0.0.152;);); // beschrijving van de zone met omgekeerde zone "0.0.10.in-addr.arpa" (type slave; bestand "0.0.10.in-addr.arpa"; masters (10.0.0.152;);); // loggen instellingen loggen (kanaal "misc" (bestand "/var/log/bind/misc.log" versies 4 grootte 4m; afdruktijd JA; afdruk-ernst JA; afdrukcategorie JA;); kanaal "query" (bestand "/var/log/bind/query.log" versies 4 grootte 4m; afdruktijd JA; afdrukernst NEE; afdrukcategorie NEE;); categoriestandaard ("misc";); categoriequery's ("query ";););

    na het herstarten van onze slavenserver zal de benodigde informatie veilig van de hoofdserver kopiëren, wat wordt aangegeven door de aanwezigheid van bestanden in de map:

    [e-mail beveiligd]: ~ # ls -la / var / cache / bind / totaal 28 drwxrwxr-x 2 root bind 4096 8 juli 18:47. drwxr-xr-x 10 root root 4096 8 juli 15:17 .. -rw-r - r-- 1 bind bind 416 8 juli 18:32 0.0.10.in-addr.arpa ...... - rw -r - r-- 1 bind bind 455 8 juli 18:32 voorbeeld.com ........

    Kortom, / stroallow-transfer (pngp slavenserver mag zelf geen kopie van de zone opslaan bestandssysteem... Deze kopie is alleen nodig bij de start van DNS. Als u een kopie van de zone in het bestandssysteem heeft, kunt u ervoor zorgen dat u niet crasht als de masterserver niet beschikbaar is tijdens het opstarten van de slave-DNS. Als u de bestandsoptie niet opgeeft in de zonesectie, wordt er geen kopie gemaakt.

    Netfilter () configureren voor DNS BIND

    Door de server in te stellen, zou het leuk zijn om deze te beschermen. We weten dat de server op poort 53 / udp draait. Nadat je het artikel daarover hebt gelezen en je er vertrouwd mee bent, kun je regels maken voor het filteren van netwerkverkeer:

    DNS ~ # iptables-save # modelregels iptables voor DNS * filter: INPUT DROP: FORWARD DROP: OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate GERELATEERD, VASTGESTELD -j ACCEPT -A INPUT -m conntrack --ctstate ONGELDIG -j DROP # sta LAN-toegang toe tot DNS-server: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 53 -m conntrack --ctstate NIEUW -j ACCEPT -A OUTPUT - o lo -j ACCEPTEREN -A UITVOER -p icmp -j ACCEPTEREN -A UITVOER -p udp -m udp --sport 32768: 61000 -j ACCEPTEREN -A UITVOER -p tcp -m tcp --sport 32768: 61000 -j ACCEPTEREN -A OUTPUT -m conntrack --ctstate GERELATEERD, VASTGESTELD -j ACCEPT # sta DNS-servertoegang toe om uitgaande verzoeken te doen -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NIEUW -j ACCEPT COMMIT

    Dit is een typisch voorbeeld! Om iptables-regels voor uw taken en netwerkconfiguratie in te stellen, moet u begrijpen hoe netfilter in Linux werkt door de bovenstaande artikelen te lezen.

    Probleemoplossen

    De belangrijkste bron voor het identificeren van DNS-problemen is. Hier is een voorbeeld van opstartfouten waarbij ik fout zat met het pad naar root server zone bestand:

    5 juli 18:12:43 dns-server genaamd: starten BIND 9.7.3 -u bind 5 juli 18:12:43 dns-server genaamd: gebouwd met "--prefix = / usr" "--mandir = / usr / share / man "" --infodir = / usr / share / info "" --sysconfdir = / etc / bind "" --localstatedir = / var "" --enable-threads "" --enable-largefile "" - -with-libtool "" --enable-shared "" --enable-static "" --with-openssl = / usr "" --with-gssapi = / usr "" --with-gnu-ld "" - -with-dlz-postgres = no "" --with-dlz-mysql = no "" --with-dlz-bdb = yes "" --with-dlz-bestandssysteem = ja "" --with-dlz-ldap = yes "" --with-dlz-stub = yes "" --with-geoip = / usr "" --enable-ipv6 "" CFLAGS = -fno-strict-aliasing -DDIG_SIGCHASE -O2 "" LDFLAGS = "" CPPFLAGS = "5 juli 18:12:43 dns-server genaamd: limiet voor open bestanden aangepast van 1024 naar 1048576 5 juli 18:12:43 dns-server genaamd: 1 CPU gevonden, 1 werkthread gebruikt 5 juli 18:12: 43 dns-server met de naam: tot 4096 sockets gebruikend 5 juli 18:12:43 dns-server met de naam: laadconfiguratie van "/etc/bind/named.conf" 5 juli 18:12:43 dns-server met de naam: lezen ingebouwd -in vertrouwde sleutels uit bestand "/ etc / bind / b ind.keys "5 juli 18:12:43 dns-server met de naam: met standaard UDP / IPv4-poortbereik: 5 juli 18:12:43 dns-server met de naam: met standaard UDP / IPv6-poortbereik: 5 juli 18:12: 43 dns-server met de naam: luisteren op IPv4-interface eth1, 192.168.1.1 # 53 5 juli 18:12:43 dns-server met de naam: sessiesleutel genereren voor dynamische DNS 5 juli 18:12:43 dns-server met de naam: kon niet configureer root-hints van "/etc/bind/db.root": bestand niet gevonden 5 juli 18:12:43 dns-server genaamd: laadconfiguratie: bestand niet gevonden # bestand niet gevonden 5 juli 18:12:43 dns-server genaamd: exiting (vanwege een fatale fout) 5 juli 18:15:05 dns-server genaamd: starten BIND 9.7.3 -u bind 5 juli 18:15:05 dns-server genaamd: gebouwd met "--prefix = / usr "" --mandir = / usr / share / man "" --infodir = / usr / share / info "" --sysconfdir = / etc / bind "" --localstatedir = / var "" --enable-threads " "--enable-largefile" "--with-libtool" "--enable-shared" "--enable-static" "--with-openssl = / usr" "--with-gssapi = / usr" "- -with-gnu-ld "" --with-dlz-postgres = no "" --with-dlz-mysql = no "" --with-dlz-bdb = ja "" --with-dlz-bestandssysteem = ja "" --with-dlz-ldap = yes "" --with-dlz-stub = yes "" --with-geoip = / usr "" --enable-ipv6 "" CFLAGS = -fno-strict-aliasing - DDIG_SIGCHASE -O2 "" LDFLAGS = "" CPPFLAGS = "5 juli 18:15:05 dns-server genaamd: aangepaste limiet voor open bestanden van 1024 tot 1048576 5 juli 18:15:05 dns-server genaamd: 1 CPU gevonden, met 1 werkthread 5 juli 18:15:05 dns-server met de naam: tot 4096 sockets gebruikend 5 juli 18:15:05 dns-server met de naam: configuratie laden van "/etc/bind/named.conf" 5 juli 18:15:05 dns-server met de naam: met standaard UDP / IPv4-poortbereik: 5 juli 18:15:05 dns-server met de naam: met standaard UDP / IPv6-poortbereik: 5 juli 18:15:05 dns-server met de naam: luisteren op IPv4-interface lo, 127.0.0.1 # 53 5 juli 18:15:05 dns-server met de naam: luisteren op IPv4-interface eth1, 192.168.1.1 # 53 5 juli 18:15:05 dns-server met de naam: automatisch lege zone: 254.169.IN-ADDR.ARPA 5 juli 18:15: 05 dns-server met de naam: automatisch lege zone: 2.0.192.IN-ADDR.ARPA 5 juli 18:15:05 dns-server met de naam: automatisch lege zone: 100.51.198.IN-ADDR.ARPA 5 juli 18:15: 05 dns-server met de naam: automatisch lege zone: 113.0.203.IN-ADDR.ARPA 5 juli 18:15:05 dns-server met de naam: automatisch lege zone: 255.255.255.255.IN-ADDR.ARPA 5 juli 18:15: 05 dns-server genaamd: automatische lege zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA 5 jul 18 :15 : 05 dns-server genaamd: automatische lege zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA 5 juli 18:15:05 dns-server genoemd : automatische lege zone : DFIP6.ARPA 5 juli 18:15:05 dns-server genaamd: automatische lege zone: 8.EFIP6.ARPA 5 juli 18:15:05 dns-server genaamd: automatische lege zone: 9.EFIP6.ARPA 5 juli 18:15:05 dns-server met de naam: automatisch lege zone: AEFIP6.ARPA 5 juli 18:15:05 dns-server met de naam: automatisch lege zone: BEFIP6.ARPA 5 juli 18:15:05 dns-server met de naam: automatische lege zone: 8. BD0.1.0.0.2.IP6.ARPA 5 juli 18:15:05 dns-server genaamd: zone 0.in-addr.arpa/IN: geladen serieel 1 5 juli 18:15:05 dns-server genaamd: zone 127 . in-addr.arpa / IN: serieel geladen 1 juli 5 18:15:05 dns-server genaamd: zone 255.in-addr.arpa/IN: geladen serieel 1 5 juli 18:15:05 dns-server genaamd: zone localhost / IN: geladen serieel 2 juli 5 18:15:05 dns-server met de naam: actief # opstarten was succesvol

    Een uitstekend diagnostisch hulpmiddel is.

    Samenvatting

    In dit artikel heb ik beschreven hoe u standaard BIND DNS-serverconfiguraties instelt. Het doel van dit artikel was om een ​​idee te geven van hoe de BIND-server werkt op UNIX. Ik heb praktisch niet gesproken over de beveiligingsproblemen van de DNS en heb het niet gehad over specifieke instellingen als de werking van de server in de edge-modus, wanneer in verschillende netwerken weg gegeven Overige informatie over de zone(s). Voor een beter begrip zal ik een lijst geven aanvullende bronnen, waarin, naar ik hoop, het mogelijk zal zijn om de nodige informatie te verkrijgen. Hier heb ik een einde aan gemaakt. Tot de volgende keer.

    domeinnaam systeem: http://citforum.ru/internet/dns/khramtsov/
    RFC 1034- Domeinnamen - Concepten en voorzieningen: http://tools.ietf.org/html/rfc1034
    RFC 1035- Domeinnamen - Implementatie en specificatie: http://tools.ietf.org/html/rfc1035
    RFC 1537- Veelvoorkomende configuratiefouten met DNS-gegevensbestanden: http://tools.ietf.org/html/rfc1537
    RFC 1591- Structuur en delegatie van domeinnaamsysteem: http://tools.ietf.org/html/rfc1591
    RFC 1713- Tools voor DNS-foutopsporing: http://tools.ietf.org/html/rfc1713
    RFC 2606- Gereserveerde DNS-namen op het hoogste niveau: http://tools.ietf.org/html/rfc2606
    DNS-beveiliging (DNSSEC): http://book.itep.ru/4/4/dnssec.htm
    BIND 9 Naslaggids voor beheerders: http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.html
    Beveiligde BIND-sjabloon: http://www.cymru.com/Documents/secure-bind-template.html
    Configuratieparameters zijn goed beschreven voor:Russisch: http://www.bog.pp.ru/work/bind.html
    Automatisch aanmaken van een zonebestand: http://www.zonefile.org/?lang=en#zonefile

    Vandaag gaan we het hebben over het creëren van een lokale domeinzone binnen een lokaal netwerk. Waar dienen een lokale domeinzone en DNS-server voor? Om uw lokale sites te delen (beschikbaar te stellen) voor alle netwerkgebruikers.

    Ik zal een netwerk maken waar alle apparaten op mijn lokale netwerk bronnen in het site.lan-formaat kunnen gebruiken. In mijn geval maken lokale netwerkapparaten via een router verbinding met internet. Servermachine - op Linux Mint (desktop), clients: pc onder Windows-besturing, Linux, TV met Smart TV, maar ook smartphones en tablets. Zorg er eerst voor dat een statisch intern IP-adres is gereserveerd voor de server (de machine waarop de DNS-server wordt geïnstalleerd) in de router. Het is erg belangrijk om iedereen er later op te wijzen netwerk apparaten waar onze DNS-server precies staat.

    DNS-naamserver instellen:

    Eerst moet je het Bind-pakket installeren:

    Sudo apt-get install bind

    Om de websites goed te laten werken, hebben we bovendien LAMP (Linux Apache MySQL PHP). Lees meer over het installeren van LAMP in Ubuntu in mijn artikel. U kunt ook een lokale site opzetten via de link onderaan het artikel. Het enige is dat u het siteadres niet in / etc / hosts schrijft. deze problemen worden door de nameserver afgehandeld. In dit stadium is de voorbereiding voorbij.

    Binden instellen

    Ga naar de Bind-directory en doe back-ups configureerbare bestanden:

    Cd / etc / bind / cp named.conf.local named.conf.local.back cp named.conf.options genaamd.conf.options.back

    We creëren een lokaal domein zone.lan:

    Nano genaamd.conf.local

    En voeg de volgende regels toe aan het einde van het bestand:

    Zone "lan" (type master; bestand "/etc/bind/db.lan";);

    Maak nu het bijbehorende bestand voor de .lan-domeinzone en open het om te bewerken:

    Tik op db.lan nano db.lan

    We vullen het met inhoud:

    @ IN SOA-lan. root.lan. (201605019; Serieel 4h 1h 1w 1d @ IN NS ns1.lan. @ IN A 192.168.0.100 ns1 IN A 192.168.0.100 slicks IN A 192.168.0.100 site IN A 192.168.0.100 * IN CNAME @

    Let op Serial 201605019. Deze waarde moet elke keer dat u het domeinzonebestand bewerkt, worden verhoogd. Ik schrijf JJ-MM-DD + opbouw serienummer op 1. 192.168.0.100 - IP-adres van de server. Een "slicks IN A"-notatie betekent dat er een Domeinnaam slicks en dat deze site zich bevindt op IP-adres 192.168.0.100. In apache2 is een website gemaakt met Servernaam slicks.lan... Als de site zich op een ander IP-adres dan de DNS-server bevond, zou het record eruitzien als slicks IN EEN _IP-PC-met-site_ Bewerken benoemde.conf.opties:

    Nano genaamd.conf.opties

    U moet de geselecteerde regels eraan toevoegen:

    Acl "thuis" (192.168.0.0/24; 127.0.0.1;); opties (directory "/ var / cache / bind"; dnssec-validatie auto; allow-recursion (127.0.0.1/32; 192.168.0.0/24; 192.168.1.0/24;); allow-transfer (none;); auth -nxdomain no; # conform RFC1035 listen-on-v6 (geen;); allow-query ("home";););

    De eerste regel creëert een lokale DNS-groepshome, met een IP-adresbereik van 192.168.0.0 tot 192.168.0.255 en 127.0.0.1. De tweede regel die we toevoegen bevat de parameter allow-query en we geven aan dat we verzoeken van de thuisgroep willen toestaan. We zijn klaar met de configuratie, we kunnen de server opnieuw opstarten

    Sudo /etc/init.d/bind9 herstart

    De lokale DNS in de router specificeren

    Zodat het niet nodig is om de netwerkverbinding op elke client te bewerken en de DNS-server handmatig te registreren, kunnen we het lokale DNS-IP specificeren in de routerinstellingen. En alle verzoeken van netwerkgebruikers worden door laatstgenoemde eerst naar de lokale DNS gestuurd en vervolgens naar internet. Ik heb:

    Om de lokale DNS-server in mijn geval te specificeren, voer ik Instellingen -> Netwerkinstellingen -> Handmatige internetverbinding instellen en in het veld Primair in DNS-adres Ik registreer het IP-adres van de lokale domeinzoneserver 192.168.0.100, die nu zal fungeren als de belangrijkste DNS-server in het lokale netwerk. En als secundair DNS-adressen we schrijven 8.8.8.8. Dit zijn de DNS-adressen van Google. Op de schermafbeelding heb ik primaire en secundaire DNS-adressen die naar mijn server leiden. Om de een of andere reden leek het er eerst op dat de router de verzoeken niet naar mijn DNS omleidde en het zo registreerde. Tweede DNS is beter specificeer de Google-server zodat als de lokale server 192.168.0.100 is uitgeschakeld, het internet niet verdwijnt voor alle andere apparaten!

    Functionele controle

    Ik start een Windows XP-client-pc en test de verbinding. De eerste stap is het wissen van de DNS-cache. We gaan naar de opdracht Windows-tekenreeks en schrijf:

    Ipconfig / flushdns

    1. Nu controleer ik de zichtbaarheid op het netwerk DNS server, 192.168.0.100 pingen:

    C: \\ Documenten en instellingen \\ www> ping 192.168.0.100 Pakketuitwisseling van 192.168.0.100 naar 32 bytes: Antwoord van 192.168.0.100: aantal bytes = 32 keer<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Статистика Ping для 192.168.0.100: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь), Приблизительное время приема-передачи в мс: Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

    De lokale site controleren: nslookup slicks.lan:

    C: \\ Documents and Settings \\ www> nslookup slicks.lan *** Kan servernaam niet vinden voor adres 192.168.0.1: Niet-bestaand domein *** Standaardservers zijn niet beschikbaar Server: Onbekend adres: 192.168.0.1 Naam: slicks.lan Adres: 192.168.0.100

    ping slicks.lan:

    C: \\ Documents and Settings \\ www> ping slicks.lan Uitwisseling van pakketten met slicks.lan van 32 bytes: Antwoord van 192.168.0.100: aantal bytes = 32 keer<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64 Статистика Ping для 192.168.0.100: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь), Приблизительное время приема-передачи в мс: Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

    Wij genieten van het resultaat!