1 Manual
User Manual:
Open the PDF directly: View PDF .
Page Count: 7
Download | |
Open PDF In Browser | View PDF |
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií ISA – Programovanie sieťovej služby DNS SERVER 20. November Brno, 2016 Michal Ondrejó xondre08 OBSAH 1 ČO JE DNS ............................................................................................................................ 2 1.1 DNS server ................................................................................................................... 2 2 DNS DOTAZ ......................................................................................................................... 2 2.1 Hlavička ........................................................................................................................ 2 2.2 Sekcia Otázky ............................................................................................................... 3 2.3 Zdrojové záznamy ........................................................................................................ 3 3 IMPLEMENTÁCIA .............................................................................................................. 4 3.1 Zdrojové záznamy ........................................................................................................ 4 3.2 Zónové súbory .............................................................................................................. 4 3.3 Rekurzívny server ......................................................................................................... 4 4 POUŽITIE APLIKÁCIE ....................................................................................................... 5 5 LITERATÚRA ...................................................................................................................... 6 1 1 ČO JE DNS Systém doménových mien (DNS) je systém, ktorý ukladá prístup k informáciám o názve stroja a názve domény. Základné využitie je preklad názvu stroja v sieti na IP adresu. Postupom času sa došli k rozšíreniu na ďalšie typy. DNS primárne využíva port 53. 1.1 DNS SERVER Funkcia DNS servera je, že čaká na DNS dotazy a na tie potom odpovedá. DNS server môže hrať voči doméne jednu z dvoch rolí: Autoritatívny server – je ten, na ktorom sú trvale uložené záznamy o danej doméne. Rekurzívny server – je server, na ktoré sa so svojimi dotazmi obracajú klientské zariadenia. Server pre ne získa príslušný záznam pomocou rekurzívnych dotazov od autoritatívnych DNS serverov 2 DNS DOTAZ DNS dotaz sa skladá z hlavičky, sekcie obsahujúcu otázku a zdrojových záznamov. DNS server prijme od klienta správu obsahujúcu iba hlavičku a otázku. DNS server následne odošle správu klientovi do ktorej pridá zdrojové záznamy. Tabuľka 1-Formát DNS dotazu Hlavička Sekcia otázky Zdrojové záznamy 2.1 HLAVIČKA Hlavička obsahuje polia, určujúce ktoré úseky sú prítomné a tiež určuje, či je správa otázka alebo odpoveď. Ďalej obsahuje ďalšie informácie ako či je server autoritatívny, identifikačný kód, alebo kód odpovede, ktorého hodnota hovorí či nenastal nejaký problém, ako chyba v prijatej správe alebo ak požadovaný záznam neexistuje. Tabuľka 2-Formát hlavičky 0 QR 1 2 3 OPCODE 4 5 6 7 8 9 ID AA TC RD RA QDCOUNT ANCOUNT NSCOUNT ARCOUNT 2 10 11 12 13 14 15 Z RCODE 2.2 SEKCIA OTÁZKY Sekcia otázky slúži na prenášanie otázky, to znamená že obsahuje parametre, ktoré de- finujú čo je od DNS servera požadované. Tabuľka 3-Formát sekcie otázky 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QNAME QTYPE QCLASS 2.3 ZDROJOVÉ ZÁZNAMY Zdrojové záznamy (angl. Resource records) sa skladajú z 3 častí a to odpoveďová časť, autoritatívna časť a dodatočné časť. Všetky 3 časti majú rovnaký formát dát. Odpoveďová časť obsahuje zdrojové záznamy ktoré odpovedajú na otázku. Autoritatívna časť obsahuje zdrojové záznamy ktoré odkazujú smerom k autoritatívnemu mennému serveru. Dodatočná časť obsahuje zdrojové záznamy ktoré sa vzťahujú k dotazu, ale nie sú striktne odpovede na otázku. Zdrojový záznam obsahuje informácie o dátach, ako je dĺžka posielaných dát alebo a aj samostatné dáta. Tabuľka 4-Formát zdrojových záznamov 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NAME TYPE CLASS TTL RDLENGTH RDATA DNS podporuje 7 typov záznamov: 1. A – hostiteľská adresa 2. AAAA – hostiteľská adresa IPv6 3. MX – mailový server 4. SOA – označuje začiatok autoritatívnej zóny 5. NS – názov autoritatívneho servera 6. CNAME – kanonický názov pre alias 7. TXT – textové reťazce 3 3 IMPLEMENTÁCIA Tento projekt, som sa rozhodol riešiť v programovacom jazyku C++. Rozhodol som sa spraviť konkurentný server. Keďže server má podporovať iba protokol UDP, tak pri správe, ktorá presahuje veľkosť 512 bajtov, čo je maximálna veľkosť UDP správy, program vypíše chybovú hlášku na chybový výstup a vráti hodnotu -2. 3.1 ZDROJOVÉ ZÁZNAMY Pre každý typ zdrojových záznamov som sa rozhodol urobiť samostatnú triedu. Tieto triedy dedia od abstraktnej triedy RData. To mi umožňuje jednoduchšiu prácu a spracovanie zdrojových záznamov. Ak server prijme správu, v ktorej bude klient požadovať záznam s typom, ktorý server nepodporuje, tak sa pri prijatí správy vypíše na štandardný výstup správa vo formáte: q:: type Unknown (<číslo prijatého typu>), class IN a server odošle klientovi správu s chybovým kódom 4. 3.2 ZÓNOVÉ SÚBORY Ako parser pre zónové súbory som použil DNSPython. Keďže tento parser je v jazyku Python, musel som vytvoriť skript na spracovávanie zónových súborov. Tento skript následne volám z C++ pomocou funkcie popen(). Od zónového súboru je požadované, aby sa na začínal vo formáte: ;doména DNSPython požaduje, aby sa zónový súbor začínal vo formáte: $ORIGIN . Preto je treba ešte pred využitím DNSPython upraviť tvar zónového súboru na požadovaný tvar. 3.3 REKURZÍVNY SERVER Ak sa hľadaný záznam nenájde v zadaných zónových súboroch, tak sa server rekurzívne spýta defaultného DNS servera, pomocou popen() zavolám dig s parametrami(zdroj (1)): 4 +nocmd – skryje úvodnú poznámku vo výstupe identifikujúcu verziu a mož- nosti, ktoré boli použité, +noall – skryje všetky sekcie, +answer – keďže máme +noall parameter, tak musíme znovu zobraziť prijatú odpoveď, +ttlid – zobrazí TTL (time to live) pri výpise správy. To mi umožňuje následné jednoduché spracovanie prijatých dát od defaultného servera. Pri type záznamov TXT využívam parameter +short. Ten mi umožňuje získať celé textové reťazce bez následného zložitého parsovania správy. Jednotlivé reťazce sú rozdelené iba znakom nového riadka ‚\n‘. Ak bude klient požadovať záznam, na ktorý server nedokáže odpovedať ani pomocou rekurzívneho servera, server odošle správu klientovi s chybovým kódom 3. 4 POUŽITIE APLIKÁCIE Aplikácia podporuje nasledovné parametre: -h | --help – vypíše nápovedu k programu -p | --port - port na ktorom bude server počúvať -m | --mitm - každú žiadosť na A a MX resolvuje na zvolenú IP adresu Syntax: ./roughDNS [-m ] [-h] [-p ] [ ] 5 5 LITERATÚRA 1. die.net. dig(1): DNS Lookup utlility - Linux man page. [Online] [Dátum: 20. November 2016.] https://linux.die.net/man/1/dig. 2. Systém názvov domén - Wikipédia. Wikipédia. [Online] 23. Október 2016. [Dátum: 20. November 2016.] https://sk.wikipedia.org/wiki/Syst%C3%A9m_n%C3%A1zvov_dom%C3%A9n. 3. Domain Name System - Wikipedie. Wikipedie. [Online] 4. November 2016. [Dátum: 20. November 2016.] https://cs.wikipedia.org/wiki/Domain_Name_System. 4. Mockapetris, P. RFC 1035 Domain names - implementation and specification. [Online] The Internet Engineering Task Force, November https://www.ietf.org/rfc/rfc1035.txt. 6 1987. [Dátum: 20. November 2016.]
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Count : 7 Language : sk-SK Tagged PDF : Yes Title : 1 Author : Jirka Karabec Creator : Microsoft® Word 2016 Create Date : 2016:11:20 13:38:07+01:00 Modify Date : 2016:11:20 13:38:07+01:00 Producer : Microsoft® Word 2016EXIF Metadata provided by EXIF.tools