Retele de calculatoare - profs.info.uaic.robusaco/teach/courses/net/presentations/net8a.pdf · Dr....
Transcript of Retele de calculatoare - profs.info.uaic.robusaco/teach/courses/net/presentations/net8a.pdf · Dr....
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
Retele de calculatoareSistemul numelor de domenii
SabinCorneliu Buraga
http://www.infoiasi.ro/~busaco
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
“Forgive your enemies,but never forget their names.”
John F. Kennedy
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
Cuprins
• Domain Name System (DNS)– Caracterizare– Organizare– Configurare– Comenzi– Primitive– International Domain Names (IDN)
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS
• Adresele IP sint dificil de memorat si de “ghicit”• Se utilizeaza un sistem al numelor de domeniipentru a translata adresele IP in nume de domenii si invers
• Numele de domenii se organizeaza in ierarhii
• RFC 1034, 1035
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS | Tipuri de domenii• Primare (Top Level Domains – TLD)
– Infrastructura: ARPA (Address and Routing Parameter Area)
– State (ccTLD) – coduri de state: .fr, .jp, .ro, .tv,…– Generice: .biz, .com, .info, .name, .net, .org, .pro– Sponsorizate: .aero, .edu, .gov, .int, .jobs, .mil, .tel– Rezervate: .example, .invalid, .localhost, .test– Pseudo‐domenii: .bitnet, .local, .root, .uucp etc.
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS | Tipuri de domenii
• Subdomenii:Lungimemaxima: 63 de caractere
• Nume de calculatoare (gazde)
Domeniu de nume– Subarbore al arborelui de domenii– Nu trebuie sa respecte topologia retelei fizice
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNSExemplu:
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|organizare
• Initial: /etc/hosts – perechi (nume, IP)• Actual: sistem de baze de date distribuite⇒ ierarhii de domenii
• Probleme: toleranta la defecte, supra‐incarcarea radacinii
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|organizare• Reguli de alocare a numelor de domenii:
– Fiecare domeniu controleazacum sint alocate subdomeniile sale
– Pentru a crea un nou subdomeniu, se cere permi‐siunea domeniului in care va fi inclus (un domeniu de la un anumit nivel va avea o autoritate)
– Atribuirea de nume de domenii respectagranitele organizationale, nu pe cele ale retelelor
– Un anumit nivel din ierarhia de niveluri poate ficontrolat de mai multe servere
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|organizare• Servere de nume (name servers)
– Spatiul de nume DNS se divide in zone ne‐suprapuse– Fiecare zona contine o parte din domenii si numeleserverelor care stocheaza informatiile din acea zona
– Exista un server primar (primary/authoritative name server) care deserveste un anumit domeniu si, eventual, mai multe servere secundare continindbazele de date replicate
– Un server poate fi responsabil al mai multor domenii
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
rpi.eduDNS DBrpi.eduDNS DB
uaic.roDNS DB
Authoritative
uaic.roDNS DB
Replici
Server DNS uaic.ro
DNS|organizare• Client DNS
– Denumit resolver, trimite un pachet UDP serverului DNS care cauta numele sireturneaza adresa IP
resolver
Aplicatie
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|organizare
Implementari ale serverului de nume (exemplificari):BIND (Berkeley Internet Name Domain),MSDNS, Nominum, PowerDNS, MaraDNS
Ca resolver (client) interactiv, se poate folosi una dintre comenzile
nslookup, host sau dig
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|interogari
• Interogari:– Recursiva – daca un server DNS nu cunoaste adresa pentru numele solicitat, atunci va interoga alt server DNS
– Incrementala – daca serverul DNS nu stie saraspunda, returneaza eroare si adresa altuiserver DNS (numit si referral) care ar putea cunoaste raspunsul la interogare
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|interogari• Gasirea unui server DNS pentru a furniza:
– Numele unui domeniu– Adresa IP corespunzatoare unui domeniu simbolic
• Bazele de date DNS – resource record (RR):– Domeniul curent, vers. fisier: SOA (Start Of Authority)– Adresa IP a gazdei: A– Servere de nume: NS (Name Server)– Alias‐uri pentru nume: CNAME (Canonical Name)– Mail exchangers: MX – vezi cursul viitor– Descrierea gazdei (CPU, OS): HINFO – Text neinterpretat (comentarii): TXT
• Interogarile externe (cu alte servere DNS) se stocheaza in memorii cache – DNS caching
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|interogari• Exista un server de nume principal (root) pentru a returna adresele serverelor DNS pentru domeniile primare sau de nivel secund
• Interogarile: nume de domeniu, tip (A, NS, MX,…), clasa (1=IP)
• Raspunsurile: nume de domeniu, tip raspuns, clasa (IP), time to live (in sec.), informatii
• TCP se utilizeaza pentru replicarea DNS• UDP pentru interogari (lookups)
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|interogari• Exemplu – interogare iterativa
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|interogari• Exemplu – interogare recursiva
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|optimizari• Proximitatea spatiala: serverele locale vor fi interogatemai des decit cele la distanta
• Proximitatea temporala: daca un set de domenii sintreferentiate repetat, atunci se apeleaza la caching DNS
• Fiecare intrare DNS va avea stabilita o valoare TTL (time to live)
• Se va utiliza si replicarea (servere multiple, servere rootmultiple) – se va interoga cel mai apropiat(geografic) server
• Cind nu exista un server DNS cunoscut ce poate fiinterogat, se poate recurge la OpenDNS
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|abrevieri• Serverele vor raspunde numai daca primesc nume complete de domenii (e.g., fenrir.info.uaic.ro)
• Utilizatorii pot da doar nume partiale (de exemplu, fenrir)
• Resolver‐ul va putea completa sufixurile (e.g., fenrir ⇒ fenrir.info.uaic.ro)
• Fiecare resolver va avea definita o lista de sufixuri de incercare
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|interogari inverse
• Problema: data o adresa, care va fi numele ei simbolic?
• Raspuns:se va returna o adresa de forma x.x.x.x.in-addr.arpa
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|configurare
• Exemplu de fisier /etc/resolv.conf
search net.infoiasi.ro infoiasi.ro info.uaic.rodomain info.uaic.ronameserver 127.0.0.1nameserver 193.226.23.1nameserver 193.226.30.2
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|configurare• Exemplu de fisier pentru specificarea unei zone DNStgv.com. in soa vaxa.tgv.com. wing.tgv.com. (199501091 ; serial number10800 ; refresh 3 hr3600 ; retry 1 hr604800 ; expire 1 wk86400 ; min. TTL 1 day
)tgv.com. in ns ns1.tgv.com.ns1.tgv.com. in a 161.44.128.70hq.tgv.com. in a 161.44.128.70
in hinfo VAXSTATION-4000-90 VMStgv.com. in mx 10 hq.tgv.com.fang.tgv.com. in a 161.44.128.87
in mx 10 hq.tgv.com.
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|comenzi
• uname• host• nslookup• whois• …
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|nslookup
(infoiasi)$ nslookup www.info.uaic.roServer: 85.122.16.1Address: 85.122.16.1#53
www.info.uaic.ro canonical name = vidar.info.uaic.ro.
Name: vidar.info.uaic.roAddress: 85.122.23.146
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|whois(infoiasi)$ whois dom ibm.com[whois.crsnic.net]
Domain Name: IBM.COMRegistrar: NETWORK SOLUTIONS, INC.Whois Server: whois.networksolutions.comReferral URL: http://www.networksolutions.comName Server: INTERNET-SERVER.ZURICH.IBM.COMName Server: NS.WATSON.IBM.COMName Server: NS.ERS.IBM.COMName Server: NS.ALMADEN.IBM.COMName Server: NS.AUSTIN.IBM.COMStatus: REGISTRAR-LOCKUpdated Date: 07-jan-2003Creation Date: 19-mar-1986
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|dig; <<>> DiG 9.2.3 <<>> www.uaic.ro;; QUESTION SECTION:;www.uaic.ro. IN A
;; ANSWER SECTION:www.uaic.ro. 86400 IN CNAME jad.uaic.ro.jad.uaic.ro. 86400 IN A 85.122.16.7
;; AUTHORITY SECTION:uaic.ro. 86399 IN NS orion.uaic.ro.uaic.ro. 86399 IN NS ns2.roedu.net.uaic.ro. 86399 IN NS ns.iasi.roedu.net.
;; ADDITIONAL SECTION:ns.iasi.roedu.net. 86376 IN A 192.129.4.100ns2.roedu.net. 86376 IN A 192.129.4.10orion.uaic.ro. 86400 IN A 85.122.16.1
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|clienti, rezolveri, servere
Cod aplicatie
Cod rezolver
aplicatie
Fisier de config. resolver
Server DNS local
cerereraspuns
UDP
Alte servere DNS
Ca fisier de configurareal resolver‐ului: /etc/resolv.conf
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|primitive
• Nu trebuie scris un resolver pentru a aflaadresa IP a unei gazde
• Adresele IP returnate sint network byte order• Functii principale:
gethostbyname()gethostbyaddr()
• La unele sisteme de operare (e.g., Solaris) va trebui la compilare sa folosim biblioteca nsl(Name Server Library): gcc … -lnsl
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|primitive• Se foloseste structura hostent:
#include <netdb.h>struct hostent {char *h_name; /* nume oficial */char **h_aliases; /* alias-uri */int h_addrtype; /* AF_INET/AF_INET6 */int h_length; /* lungime: 4 sau 16 */char **h_addr_list; /* pointeri
la adresele IP */};
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|primitiveh_nameh_aliasesh_addrtypeh_lengthh_addr_list
Nume oficial
alias 1
alias 2
null
Adresa IP 1
Adresa IP 2
null
hostent
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|primitivestruct hostent *gethostbyname
( const char *hostname );• Returneaza:
– Succes – adresa structurii hostent create; se foloseste de obicei prima: #define h_addr h_addr_list[0]
– Eroare – constanta NULL, iar variabila h_errno indica eroarea aparuta:
• HOST_NOT_FOUND• TRY_AGAIN• NO_RECOVERY• NO_DATA• NO_ADDRESS
Constante definite in netdb.h
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|exemplu• Completarea structurii sockaddr_inavind in loc de adresa IP un nume simbolic:
struct sockaddr_in server; struct hostent *ip_addr; /* incercam sa gasim adresa IP */ if (!(ip_addr = gethostbyname ("www.w3.org"))) { /* eroare la rezolvarea adresei */ }
server.sin_family = AF_INET; server.sin_port = htons (80); /* adresa IP o luam din structura ip_addr */ memcpy (&server.sin_addr.s_addr, ip_addr->h_addr, sizeof (ip_addr->h_addr));
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|primitive• Se poate utiliza si gethostbyaddr()• Alte functii utile:
– uname()– informatii privind gazda curenta– gethostname()– asemanatoare cu uname()– getservbyname()– ofera portul unui serviciu– getservbyaddr()– ofera numele unui serviciu asociat la un port
– gethostbyname2()– pentru adrese IPv6– getaddrinfo(), getnameinfo()– folosite nu doar pentru TCP/IP, ci pentru orice domeniu de adrese (standard POSIX)
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|IDN
• International Domain Names (IDN)– Extensie care permite folosireacaracterelor Unicode in numele de domenii, nu doar a celor ASCII
– Suport pentru internationalizarea numelorde domenii
– Pot fi exploatate pentru atacuri de tip phishing (vezi unul din cursurile viitoare)
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|administrare
Radacina DNS este oficial administrata de Internet Corporation for Assigned Names
and Numbers (ICANN)
Exista si alte organizatii care oferaradacini alternative (alt DNS roots),precum OpenNIC sau New.Net
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
DNS|administrare
• Rezolvarea adreselor in conditiile in care nu existanici o configuratie implicit stabilita, se poate face via o tehnica numita ZEROCONF:– Adresare (selfassigned addressing): alocare de adrese IP gazdelor
– Numire (naming): asocierea de nume simbolicemDNS –multicast DNS
– Descoperirea de servicii: gasirea de servicii de reteain mod automat – vezi siwww.dnssd.org
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
Rezumat
• Domain Name System (DNS)– Caracterizare– Organizare– Configurare– Comenzi– Primitive– International Domain Names (IDN)
Dr. Sabin-Corneliu Buraga – www.infoiasi.ro/~busaco/
Intrebari?