V předchozím článku v této dvoudílné série, Úvod do služby DNS (Domain Name System), popsal jsem, jak DNS, databáze je strukturována a jak nakonfigurovat název služby na klientovi. Jsem také uvedeny a popsány některé z více společné DNS záznamů, budete pravděpodobně narazí při stavbě název serveru, nebo jen se snaží interpretovat výsledky kopat příkaz.

v tomto článku vám ukážu, jak vytvořit svůj vlastní jmenný server pomocí BIND (Berkeley Internet Name Domain)., Není to tak obtížné, jak si myslíte, zejména proto, že to můžete udělat ve dvou fázích.

V tomto článku, můžete začít tím, učení, jak vytvořit cache name serveru, pak se budete pohybovat dál a zjistěte, jak upgradovat na kompletní primární (master) název domény serveru pro vaši síť, kompletní s vpřed a zóny zpětného soubory.

Nastavení serveru DNS pomocí BIND

Nastavení název serveru pomocí BIND je poměrně jednoduché, takže vám ukážu, jak to udělat na jakémkoliv počítači můžete mít k dispozici pro experimentování., Tento malý laboratorní projekt vám ukáže, jak nainstalovat a nakonfigurovat BIND na vašem počítači jako caching dns server, vyzkoušet si to, pak jej nastavit jako primární jméno serveru s zónou soubor, který můžete použít jako jméno resolver pro vaši síť, nebo jen pro testování.

nastavení jmenného serveru na libovolném počítači GNU / Linux, který máte k dispozici, je technicky možné, protože nebude zasahovat do jiných hostitelů v síti ani do jejich provozu. Pravděpodobně byste to však neměli dělat v počítači, který nevlastníte nebo máte právo změnit, pokud k tomu nemáte výslovné oprávnění.,

My setup

k provádění všech úkolů v tomto laboratorním projektu potřebujete pouze jeden počítač. Já používám tohle nastavení na mnohem silnější ThinkPad, protože název servery poskytované DHCP (Dynamic Host Configuration Protocol), když jsem se připojit na non-domácích sítí buď pomocí kabelové nebo bezdrátové připojení může být někdy nespolehlivé. Chcete-li ukázat, že téměř každý hostitel může fungovat stejně jako jmenný server, Testoval jsem tento Projekt na starém netbooku ASUS EeePC 900.,

pro tento projekt použiji Soukromou IP adresu mého ASUS, ale měli byste použít IP adresu hostitele, který používáte.

soubor hosts

nejprve se podívejme na soubor/etc / hosts. Ve výchozím stavu by měly být v souboru hosts pouze dva řádky, první dva řádky zobrazené v seznamu 1, níže.

Výpis 1: můžete udržovat jednoduchý soubor hosts a provádět funkci resolveru v malých sítích.,

přestože můžete přidat jména hostitelů a jejich příslušné IP adresy, jak je uvedeno v seznamu 1, není to optimální řešení pro pojmenování služeb, zejména při cestování. Pokud jsou ve vašem hosts souboru další položky, možná je budete muset po dobu trvání tohoto projektu komentovat, pokud narušují pojmenování nebo IP adresy. Většina z vás nebude mít žádné jiné položky než dva výchozí řádky.,

Příprava

ukládání do mezipaměti název serveru nemůže nahradit použití /etc/hosts vyřešit názvy hostitelů na vnitřní síti; nicméně, ve srovnání s pomocí POSKYTOVATELE služeb internetu nebo jiné veřejné jméno serveru ukládání do mezipaměti název serveru může zlepšit výkon při řešení běžně používané externí názvy, jako např. www.cnn.com. Nejlepší část je, že nastavení ukládání do mezipaměti název serveru je poměrně snadné.

před zahájením byste se měli připravit provedením následujících kroků.

nejprve vytvořte záložní kopie souborů/etc / hosts, / etc / s názvem.conf, resolv.conf, a / etc / sysconfig / iptables.,

Pokud již nejsou nainstalovány, použijte správce balíčků vaší distribuce k instalaci následujících BIND RPMs: bind, bind-chroot a bind-utils. Chcete-li povolit hostiteli laboratoře používat název serveru pro ukládání do mezipaměti, musíte přidat řádek jmenného serveru a ukázat na svého vlastního hostitele v /etc/resolv.conf. Pokud je například vaše IP adresa hostitele v laboratoři 192.168.0.203, stejně jako moje epc, přidejte následující řádek do horní části seznamu jmenných serverů v /etc/resolv.conf:

name server 192.168.0.203

nezapomeňte použít IP adresu hostitele, na kterém děláte tento projekt.,

místo externí IP adresy můžete použít IP adresu localhost, 127.0.0.1. Měli byste také komentovat všechny řádky směřující k jiným hostitelům jako jmenným serverům. Nezapomeňte uložit revidovaný resolv.konfederace.

tyto změny se projeví okamžitě a není nutný žádný restart nebo restart služby. Nyní pokus o ping společné veřejné hostitele, který nebude blokovat ICMP (Internet Control Message Protocol) pakety; neváhejte použít můj firewall, což je Raspberry Pi.,

ping wally2.both.org

měli byste získat chybu“ Neznámý hostitel „nebo“ jméno nebo služba není známa“, protože v současné době nemáte v resolv definovanou pracovní službu DNS nebo resolver.konfederace. Nyní pomocí příkazu dig zjistěte, zda služby názvů fungují.

dig wally2.both.com

měli byste dostat chybu, “ připojení vypršelo; nebylo možné dosáhnout žádné servery.“

nastavit název serveru pro ukládání do mezipaměti

název serveru pro ukládání do mezipaměti není autoritativním zdrojem pro žádnou doménu., Jednoduše ukládá výsledky všech požadavků na řešení názvů ze sítě, které slouží k urychlení odpovědí na budoucí požadavky na stejného vzdáleného hostitele.

Poznámka: pojmenované.conf soubor je velmi zvláštní o syntaxi a zejména Interpunkce. Středníky se používají k vymezení konce vstupu a konce stanzy, stejně jako konce řádku. Nezapomeňte je přidat správně, jak je znázorněno na vzorcích.

pro počáteční nastavení serveru s názvem mezipaměti, který provede několik úprav výchozího/etc / pojmenovaného.conf soubor je nutné, takže upravit tento soubor pomocí svého oblíbeného editoru., Nejprve přidejte IP adresu místního testovacího hostitele do řádku „listen-on port 53“, jak je uvedeno v seznamu 2, níže. To umožňuje pojmenované poslouchat na externí IP adresu vašeho hostitele, takže ostatní počítače mohou použít jako název serveru, jakož.

ve výchozím nastavení BIND označuje servery kořenového jména internetu a vyhledává autoritativní jmenné servery pro doménu. Je možné zadat další servery, které se nazývají „Forwarders“, na které místní instance BIND pošle požadavky místo kořenových serverů. To zvyšuje možnost únosu DNS.,

přidejte řádek „forwarders“, jak je uvedeno níže. To říká vašemu serveru DNS v mezipaměti, kde získat IP adresy, když již nejsou místně ukládány do mezipaměti. IP adresy v níže uvedeném seznamu jsou pro veřejné servery DNS Google, které můžete použít jako svého zasílatele místní ISP nebo OpenDNS nebo jiný veřejný jmenný server. Není nutné definovat žádné servery pro předávání a v tom případě se VÁŽOU by používat Internet kořenové servery definované v souboru /var/named/named.ca najít autoritativní jmenné servery pro domény, pokud žádné servery pro předávání jsou definovány., Ale pro toto cvičení, definujte zasílatele, jak mám v seznamu 2.

komentujte řádek IPV6, protože nepoužíváme IPV6 v laboratorním prostředí. Všimněte si, že „/ / “ dvě přední lomítka označují komentáře v pojmenované.konfederace.

Výpis 2:/etc / pojmenovaný.conf soubor poskytuje jednoduchou konfiguraci potřebnou k nastavení cache name server. Řádky, které je třeba přidat nebo změnit, jsou zvýrazněny tučně.

přidejte adresu místní sítě, 192.168.0.0/24, do řádku povolit-dotaz., Tento řádek určuje síť (y), ze které budou dotazy DNS přijaty tímto serverem DNS.

spusťte jmennou službu

Nyní spusťte pojmenovanou službu a nakonfigurujte pojmenovanou službu tak, aby začala při každém spuštění. Používám příkaz systemctl na mém hostiteli Fedora 25, ale příkaz se může na vašem hostiteli lišit v závislosti na distribuci, kterou používáte. Všimněte si, že je pojmenován název služby BIND resolver.,

systemctl enable named
systemctl start named

první test můžete provést k zajištění, že vaše caching dns server funguje, je použít dig vyhledejte DNS databáze informací pro wally2.both.org. Dále otestujte si své mezipaměti název serveru, použijte kopat příkaz získat IP Adresu(y) pro nějaké společné Internetové stránky, jako je www.opensource.com, CNN, Wired, a všech ostatních, které se vám líbí. Výsledky by nyní měly zobrazovat hostitele jako reagující server.,

V tomto okamžiku ukládání do mezipaměti název serveru správně vyřešit hostitelů na Internetu a to je proto, že ty DNS dotazy pro veřejné hostitele jsou předávány na Google veřejné dns servery—viz „forwarders“ v souladu s názvem.conf. Jste však stále závislí na souboru /etc/hosts pro interní jmenné služby. Vytvoření primárního jmenného serveru může tento problém vyřešit.

vytvoření serveru primárního jména

jakmile vytvoříte server s názvem mezipaměti, není jeho převedení na plnohodnotný server primárního jména příliš obtížné., Primární jmenný server je autoritativní zdroj pro doménu, kterou představuje.

je třeba změnit pojmenované.conf znovu a vytvořit několik nových souborů. Vytvoříte doménu s názvem Example.com, což je název domény vyhrazený například pro účely v dokumentech, jako je tento. Na Example.com doména má IP adresu na Internetu a velmi řídké webové stránky, ale můžete použít název v klidu své laboratoře projektu, aniž by způsobily problémy pro každého. Budete používat Example.com doména jako interní název domény pro zbytek tohoto cvičení.,

dva nové soubory, které vytvoříte, jsou soubory vpřed a vzad, které umístíte do adresáře/var / named. Toto umístění je specifikováno směrnicí“ adresář “ v pojmenované.konfigurační soubor conf.

Vytvořte soubor forward zone

soubor forward zone obsahuje záznamy „a“, které spárují jména hostitelů v zóně, aka doména, s jejich příslušnými IP adresami. Může také obsahovat záznamy CNAME, což jsou aliasy skutečných hostitelů v záznamech A a záznamy MX pro poštovní servery.

Vytvořte základní soubor forward zone, / var / named / example. com.,zóna a přidejte k ní následující řádky. Váš soubor zóny by měl vypadat jako soubor vzorové zóny v seznamu 3, níže, až budete hotovi.

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

Výpis 3: vpřed souboru zóny pro Example.com doména obsahuje názvy hostitelů a jejich IP adresám pro tuto doménu.

první řádek Bez komentáře v seznamu 3 je čas žít specifikátor, který je v tomto případě jeden den pro všechny záznamy, které nejsou jinak specifikovány. D znamená Den. Specifikátory v řádku SOA (Start of Authority) jsou stejně zřejmé., Podrobnosti o parametrech v záznamu SOA jsou podrobně popsány zde.

záznam NS musí mít FQDN (plně kvalifikovaný název domény) hostitele, na kterém provádíte tento laboratorní projekt. V souboru musí být také záznam s platnou IP adresou pro hostitele. V takovém případě byste měli použít místní IP adresu 127.0.0.1.

výše uvedené položky vám poskytnou několik hostnames, se kterými můžete experimentovat.

nezapomeňte použít dnešní datum a připojit čítač začínající na 01 pro sériové číslo. Výše uvedené sériové číslo je první změnou 4. března 2017., Sériové číslo se zvyšuje, kdykoli se změní soubor zóny. Pokud by existovaly sekundární jmenné servery, které používaly tento server pro primární, nebyly by aktualizovány, pokud by sériové číslo nebylo zvýšeno.

přidejte soubory forward zone do pojmenované.conf

než bude váš server DNS fungovat, musíte však vytvořit záznam v /etc/pojmenovaný.conf, který bude ukazovat na váš nový soubor zóny. Přidejte následující řádky pod položku pro zónu nápovědy nejvyšší úrovně, ale před řádky „zahrnout“.

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

Výpis 4: Přidejte tyto řádky k pojmenovanému.conf Soubor Přidat příklad.,soubor com zone do konfigurace resolveru.

nyní restartujte pojmenovaný, aby se tyto změny projevily. Otestujte si své jméno server pomocí příkazů dig a nsloookup získat IP adresy pro hostitele, které jste nakonfigurovali v souboru forward zone. Všimněte si, že hostitel nemusí v síti existovat pro příkazy dig a nslookup, aby vrátil IP adresu.

uvědomte si, že pomocí FQDN pro tyto příkazy je nutné, s výjimkou příkazu nslookup, jak dlouho domény a vyhledávání položek Example.com jsou uvedeny v /etc/resolv.konfederace., V tomto případě pravděpodobně nejsou, takže stačí použít FQDNs pro všechny testování v tomto projektu.

použití kořenového jména servery

Všimněte si, že kořenový název servery jsou uvedeny jako autoritativní servery pro Amazon.com vyhledávání. Nezapomeňte však, že používáte servery veřejného jména Google jako zasílatele. Nyní komentujte linku speditérů v pojmenované.conf a restart jmenován. Znovu spusťte výše uvedené příkazy a porovnejte vrácené výsledky. Výsledky by měly vypadat podobně jako ty níže v seznamu 5.

Výpis 5: výsledky vyhledávání na www.Amazona.,com mají některé zajímavé informace, včetně časů žít pro různé typy záznamů.

Když jsem to udělal, první volání k vyřešení externí adresy pro Amazon trvalo 3857ms, zatímco data byla umístěna a vrácena. Následné výsledky provést stejný dotaz byl 1ms, což ukazuje výhodu ukládání do mezipaměti resolver výsledky lokálně. Všimněte si čísel 1800, 300 a 60 v řádcích sekce odpověď a 1831 v řádcích sekce autorita-to jsou TTL (Times To Live) během několika sekund., Pokud provedete vyhledávání vícekrát, tato čísla se změní a zobrazí se doba, po kterou záznamy zbývají žít v místní mezipaměti.

vytvoření souboru reverzní zóny

reverzní zóna pro vaši doménu poskytne možnost provádět zpětné vyhledávání. Mnoho organizací to interně nedělá, ale zpětné vyhledávání může být užitečné při určování problémů. Mnoho konfigurací boje proti spamu, jako je SpamAssassin, hledá zpětné vyhledávání pro ověření platných e-mailových serverů.

Vytvořte soubor reverzní zóny, / var / named / example. com. rev a přidejte následující obsah., Nezapomeňte použít příslušné sériové číslo.

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

Výpis 6: Pomocí této zóny zpětného soubor, například.kom.rev, pro své jméno serveru.

můžete také název reverzní zóny souboru /var/named/25.168.192.in-addr.arpa, který následuje starších úmluv. Můžete to skutečně pojmenovat, co chcete, protože na to budete výslovně poukazovat ve jmenovaném.conf soubor, ale pomocí jedné ze dvou konvencí bude snazší pro ostatní sledovat svou práci.

přidejte reverzní zónu do pojmenované.conf:

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

Výpis 7: Přidání této stanzy k pojmenovanému.,conf soubor umožňuje zpětné vyhledávání.

přidejte stanzu v seznamu 7 do/etc / s názvem.conf soubor ukázat na nové reverzní zóny. Nyní znovu načtěte a otestujte svou reverzní zónu pomocí příkazů v seznamu 8. Vaše výsledky by měly vypadat podobně jako níže.

Výpis 8: po restartování pojmenované byste měli vidět výsledky podobné těm, když provedete zpětné vyhledávání na IP adrese v reverzní zóně.

nezapomeňte otestovat některé další zpětné položky ve vaší síti a také vyzkoušet následující a další zpětné vyhledávání, se kterými chcete experimentovat., Volba-x znamená zpětné vyhledávání.

dig -x 192.168.25.23
dig -x 192.168.25.1

Všimněte si, že ne všichni hostitelé, kteří mají záznamy v přední zóně, musí mít záznamy v reverzní zóně, ale pokud ano, vytvoří konzistentnější výsledky.

v tomto okamžiku máte pracovní jmenný server pomocí BIND. Externí hostitelé však tento jmenný server zatím nemohou používat, protože firewall by ještě neměl být nakonfigurován tak, aby umožňoval požadavky DNS.

Konfigurace IPTables pro DNS

můžete Si udělat tento krok, pokud chcete, aby ostatní hostitelé v místní síti používat své hostitele jako své jméno serveru.,

firewall na vašem testovacím hostiteli pravděpodobně blokuje přístup k vašemu hostiteli pro jmenné služby. IPTables musí být nakonfigurován tak, aby UDP (User Datagram Protocol) pakety příchozí na jméno serveru, aby ostatní hostitelé používat pro rozlišení jména. Pomocí následujících příkazů přidejte požadované položky a uložte je.

přidejte do iptables nebo firewallu firewall pravidlo, které umožňuje příchozí pakety na portu 53 (doména) pro UDP a uložte nový soubor pravidel., Ujistěte se, že vložit nové pravidlo po -INPUT-m state –state RELATED,se sídlem -j ACCEPT-line, takže budete muset počítat počet VSTUPNÍCH linek ve filtru tabulky v pořadí. Číslo 7 v následujícím příkazu znamená, že toto pravidlo bude vloženo do pozice číslo 7 do stávajících vstupních pravidel.

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

Pokud chcete, můžete uložit nová pravidla brány firewall a pokud by to měla být trvalá instalace, nikoli laboratorní projekt. Poté to Otestujte od jednoho z vašich dalších hostitelů pomocí příkazu v seznamu 9 níže., Argument @epc říká příkazu dig použít zadaný název serveru s hostname epc. Měli byste nahradit buď IP adresu serveru DNS, který jste právě vytvořili, nebo řešitelný název hostitele ve vaší síti, který ukazuje na váš nový jmenný server. Samozřejmě můžete vždy přidat název hostitele s jeho IP adresou do souboru/etc / hosts hostitele, který používáte pro vzdálený test.

Výpis 9: testování názvu resolver, který jste vytvořili z jiného hostitele ve stejné síti.,

Cleanup

pro vyčištění byste měli provádět následující úkoly pomocí nástrojů vhodných pro vaši distribuci. Možná si budete chtít ponechat tento jmenný server pro vaši síť, pokud jej již nemáte.

  1. obnovte původní soubor/etc / hosts.
  2. Stop pojmenovaný na hostiteli resolveru použitém pro tento laboratorní projekt.
  3. zakázat pojmenovanou službu.
  4. odstraňte soubory zóny.
  5. obnovit původní pojmenovaný.konfederace.
  6. obnovte původní resolv.konfederace.,

závěr

fungování služeb název zdálo, že velmi obskurní pro mě, dokud jsem vlastně vytvořil jméno serveru k síti pomocí BIND. Je to docela jednoduché a může zlepšit výkon vyhledávání DNS. Mít svůj vlastní name server může také zabránit mnoha relativně drobné ale otravné jméno přerušení služby způsobené špatně udržované ISP dns servery.

Všimněte si, že i když můj malý EeePC běží se 100% využitím CPU pro Seti@Home, reaguje velmi rychle na požadavky na řešení., Měli byste být schopni vyzkoušet tento Projekt na jakémkoli Linuxovém hostiteli, který máte k dispozici s nepatrným dopadem. Doufám, že se mnozí z vás pokusí nastavit svůj vlastní jmenný server a experimentovat s ním. Specifika instalace jmenného serveru budou záviset na podrobnostech vašeho hostitele a sítě.