1 Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 7

Download1 Manual
Open PDF In BrowserView 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 2016
EXIF Metadata provided by EXIF.tools

Navigation menu