Proiectarea, Implementarea Si Securizarea Unei Retele Eterogene Distribuite

Introducere

In ultimele decenii, caracterizate printr-o explozie informationala fara precedent in istoria omenirii, o importanta deosebita au dobandit-o capacitatea si resursele de comunicatie de care dispun proiectantii si utilizatorii sistemelor informatice, in cadrul carora un loc important il ocupa calculatorul electronic.

Calculatoarele sunt utilizate din ce in ce mai mult in cele mai diverse domenii ale activitatii umane. In ziua de astazi nu se poate vorbi despre un domeniu de activitate in care sa nu existe si un calculator. Aceasta deoarece culegerea si prelucrarea informatiilor existente, nu s-ar putea executa corect si in timp optim pentru sistemul caruia i se adreseaza, fara ajutorul calculatorului. In cele mai multe cazuri mai multe calculatoarele functioneaza impreuna pentru a asigura informatiile necesare unui anumit sistem, acestea fiind amplasate in diverse locuri de unde se preiau datele supuse prelucrarii. Numarul calculatoarelor conectate direct la retele de comunicatii in scopul deservirii unor beneficiari aflati la distanta este in continua crestere. Se spune ca aceste calculatoare sunt instalate, sau lucreaza, in medii de teleprelucrare.

Teleprelucrarea datelor este un procedeu de prelucrare automata a informatiei a carui caracteristica principala este utilizarea unui calculator cu performante ridicate, denumit calculator principal, sau server, de catre mai multi utilizatori, situati in locuri diferite si la distanta fata de calculatorul principal, transmisia informatiei facandu-se prin sisteme de telecomunicatie.

Mai putem spune ca prin mediu de teleprelucrare se intelege ansamblul de mijloace hardware si software care permite prelucrarea la distanta a informatiei. Practic orice sistem care comunica cu altele prin cel putin o linie de comunicatie reprezinta un mediu de teleprelucrare.

Principalele faze ale teleprelucrarii sunt:

colectarea si pregatirea (prelucrarea) datelor la utilizatori, deci in locurile unde sunt generate;

introducerea / extragerea informatiei in / din sistemul de transmisie a datelor;

transmisia informatiei printr-o retea de telecomunicatie;

controlul informatiilor transmise / receptionate;

detectarea erorilor, care s-ar putea sa apara in procesul de transmisie, si corectarea acestora.

Pentru efectuarea acestor faze sunt utilizate tehnici si metode diferite, caracteristice fiecarei faze. Teleprelucrarea datelor necesita echipamente specializate de intrare / iesire adaptate la liniile de comunicatii, precum si metode specifice de transmisie a informatiei numerice.

Analizand cele spuse mai sus putem spune ca teleprelucrarea prezinta doua functii distincte:

prelucrarea informatiilor;

transmisia informatiilor la distanta.

Mediile de teleprelucrare sunt formate dintr-un calculator principal, diverse sisteme de calcul (calculatoare) amplasate la utilizatori si echipamentele de adaptare si control necesare pentru asigurarea emiterii / receptiei si transmisiunii informatiilor, aceasta din urma realizandu-se prin diferite linii de telecomunicatie la care sunt conectate sistemele.

In zilele noastre vechiul model al unui singur calculator (mainframe) care serveste problemele de calcul ale unui sistem a fost inlocuit cu un model in care munca este facuta de un numar mare de calculatoare, care sunt utilizate separat, dar interconectate. Prin cooperarea intre calculatoare se pot realiza o multitudine de activitati:

transferul unui fisier de la un calculator la altul;

se poate accesa o baza de date existenta pe un alt calculator;

se pot transmite mesaje;

se pot utiliza resursele hardware (imprimante, scannere, plottere, etc.) si software ale unui alt calculator.

Toate aceste calculatoare legate intre ele alcatuiesc o retea.

Reteaua de calculatoare reprezinta un ansamblu de calculatoare interconectate prin intermediul unor medii de comunicatie, asigurandu-se in acest fel utilizarea in comun de catre un numar mare de utilizatori a tuturor resurselor fizice (hardware), logice (software si aplicatii de baza) si informationale (baze de date) de care dispune ansamblul de calculatoare conectate.

O alta definitie: prin retea de calculatoare intelegem o colectie de calculatoare autonome interconectate intre ele. Se spune despre doua calculatoare ca sunt interconectate daca sunt capabile sa schimbe informatii intre ele.

O alta notiune utilizata este lucrul in retea care reprezinta conceptul de conectare a unor calculatoare care partajeaza resurse. Resursele pot fi:

date (baze de date);

aplicatii (orice program: Word, un program de gestiune a stocurilor, etc.);

periferice (imprimante, scannere, etc.).

In urmatoarele capitole vom incerca sa explicam notiunile fundamentale care stau la baza transferului si prelucrarii la distanta a informatiei.

Tipuri de retele. In functie de criteriul de clasificare care se are in vedere exista mai multe tipuri de retele de calculatoare. Criteriile cele mai des utilizate in clasificarea retelelor sunt:

Dupa tehnologia de transmisie:

retele cu difuzare (broadcast);

retele punct – la – punct.

Dupa scara la care opereaza reteaua (distanta):

retele locale LAN;

retele metropolitane MAN;

retele de arie intinsa WAN;

Internet-ul.

Dupa topologie:

retele tip magistrala (bus);

retele tip stea (star);

retele tip inel (ring);

retele combinate.

Dupa tipul sistemului de operare utilizat:

retele peer-to-peer;

retele bazate pe server.

In continuare vor fi enumerate principalele caracteristici ale fiecarui tip de retea.

Retele cu difuzare (broadcast) sunt acele retele care au un singur canal de comunicatie care este partajat (este accesibil) de toate calculatoarele din retea. Mesajul (numit pachet) poate fi adresat unui singur calculator, tuturor calculatoarelor din retea (acest mod de operare se numeste difuzare) sau la un subset de calculatoare (acest mod de operare se numeste trimitere multipla). Acest mod transmitere este caracteristic retelelor LAN.

Retele punct la punct sunt acele retele care dispun de numeroase conexiuni intre perechi de calculatoare individuale. Pentru a ajunge de la calculatorul sursa la calculatorul destinatie, un pachet s-ar putea sa fie nevoit sa treaca prin unul sau mai multe calculatoare intermediare. Deseori sunt posibile trasee multiple, de diferite lungimi, etc.

In general retelele mai mici (locale) tind sa utilizeze difuzarea, in timp ce retelele mai mari sunt de obicei punct – la – punct.

Retele LAN – Local Area Network – sunt in general retele private localizate intr-o singura camera, cladire sau intr-un campus de cel mult cativa kilometri. Aceste retele sunt caracterizate prin:

marime: LAN – urile au in general dimensiuni mici iar timpul de transmisie este limitat si cunoscut dinainte;

tehnologia de transmisie consta dintr-un singur cablu la care sunt conectate toate calculatoarele (de aici vine numele de difuzare).

Aceste retele functioneaza la viteze cuprinse intre 10 si 100 Mb/s. LAN – urile mai pot functiona si la viteze mai mari, de pana la sute de Mb/s. In general aceste viteze de transmisie se masoara in megabiti / secunda Mb/s si nu in megabytes / secunda (MB/s);

topologie: LAN – urile pot utiliza diferite topologii: magistrala, inel, etc. In figura 1.1 sunt reprezentate doua astfel de retele: cu topologie magistrala si inel.

Figura 1.1 – Doua retele LAN: magistrala si inel.

Retele MAN – Metropolitan Area Network – reprezinta o extensie a retelelor LAN si utilizeaza in mod normal tehnologii similare cu acestea. Aceste retele pot fi atat private cat si publice. O retea MAN contine numai un cablu sau doua, fara sa contina elemente de comutare care dirijeaza pachetele pe una dintre cele cateva posibile linii de iesire. Un aspect important al acestui tip de retea este prezenta unui mediu de difuzare la care sunt atasate toate calculatoarele. Aceste retele functioneaza, in general, la nivel de oras.

Retele WAN – Wide Area Network – sunt acele retele care acopera o arie geografica intinsa – deseori o tara sau un continent intreg. In aceasta retea calculatoarele se numesc gazde (in literatura de specialitate se mai utilizeaza si urmatorii termeni: host si sistem final). Gazdele sunt conectate intre ele printr-o subretea de comunicatie, numita pe scurt subretea. Sarcina subretelei este sa transmita mesajele de la gazda la gazda.

Subreteaua este formata din:

linii de transmisie, numite circuite, canale sau trunchiuri, care are rolul de a transporta bitii intre calculatoare;

elemente de comutare, calculatoare sau echipamente specializate, folosite pentru a conecta doua sau mai multe linii de transmisie. Nu exista o terminologie standard pentru denumirea acestor elemente de comutare; astfel putem intalni diferiti termeni pentru desemnarea acestora ca : noduri de comutare a pachetelor, sisteme intermediare, comutatoare de date. Termenul generic pentru aceste calculatoare de comutare este ruter. Fiecare calculator este in general conectat (face parte) la un LAN in care exista un ruter, prin intermediul caruia se face legatura intre doua retele diferite.

Reteaua contine numeroase cabluri sau linii telefonice, fiecare din ele legand doua rutere. Daca doua rutere, care nu sunt legate intre ele, doresc sa comunice, atunci ele trebuie sa apeleze la un ruter intermediar.

Subreteaua este de tip punct-la-punct (se mai utilizeaza si urmatorii termeni: subretea memoreaza – si – retransmite sau subretea cu comutare de pachete), deoarece principul de functionare este urmatorul: cand un pachet este transmis de la un ruter la altul prin intermediul unui alt ruter (ruter intermediar), acesta este retinut acolo pana cand linia ceruta devine disponibila si apoi este transmis.

Figura 2.1 – Alcatuirea unei subretele

Analizand figura de mai sus putem spune ca subretea, se refera la colectia de rutere si linii de comunicatie aflate in proprietatea operatorului de retea. De exemplu, sistemul telefonic consta din centrale telefonice de comutare, care sunt conectate intre ele prin linii de mare viteza si sunt legate la domicilii si birouri prin linii de viteza scazuta. Aceste linii si echipamente, detinute si intretinute de catre compania telefonica, formeaza subreteaua sistemului telefonic. Telefoanele propriu-zise (in retea gazde, sau sisteme) nu sunt o parte a subretelei.

Combinatia dintre o subretea si gazdele sale formeaza o retea. In cazul unui LAN, reteaua este formata din cablu si gazde; aici nu exista cu adevarat o subretea.

2 Modele de retea

Am vazut ca o retea de calculatoare este alcatuita dintr-un ansamblu de mijloace de transmisie si de sisteme de calcul, pentru a realiza atat functii de transport a informatiei cat si functii de prelucrare a acesteia. Dar fiecare sistem de calcul prezinta un mod specific de stocare a informatiei si de interfatare cu exteriorul. Astfel, o retea de calculatoare care interconecteaza diferite sisteme de calcul poate functiona in bune conditii numai daca exista o conventie care stabileste modul in care se transmite si se interpreteaza informatia. Aceasta conventie poarta numele de protocol.

Pentru a intelege mai bine, vom prezenta in continuare celebrul exemplu al lui Andrew Tanenbaum de comunicare intre doi filozofi.

Figura 1.2 – Un mod de comunicare intre doi filozofi.

Doi filozofi, unul din India si altul din Anglia, doresc sa faca schimb de idei. Din pacate, sunt departe unul de celalalt si nici nu au o limba comuna prin care sa comunice, primul vorbind limba urdu iar al doilea engleza. Deoarece sunt departe unul de altul, ei trebuie sa comunice folosind un suport de comunicatie.
Pentru a se intelege intre ei, fiecare filozof angajeaza cate un translator (traducator) care sa cunoasca ambele limbi, iar ei la randul lor angajeaza cate o secretara care se va ocupa cu transmiterea efectiva a mesajului.

Dupa cum se vede filozoful 1 trimite translatorului sau mesajul pe care doreste sa-l primeasca filozoful 2. Acesta il traduce si il inmaneaza secretarei care il transmite mai departe prin fax, posta eleceva posibile linii de iesire. Un aspect important al acestui tip de retea este prezenta unui mediu de difuzare la care sunt atasate toate calculatoarele. Aceste retele functioneaza, in general, la nivel de oras.

Retele WAN – Wide Area Network – sunt acele retele care acopera o arie geografica intinsa – deseori o tara sau un continent intreg. In aceasta retea calculatoarele se numesc gazde (in literatura de specialitate se mai utilizeaza si urmatorii termeni: host si sistem final). Gazdele sunt conectate intre ele printr-o subretea de comunicatie, numita pe scurt subretea. Sarcina subretelei este sa transmita mesajele de la gazda la gazda.

Subreteaua este formata din:

linii de transmisie, numite circuite, canale sau trunchiuri, care are rolul de a transporta bitii intre calculatoare;

elemente de comutare, calculatoare sau echipamente specializate, folosite pentru a conecta doua sau mai multe linii de transmisie. Nu exista o terminologie standard pentru denumirea acestor elemente de comutare; astfel putem intalni diferiti termeni pentru desemnarea acestora ca : noduri de comutare a pachetelor, sisteme intermediare, comutatoare de date. Termenul generic pentru aceste calculatoare de comutare este ruter. Fiecare calculator este in general conectat (face parte) la un LAN in care exista un ruter, prin intermediul caruia se face legatura intre doua retele diferite.

Reteaua contine numeroase cabluri sau linii telefonice, fiecare din ele legand doua rutere. Daca doua rutere, care nu sunt legate intre ele, doresc sa comunice, atunci ele trebuie sa apeleze la un ruter intermediar.

Subreteaua este de tip punct-la-punct (se mai utilizeaza si urmatorii termeni: subretea memoreaza – si – retransmite sau subretea cu comutare de pachete), deoarece principul de functionare este urmatorul: cand un pachet este transmis de la un ruter la altul prin intermediul unui alt ruter (ruter intermediar), acesta este retinut acolo pana cand linia ceruta devine disponibila si apoi este transmis.

Figura 2.1 – Alcatuirea unei subretele

Analizand figura de mai sus putem spune ca subretea, se refera la colectia de rutere si linii de comunicatie aflate in proprietatea operatorului de retea. De exemplu, sistemul telefonic consta din centrale telefonice de comutare, care sunt conectate intre ele prin linii de mare viteza si sunt legate la domicilii si birouri prin linii de viteza scazuta. Aceste linii si echipamente, detinute si intretinute de catre compania telefonica, formeaza subreteaua sistemului telefonic. Telefoanele propriu-zise (in retea gazde, sau sisteme) nu sunt o parte a subretelei.

Combinatia dintre o subretea si gazdele sale formeaza o retea. In cazul unui LAN, reteaua este formata din cablu si gazde; aici nu exista cu adevarat o subretea.

2 Modele de retea

Am vazut ca o retea de calculatoare este alcatuita dintr-un ansamblu de mijloace de transmisie si de sisteme de calcul, pentru a realiza atat functii de transport a informatiei cat si functii de prelucrare a acesteia. Dar fiecare sistem de calcul prezinta un mod specific de stocare a informatiei si de interfatare cu exteriorul. Astfel, o retea de calculatoare care interconecteaza diferite sisteme de calcul poate functiona in bune conditii numai daca exista o conventie care stabileste modul in care se transmite si se interpreteaza informatia. Aceasta conventie poarta numele de protocol.

Pentru a intelege mai bine, vom prezenta in continuare celebrul exemplu al lui Andrew Tanenbaum de comunicare intre doi filozofi.

Figura 1.2 – Un mod de comunicare intre doi filozofi.

Doi filozofi, unul din India si altul din Anglia, doresc sa faca schimb de idei. Din pacate, sunt departe unul de celalalt si nici nu au o limba comuna prin care sa comunice, primul vorbind limba urdu iar al doilea engleza. Deoarece sunt departe unul de altul, ei trebuie sa comunice folosind un suport de comunicatie.
Pentru a se intelege intre ei, fiecare filozof angajeaza cate un translator (traducator) care sa cunoasca ambele limbi, iar ei la randul lor angajeaza cate o secretara care se va ocupa cu transmiterea efectiva a mesajului.

Dupa cum se vede filozoful 1 trimite translatorului sau mesajul pe care doreste sa-l primeasca filozoful 2. Acesta il traduce si il inmaneaza secretarei care il transmite mai departe prin fax, posta electronica sau cu telefonul secretarei 2.
Se evidentiaza astfel doua feluri de relatii intre cele 6 persoane participante la comunicatie. Pe de o parte sunt relatii intre partenerii cu aceleasi sarcini din cele doua tari (filozof 1 – filozof 2; translator 1 – translator 2; secretar 1 – secretar 2), iar pe de alta parte sunt relatii intre membrii din aceeasi tara care participa la comunicatie (filozof – translator; translator – secretar). Fiecare dintre aceste relatii functioneaza dupa reguli mutuale acceptate de catre parteneri. Cei doi filozofi accepta o serie de reguli de prezentare a conceptelor filozofice impuse de literatura filozofica mondiala; cei doi traducatori respecta si ei o serie de reguli de comunicare, iar cele doua secretare stabilesc de comun acord modul de transmitere a informatiilor.

Deci putem spune ca un protocol este un set de reguli si conventii ce se stabilesc intre participantii (de exemplu, filozof 1- filozof 2) la o comunicatie in vederea asigurarii bunei desfasurari a comunicatiei respective; sau protocolul este o intelegere intre partile care comunica asupra modului de realizare a comunicarii.

Din exemplu anterior, am vazut ca pentru a realiza comunicatia sunt necesare mai multe reguli (protocoale) care se stabilesc intre membrii de pe acelasi nivel si intre membrii din cadrul aceluiasi grup. Putem spune ca o comunicatie este caracterizata prin mai multe protocoale. Acest concept se numeste familie de protocoale (stiva) si reprezinta o lista de protocoale utilizate de catre un anumit sistem, cate un protocol pentru fiecare nivel.

In cadrul unui aceluiasi grup (filozof – translator – secretar) intre participantii la comunicatie schimbul de informatii se face pe baza unor alte conventii, numite servicii. In general participantii la comunicatie se numesc entitati. Entitatile de pe un nivel n (de exemplu, filozoful) furnizeaza un serviciu utilizat de catre nivelul n+1 (in cazul nostru, traducator). Nivelul n se numeste furnizor de servicii, iar nivelul n+1 se numeste utilizator de servicii.

Pe parcursul evolutiei comunicatiei intre calculatoare au fost elaborate mai multe familii de protocoale. Cele mai importante sunt modul de referinta ISO / OSI si modelul de referinta TCP / IP.

2.1 Modelul de referinta ISO / OSI

Modelul OSI – Open System Interconnection – este un model de interconectare a sistemelor deschise, elaborat Intre anii 1977 si 1994 de catre Organizatia Internationala de Standarde (ISO – International Standards Organization). Termenul de "open" (deschis) semnifica faptul ca sistemul este apt sa fie "deschis" pentru comunicatii cu oricare alt sistem din retea care respecta aceleasi reguli (protocoale). Modelul ISO / OSI este un model stratificat si care este organizat pe sapte nivele:

nivelul fizic (physical layer):

Acest nivel asigura transmiterea sirurilor de biti intre diferite sisteme, prin mediul fizic de interconectare a acestora, de tip telecomunicatie. Aspectele caracteristice acestui nivel se refera la modul de reprezentare a zerourilor si unitatilor, la modul de transmisie (simplex, semiduplex, duplex), la modul de stabilire si desfiintare a conexiunilor, precum si la alte caracteristici care pot fi grupate in patru categorii importante: mecanice, electrice, functionale si procedurale. Pentru nivelul fizic nu are importanta nici felul in care sirurile de biti sunt grupate (logic) in unitati mai mari, nici semnificatia acestora. Desi nivelul fizic pastreaza ordinea bitilor transmisi, el nu asigura tratarea eventualelor erori de transmisie produse. Nivelul fizic asigura transmiterea sirurilor de biti prin conexiuni fizice intre entitati de tip legatura-de-date. O conexiune poate avea doua capete (punct la punct) sau mai multe capete (multipunct).

Principalele functii ale nivelului fizic sunt urmatoarele :

activarea si dezactivarea conexiunilor fizice;

transmiterea sincrona sau asincrona a bitilor.

2. nivelul legaturii de date (data-link layer):

Acest nivel fixeaza o transmisie a bitilor fara erori in jurul unei linii de transmisie; sarcina principala este de a transforma un mijloc oarecare de transmisie intr-o linie care sa fie disponibila nivelului superior (nivelul retea) fara erori de transmisie nedetectate; informatia circula la acest nivel sub forma de cadre.

Principalele functii ale nivelului legatura de date sunt:

activarea si dezactivarea conexiunilor;

gruparea mai multor conexiuni fizice pentru o conexiune legatura de date;

delimitarea si sincronizarea unitatilor de date de protocol;

controlul ordinii unitatilor de date;

detectia erorilor si corectarea lor sau semnalarea lor catre monitorul retelei;

controlul fluxului pe o conexiune legatura de date.

nivelul retea (network layer):

La acest nivel se pun probleme legate de modul de stabilire a cailor de transmisie a datelor de la sursa la destinatie, deci prin dirijare a pachetelor intr-o retea punct la punct. Decizia de transmitere este dependenta de caile posibile si de incercarea de a echilibra incarcarea pentru a nu avea in acelasi timp legaturi supraincarcate si legaturi libere. Caile pot fi fixe, stabilindu-se la configurarea retelei sau se pot aloca dinamic in functie de starea curenta a retelei.Pentru primul caz transmisia unor pachete presupune stabilirea unei legaturi virtuale intre doua sisteme oarecare. Stabilire traseului se face la prima transmisie ce are rolul de initializare a nodurilor. Toate pachetele ulterioare urmeaza acelasi traseu, ordinea fiind pastrata la receptor. Pentru al doilea caz transmisia pachetelor presupune transmisia independenta a pachetelor de la sursa la destinatie. Stabilirea traseului se face pentru fiecarte pachet in parte , doua pachete succesive cu aceeasi origine putind fi dirijate pe cai diferite.

Nivelul retea asigura stabilirea, intretinerea si terminarea conexiunilor intre sisteme de comunicatie diferite precum si in cadrul aceluiasi sistem.

Cele mai importante functii ale nivelului retea sunt:

dirijarea si comutarea, prin care se realizeaza alegerea unui traseu corespunzator intre adresele-retea;

realizarea unor conexiuni-retea intre entitatile trnsport;

multiplexarea;

segmentarea si blocarea;

detectarea si corectarea erorilor;

mentinerea secventialitatii unitatilor de date transferate;

controlul fluxului;

asigurarea transmiterii expeditive a datelor.

nivelul transport (transport layer):

Acest nivel are rolul de a realiza o comunicare sigura intre doua calculatoare gazda, detectind si corectind acele erori, care pot aparea in transmisia unitatilor de date de la sursa la destinatie, pe care nivelul retea nu le detecteaza. Nivelul transport furnizeaza nivelului superior un serviciu de transport independent de subreteaua de comunicatie utilizata.

Nivelul transport asigura transferul transparent al datelor intre entitati sesiune, identificate prin adrese-transport. El realizeaza stabilirea, intretinerea si desfiintarea conexiunilor-transport. La stabilirea unei conexiuni-transport, nivelul transport selecteaza serviciile retea necesare, stabileste dimensiunea optima a unitatii de date de protocol si selecteaza functiile care vor fi operationale pe durata existentei conexiunii in concordanta cu clasa serviciilor cerute de entitatile sesiune.

nivelul sesiune (session layer):

Are rolul de a stabili si intretine conexiuni (numite sesiuni) intre procese de aplicatie (nivelul anterior realizeaza acelasi lucru dar intre sisteme gazda). Rolul nivelului sesiune este sa permita proceselor-aplicatie sa stabileasca caracteristicile dialogului intre ele cit si sincronizarea acestui dialog.

Nivelul sesiune furnizeaza unitatilor-prezentare cooperante mijloacele de organizare si sincronizare a schimbului de date. Fiecare conexiune-sesiune este construita pe o conexiune-transport din nivelul inferior. Fiecare conexiune- sesiune este caracterizata de un set de parametri ale caror valori sunt fixate de entitatile prezentare corespondente la stabilirea ei. Conexiunii i se asociaza un identificator unic ce poate fi folosit de entitatile-prezentare pe toata durata existentei sale. La acest nivel se pune problema securitatii si partajarii informatiei. Sursa poate cere distrugerea tuturor unitatilor de date aflate pe o conexiune- sesiune sau ca acestea sa nu fie transmise fara acordul sau. Nivelul sesiune asigura gestiunea dialogului entitatilor-prezentare care isi pot transmite explicit dreptul de a exercita anumite functii de control.

nivelul prezentare (presentation layer):

Se ocupa de sintaxa si semantica informatiilor transmise intre aplicatii sau utilizatori. Acest nivel gestioneaza structurile de date abstracte si le converteste din reprezentarea interna folosita de calculator in reprezentarea standardizata din retea si invers. Protocoalele de la acest nivel asigura compatibilitatea de codificare a datelor intre sistemele de calcul aflate in comunicatie.

nivelul aplicatie (application layer):

Se ocupa de interfata comuna pentru aplicatiile utilizator, de transferul fisierelor intre programe. ofera servicii de retea pentru aplicatiile utilizatorilor. Avand in vedere ca se afla in varful stivei, nu ofera sevicii pentru alte layere ci pentru aplicatiile exterioare. Layerul de aplicatii verifica partenerii de comunicare, integritatea si sincronizarea datele.

Modelul OSI este doar un model de arhitectura de retea, deoarece spune numai ceea ce ar trebui sa faca fiecare nivel, si nu specifica serviciile si protocoalele utilizate la fiecare nivel.

Trebuie mentionat ca intre doua nivele cu acelasi numar, aflate pe doua sisteme care comunica, nu exista de fapt o legatura fizica, ci are loc un schimb de informatii in cadrul unor conventii numite protocoale, care sunt intelese de catre nivelele respective.

In cadrul unui acelasi sistem intre doua nivele succesive exista o legatura fizica iar schimbul de informatii se face pe baza unor alte conventii, care se numesc servicii. Schimbul efectiv de semnale are loc numai la nivelurile fizice ale celor doua sisteme care comunica.

Circuitul datelor intre cele doua sisteme se efectueaza astfel: de la sistemul emitator datele se deplaseaza incepand cu nivelul 7 (aplicatie) spre nivelele inferioare, la fiecare nivel adaugandu-se un antet corespunzator nivelului; datele ajung prin intermediul nivelului fizic la mediul de comunicatie. Aici ele sunt transformate in semnale electrice care sunt transmise statiei destinatie, unde datele se vor deplasa de aceasta data in sens invers, adica de la nivelul fizic pana la nivelul aplicatie, la fiecare nivel avand loc procesul de eliminare a antetului.

Figura 2.2 – Modelul ISO – OSI.

Ceea ce trebuie retinut este faptul ca modelul OSI utilizeaza trei concepte esentiale, si anume:

protocoale, care se stabilesc intre doua entitati de pe acelasi nivel, aflate pe sisteme diferite;

servicii, care se stabilesc intre doua nivele succesive ale aceluiasi sistem;

interfete; interfata unui nivel spune proceselor aflate la nivelul imediat superior cum sa faca accesul.

Cu toate ca aceste concepte sunt foarte clar diferentiate, nu se spune nimic despre modul in care ele functioneaza.

2.2 Modelul TCP / IP

Este mult mai vechi decat modelul OSI si a fost utilizat drept model de referinta de catre stramosul tuturor retelelor de calculatoare, ARPANET si apoi succesorul sau Internet – ul. ARPANET a fost o retea de cercetare sponsorizata de catre DoD (Department of Defense – Departamentul de Aparare al Statelor Unite). In cele din urma, reteaua a ajuns sa conecteze intre ele, utilizand linii telefonice inchiriate, sute de retele universitare si guvernamentale. Modelul de referinta TCP / IP a aparut ca o necesitate de interconectare a retelelor de diferite tipuri, iar denumirea a fost data dupa cele doua protocoale fundamentale utilizate.

Din figura care urmeaza se va observa diferenta dintre modelul de referinta ISO / OSI si modelul TCP / IP.

Figura 3.2 – Comparatie intre modelele ISO / OSI si TCP / IP.

1. nivelul gazda – la – retea (interfata – retea), despre acest nivel modelul TCP/IP nu spune mare lucru, singura mentiune este aceea ca gazda trebuie sa se lege la retea, pentru a putea transmite date, folosind un anumit protocol. Acest protocol nu este definit si variaza de la gazda la gazda si de la retea la retea. Acest nivel face ca functionarea nivelului superior, numit Internet si respectiv, retea, sa nu depinda de reteaua fizica utilizata in comunicatie si de tipul legaturii de date.

2. nivelul Internet are rolul de a permite gazdelor sa emita pachete in orice retea si de a face ca pachetele sa circule independent pana la destinatie. Nivelul Internet defineste oficial un format de pachet si un protocol numit IP – Internet Protocol care asigura un serviciu de transmitere a datelor fara conexiune. Alte protocoale care pot functiona la acest nivel sunt: ICMP – Internet Control Message Protocol, ARP – Address Resolution Protocol si RARP – Reverse Address Resolution Protocol.

3. nivelul transport permite conversatii intre entitatile pereche din gazdele sursa si respectiv, destinatie, deci asigura comunicatia intre programele de aplicatie. Sunt definite doua protocoale: TCP – Transmission Control Protocol este un protocol punct-la-punct, orientat pe conexiuni care permite ca un flux de octeti trimisi de pe un sistem sa ajunga fara erori pe oricare alt sistem din inter-retea (asigura livrarea corecta, in ordine a mesajelor). Al doilea protocol, UDP – User Datagram Protocol este un protocol nesigur (nu asigura livrarea mesajului la receptie fara erori, fara pierderi, fara duplicate, in ordinea in care au fost emise), fara conexiuni, care foloseste IP pentru transportul mesajelor.

4. nivelul aplicatie asigura utilizatorii retelei, prin intermediul programelor de aplicatie, o varietate de servicii. Aceste protocoale sunt :

– transferul de fisiere FTP – File Transfer Protocol. Protocolul de transfer de fisiere pune la dispozitie o modalitate de a transfera eficient date de pe o statie pe alta, in ambele sensuri.

– posta electronica SMTP – Simple Mail Transfer Protocol. Posta electronica a fost la origine doar un tip de transfer de fisiere, dar ulterior a fost dezvoltat un protocol specializat pentru acest serviciu. Acest protocol este folosit pentru transferul mesajelor de posta electronica intre utilizatori conectati la retele diferite, dar care au o conexiune Internet.

– alte protocoale care au aparut ulterior: Serviciul Numelor de Domenii, DNS – Domain Name Service, pentru a stabili corespondenta dintre numele gazdelor si adreselor retelelor; HTTP – HyperText Transfer Protocol – folosit pentru aducerea paginilor de pe Web.

Figura 4.2 – Protocoalele modelului TCP / IP.

2.3 Cerinte de proiectare ale retelei:

2.3.1 Bazele Retelei

Pe reteaua care trebuie proiectata va rula un software client/server de gestiune a retelei de distributie in domeniul amenajarilor interioare a firmei Delta Distribution SA.

Acest software ruleaza ca server de baze de date SQL Server intr-un calculator configurat cu sistemul de operare Windows 2000 Server situat in reteaua locala de la Sediul Central Bucuresti. In Bucuresti mai exista 2 magazine de prezentare si desfacere, in bulevardul Nerva Traian, si in Militari, in strada Valea Cascadelor, si un depozit central, situat in strada Ghetu Anghel.

Datorita marimii retelelor acestor 3 puncte, deci implicit a traficului pe care il fac cu sediul central se doreste functionarea acestui program de gestiune on-line.

Pe langa zona on-line din Bucuresti, mai exista 12 filiale in tara care dispun de retele locale destul de mici (sub 10 statii), unde se doreste accesul la baza de date din Bucuresti. Avand in vedere faptul ca programul este instalat si ca server la filiale se doreste conectarea de cateva ori pe zi pentru sincronizarea bazelor de date si consultarea stocurilor, deoarece in tara se lucreaza off-line.

Pentru Bucuresti am ales implementarea unor tunele virtuale punct la punct intre sediu si cele 3 puncte de lucru prin Internet (de fapt o retea metropolitana hibrida de cablu tv si fibra optica de mare viteza – 10 Mbiti pe secunda).

Pentru tara datorita faptului ca traficul nu este deocamdata asa de mare am ales o solutie de conectare pe linii telefonice direct la sediu, evitand problemele de securitate de pe Internet, mai ales ca nu exista provideri locali care sa ofere un sistem de VPN autentic bine pus la punct.

Deasemenea exista si varianta utilizatorilor mobili care se conecteaza la fel ca si filialele, pe linii telefonice.

2.3.2 Cerinte specifice

Asigurarea legaturilor logice (tuneluri, rutari) intre sediu, puncte de lucru, filiale si utilizatori mobili;

Acces Server de Gestiune (LAN Sediu) – din toate LAN-urile si pentru toti utilizatorii dial-up;

Acces Internet in toate retelele interne si pentru utilizatorii mobili. Datorita mediului de informatii extrem de valoros pe care il reprezinta Internetul si datorita unei legaturi la Internet foarte rapide, este normal sa se doreasca pentru fiecare statie accesul Internet. Pentru aceasta trebuie asigurate rutarile necesare in toate punctele (utilizatori dial-up autentificati, toate LAN-urile interne, ruterele de la capat de tunel filiala, ruter sediu) pentru acces spre Internet nelimitat si monitorizat;

Securizare porti de acces Internet;

Configurarea urmatoarelor servicii si servere:

Server de Nume (BIND – DNS) principal pe ruter Sediu si secundare (slave) pe ruterele de la filiale pentru decongestionarea tunelelor;

Server de DHCP pe toate ruterele pentru alocare IP statica si dinamica;

Servere FTP (File Transfer Protocol) pe toate ruterele pentru transfer intern de fisiere in afara de programul de gestiune;

Servere de SSH (Secure Shell) pe toate ruterele pentru administrare de la distanta;

Server de SMTP(SendMail Transfer Protocol) pe ruterul Sediu ca agent de transfer al mail-ului (MTA) – netratat in acest proiect;

Server de Web pe ruterul Sediu pentru hosting pagini de web : Intranet, Monitorizare Trafic, Webmail, si altele cu suport de autentificare si criptare SSL pentru extern si fara restrictii pe intern;

Server de POP3 si IMAP pentru conturi de mail – netratat in acest proiect

Proxy de web Squid pentru viteza si gestionare acces HTTP;

Serviciul Samba pentru File Sharing Linux cu sistemele Windows– netratat in acest proiect;

Servicii de monitorizare utilizatori si trafic.

Reteaua implementata este, dupa cum spune si titlul, distribuita si eterogena. Distribuita deoarece este intinsa pe o suprafata mare, de arie nationala, si poate fi extinsa modular, prin adaugarea de noi retele usor de configurat dupa modelul celor descrise mai jos, si eterogena deoarece include mai multe standarde de comunicatie pentru a face posibila legarea la retea a mai multor tipuri de utilizatori (puncte de lucru, filiale, utilizatori mobili).

Modelul abordat in descrierea retelei care face obiectul acestui proiect de diploma este modelul TCP/IP deoarece este mai simplu si mai practic in utilizare, mai ales ca reteaua este proiectata sa profite la maxim de robustetea acestui protocol.

Vom incepe descrierea componentelor acestei retele de la nivelul fizic, nivelul situat cel mai jos in modelul TCP/IP.

3. Descrierea retelei implementate la nivelul de acces la retea

3.1 Mediul fizic

Scopul nivelului fizic este de a transporta o secventa de biti de la o masina la alta. Pentru aceasta pot fi utilizate diverse medii fizice. Fiecare dintre ele este definit de largimea sa de banda, intarziere, cost, si usurinta de instalare si de intretinere. Aceste medii pot fi impartite in doua grupe mari: mediile ghidate, cum ar fi cablul de cupru si fibrele optice, si mediile neghidate, cum ar fi undele radio si laserul.

Dintre mediile fizice care au fost utilizate in implementarea acestui proiect enumeram :

cablul torsadat;

cablul telefonic;

cablul coaxial de banda larga

fibra optica multi-mod

Cel mai vechi si inca cel mai utilizat mediu de transmisie este cablul torsadat. Un cablu torsadat este format din 4 perechi de cupru izolate impletite intr-o forma elicoidala, pentru a reduce interferenta electrica (2 fire paralele constituie o antena; daca le impletim nu mai formeaza o antena. Tipul folosit in reteaua descrisa este de Categoria 5, care au multe rasuciri pe centimetru, si sunt izolate cu teflon, rezultand o interferenta redusa si o mai buna calitate a semnalului pe distante mari, si sunt cunoscute sub denumirea de cabluri UTP Unshielded Twisted Pair (cablu torsadat neecranat). Rata maxima de transfer a acestuia este de 100 de Mbiti pe secunda, pe o distanta de maxim 100 de metri intre doua repetoare ceea ce il face potrivit pentru retele LAN de mare viteza, iar pretul este foarte scazut.

Cablul telefonic reprezinta un vechi dar matur mediu de transmisii de date. Un cablu telefonic este format dintr-o pereche de cupru pe care circula semnale analogice sau digitale cu o viteza intre 28.8 si 56 Kbiti pe secunda, in functie de modem, de provider si de latimea de banda oferita de cablul in sine. Este o rata destul de mica de transfer, potrivita in schimb pentru browsing pe Internet, servicii de mail si in general aplicatii care nu genereaza prea mult trafic.

Cablul coaxial de banda larga este folosit pentru transmisia analogica in sistemele de televiziune prin cablu. Deoarece retelele de banda larga se bazeaza pe tehnologia standard a televiziunii prin cablu, cablurile pot fi folosite pana la 750 MHz, si datorita transmisiei analogice pot acoperi distante de aproape 360 km. Sistemele de banda larga sunt impartite in mai multe canale, in televiziune fiind frecvent folosite canalele de 6 MHz. Rata maxima de transfer la care opereaza acest mediu fizic este de 10 Mbiti pe secunda, ceea ce inseamna foarte mult pentru ca acest cablu poate fi folosit pentru implementarea unor retele WAN, unde aceasta rata de transfer combinata cu pretul scazut il recomanda ca fiind cel mai bun deocamdata.

Fibra optica este in general folosita pentru coloanele vertebrale ale providerilor si pentru cablarea inter-cladiri. Este mediul cu cea mai mare latime de banda (de ordinul terrabitilor), dar si cea mai scumpa.

3.2 Componente pentru nivelul de legatura de date

Hub-uri (multi-port repeater) si comutatoare (switch)

Reteaua Ethernet a fost astfel proiectatã incat sã permitã o expandare usoarã, pe mãsura cerintelor de vitezã si de spatiu tot mai mari. Pentru extinderea unei retele Ethernet se pot folosi mai multe tipuri de dispozitive denumite hub-uri si switch-uri.

Fiecare port al unui hub leagã impreunã segmentele de cablu Ethernet individuale pentru a crea o nouã retea ce functioneazã ca un Ethernet independent si singular. Segmentele si hub-urile din aceastã nouã retea trebuie sã respecte limitãrile timpului de intoarcere.

Spre deosebire de un hub, fiecare port al unui comutator conecteazã cate un segment de cablu care functioneazã ca o retea Ethernet distinctã. Deci, spre deosebire de un hub ale cãrui porturi combinã segmentele de cablu pentru a forma un singur LAN, un comutator face posibilã divizarea unei retele Ethernet de dimensiuni mari, in mai multe retele Ethernet independente ce sunt legate printr-un mecanism de comutare a cadrelor. Regulile pentru timpul de intoarcere nu se mai aplicã retelei globale ci doar retelelor Ethernet obtinute prin divizare.

Atunci cand sunt coliziuni multe pe un tronson de retea unde sunt conectate multe statii la un hub sau chiar cascadate mai multe hub-uri se recomanda schimbarea acestuia cu un comutator, care nu mai inainteaza tot traficul ci face filtrare pe baza adresei fizice a elementelor pe care le conecteaza.

Modemul de cablu Nortel Lancity LCP

Figura 1.3 – Modemul Nortel Lancity LCP

Termenul de modem este folosit doar pentru ca s-a incetatenit aceasta denumire pentru un dispozitiv care conecteaza punct la punct un calculator. In cazul acestui modem, denumirea nu prea i se potriveste pentru ca cuvantul modem provine de la Modulare/Demodulare pentru convertirea in digital si in analog. In cazul cablului TV nu este cazul sa se produca aceasta transformare, pentru ca informatia circula digital.

Lancity LCP este un modem modern care ofera o conectare facila la infrastructura de cablu TV (Coaxial gros) a oricarui provider care ofera si servicii de transmisii de date pe magistrala metropolitana sau chiar nationala si eventual Internet. Are o port pentru mufe de cablu coaxial gros (Thick Ethernet), si o mufa RJ-45 pentru conectarea la un switch, hub sau placa de retea in cazul unui ruter.

Ofera un timp de intarziere mic (pana in 1,25 msec), rate de transfer de download si upload de 10Mbiti pe secunda, functionalitate de comutator pentru a limita coliziunile pe reteaua de cablu tv (in intervalul de frecvente destinat comunicatiilor de date)

Bancul de modemuri Cyclades Cyclom YeP

Figura 2.3 – Cyclom YeP

Cyclom YeP este o placa expandabila destinata pentru instalarea in PC-uri . Se conecteaza extern prin cabluri SCSI 2 cu niste module seriale pentru a adaposti maxim 32 de porturi seriale tip RS-232. Modulele seriale sunt disponibile in versiunile de 8 si 16 porturi, cu conectori DB-25(serial) si RJ-45(Ethernet).

Acest dispozitiv este utilizat in ruterul de la Sediu devenit Remote Access Server (Server de Acces la Distanta),pentru a oferi conectivitate seriala celor 3 modemuri externe conectate cu cabluri seriale DB-25 – DB-9.

Media Convertoare

Media convertoarele sunt dispozitive necesare pentru convertirea semnalului luminos care circula pe fibra optica in semnal electric si invers.

3.3 Tehnologia de retea Ethernet (reteaua cu difuzare)

Ethernet-ul a fost dezvoltat original de Digital Equipment, Intel si Xerox spre sfarsitul anilor 1970, fiind adoptat ca standard international si a devenit cel mai predominant protocol de tip Data-Link de astazi. Initial a fost specificat cu o rata a semnalului de 10 Mbps. Foloseste o metoda de acces cunoscut ca CSMA/CD (Carrier Sense Multiple Access/Collision Detection). CSMA/CD vine de la Carrier Sense Multiple Access with Collision Detection.

In loc sa se paseze randul de la statie la statie pentru a da acces la transmisia pe retea, orice statie Ethernet are permisiunea de a transmite pachete in orice moment, cat timp reteaua nu este ocupata cu transmisia de la alte statii.

Daca doua sau mai multe gazde incep sa transmita in acelasi timp se spune a avut loc o coliziune. Cand se intampla acest lucru gazdele care au produs coliziunea o pot detecta si trimit un semnal de bruiaj ca fiecare gazda sa afle care este situatia. Dupa aceea, statiile care au generat coliziunea nu mai transmit nimic pentru o perioada de timp aleasa aleator; dupa aceea asculta daca linia este libera si incep sa retransmita. Un algoritm special cunoscut sub numele de algoritmul back-off este folosit pentru a calcula aceasta perioada de timp. In final fiecare statie a retelei va avea posibilitatea sa transmita date, dar spre deosebire de retelele token-passing, Ethernet-ul nu este determinist (nu se poate calcula cat timp trebuie sa astepte un computer pana poate transmite).

Pentru ca este imposibil de determinat cu precizie momentul in care un nod va fi urmatorul care va transmite si ca este aproape imposibil sa se garanteze daca transmisia va avea succes, Ethernet este numit si retea probabilistica. Exista o mica posibilitate ca un anumit pachet sa nu poata sa fie transmis cu succes in timpul necesar datorita posibilitatii ca la fiecare incercare sa apara o coliziune. Cu cat creste cantitatea de trafic pe o retea Ethernet, numarul coliziunilor si erorilor creste, si sansa ca un anumit pachet sa fie comunicat cu succes descreste.

Ethernet-ul este o retea de difuzare. Acest lucru inseamna ca toate gazdele dintr-o retea pot vedea cadrele nodului care transmite, dar numai gazda care detine adresa MAC care se potriveste cu destinatia din campul destinatie va procesa datele transmise. Restul gazdelor le vor ignora.

Exista mai mult de 18 tipuri de retele Ethernet pentru care exista specificatii sau pentru care inca se dezvolta specificatiile. In tabelul de mai jos sunt prezentate cele mai importante:

Ca topologie , Ethernet-ul foloseste o topologie logica de magistrala (informatia curge pe o magistrala liniara) iar din punct de vedere fizic topologia este de stea extinsa.

Figura 3.3 – Topologia logica de magistrala a Ethernet-ului.

Figura 4.3 – Topologia fizica de stea extinsa a Ethernet-ului.

Topologia de stea extinsa foloseste pentru inceput topologia stea si apoi leaga stelele formate impreuna prin hub-uri si comutatoare. Aceasta va mari lungimea si marimea retelei. Retelele LAN implementate sunt de tip Fast Ethernet si au o structura asemanatoare cu cea descrisa mai jos:

Figura 5.3 – Schema a retelelor fizice efectiv implementate.

Pentru fiecare limitare a nivelului Fizic, nivelul Legatura de date are o solutie. De exemplu Nivelul 1 nu poate comunica cu protocoalele superioare, Nivelul 2 face lucrul acesta prin controlul logic al legaturii; Nivelul 1 nu poate numi sau identifica calculatoare; Nivelul 2 foloseste un proces de adresare; Nivelul 1 poate doar descrie siruri de biti; Nivelul 2 foloseste cadrele pentru a orgazinza sau grupa acesti biti.; Nivelul 1 nu poate decide care computer va transmite date binare dintr-un grup care incearca simultan sa transmita; Nivelul 2 foloseste un sistem numit controlul accesului la mediu (MAC).

In figura de mai jos este facuta o scurta prezentare a formatului cadrului Ethernet:

Figura 6.3 – Formatul cadrului Ethernet.

preambul – Este modelul alternant de 0 si 1 care spun statiilor care primesc acest mesaj ca acest cadru este Ethernet.

inceput de delimitator de cadru – Delimitatorul IEEE 802.3 se termina cu 2 de 1 consecutivi.

adresa sursa si destinatie – Primii trei octeti sunt specificati de IEEE pe baza identificatorului de producator, iar ultimii sunt specificati de catre producator. Adresa sursa este intotdeauna o adresa unicast (adica un singur nod) . Adresa destinatie poate fi unicast, multicast (un grup), sau difuzare (broadcast, toate nodurile).

tipul – Tipul specifica protocolul de nivel superior care trebuie sa preia datele dupa ce procesarea Ethernet este terminata.

date – Dupa ce s-a terminat procesarea la nivelul fizic si la nivelul de legatura de date, datele continute in cadru sunt trimise protocolului de nivel superios, care este identificat in campul de tip.

secventa de verificare a cadrului – Aceasta secventa contine o valoare de CRC de 4 octeti care este creata de echipamentul care o trimite si este recalculata de catre echipamentul care o primeste pentru a verifica daca exista cadre deteriorate.

3.4 Protocolul PPP (protocolul punct la punct)

Unul dintre cele doua standarde pentru conectarea directa a calculatoarelor punct la punct prin intermediul unui apel telefonic este protocolul PPP (celalat standard este SLIP). Spre deosebire de vechiul protocol SLIP, PPP include proceduri superioare de negociere, de comprimare si corectare a datelor. In schimb, aceste caracteristici implica adaugarea unei suprasarcini transmisiei si sunt inutile atunci cand ambele modemuri (de transmisie si de receptie) pot realiza corectia hardware a erorilor si comprimarea datelor din mers.

In capitolul consacrat nivelulul de retea si transport vom descrie cum se face practic aceasta conectare, aici tratand pur teoretic problema conectarii punct la punct.

PPP face detectia erorilor, suporta mai multe protocoale, permite ca adresele IP sa fie negociate in momentul conectarii, permite autentificarea si are multe alte imbunatatiri fata de SLIP.

Protocolul Punct-La-Punct este conceput pentru legaturi simple care transporta pachete intre doua perechi. Aceste legaturi ofera operare full-duplex simultana bi-directionala si se livreaza pachetele in ordine. PPP ofera o solutie comuna pentru conectarea simpla a unei largi varietati de gazde, punti si rutere.

In timp ce furnizorii de servicii Internet ofera inca suport atat pentru SLIP cat si pentru PPP, viitorul apartine cu siguranta PPP-ului, atat pentru liniile comutate cat si pentru liniile inchiriate ruter-ruter.

PPP furnizeaza trei lucruri:

1. O metoda de impartire in cadre care delimiteaza, fara ambiguitate, sfarsitul unuia si inceputul urmatorului. Formatul cadrului permite detectia de erori.

2. Un protocol de legatura pentru a obtine liniile, a le testa, a negocia optiunile si pentru a elibera liniile atunci cand nu mai este nevoie de ele. Acest protocol se numeste LCP (Link Control Protocol-protocolul de control al legaturii).

3. Un mod de a negocia optiunile nivelului retea intr-un mod independent de protocolul folosit pentru nivelul retea. Metoda aleasa este de a avea un NCP (Network Control Protocol –protocolul de control al retelei) pentru fiecare nivel de retea suportat.

Pentru a vedea cum lucreaza impreuna aceste parti, consideram un scenariu tipic in care un utilizator suna de la domiciliu la numarul de telefon al firmei unde doreste sa se conecteze si sa aiba acces la date din retea si la Internet. PC-ul apeleaza mai intai ruterul de la Sediu prin intermediul unui modem. Dupa ce modemul ruterului a raspuns la telefon si s-a stabilit o conexiune fizica, PC-ul trimite ruterului o serie de pachete LCP in campul de informatie utila (payload) al unui sau mai multor cadre PPP.

Aceste pachete si raspunsurile lor selecteaza parametrii PPP ce vor fi utilizati.
Odata cu parametrii s-au stabilit de comun acord, mai multe pachete NCP sunt trimise pentru a configura nivelul retea. In mod obisnuit, PC-ul vrea sa ruleze o suita de protocoale TCP/IP si va avea nevoie de o adresa IP. Adresele IP sunt configurate static deoarece sunt doar 3 si sunt dintr-o clasa privata si vom discuta mai tarziu despre nivelul retea. NCP pentru IP este folosit pentru a realiza asocierea adreselor IP.

In acest moment, PC-ul este un calculator gazda in reteaua LAN a firmei si la efl de bine o gazda Internet (chiar daca nu are un IP valabil Internet) si poate trimite si primi pachete IP, exact asa cum o pot face calculatoarele conectate prin cabluri.
Cand utilizatorul termina, NCP este folosit pentru a intrerupe conexiunea la nivelul de legatura de date. In final, calculatorul spune modemului sa inchida telefonul, eliberand conexiunea la nivel fizic.

Formatul cadrului PPP este prezentat in figura de mai jos.

Figura 7.3 – Formatul complet de cadru PPP pentru operarea in mod numerotat.

Datele cadrelor PPP incep cu octetul indicator HDLC standard (01111110), pentru care se foloseste umplerea de caractere, daca apare in cadrul campului ce specifica informatia utila.

Dupa aceasta urmeaza campul Adresa, care este intotdeauna setat la valoarea binara 11111111, indicand astfel ca toate trebuie sa accepte cadrul. Folosirea acestei valori evita situatia in care se asociaza adrese legaturii de date.

Campul Adresa este urmat de campul Control, a carui valoare implicita este 00000011. Aceasta valoare indica un cadru numerotat. Cu alte cuvinte, PPP nu furnizeaza o transmisie sigura folosind numere de secventa si confirmari in mod implicit.

In medii cu zgomote, cum ar fi retelele fara fir, poate fi folosita transmisia sigura utilizand numere de secventa. Deoarece campurile Adresa si Control sunt intotdeauna constante in configuratiile implicite, LCP furnizeaza mecanismul necesar ca cele doua parti sa se negocieze optional omiterea amandurora si sa salveze astfel doi octeti pe cadru.

Pe de-al patrulea camp PPP este campul Protocol. Sarcina lui este sa spuna ce tip de pachet este in campul Informatie utila. Sunt definite coduri pentru LCP, NCP, IP, IPX, AppleTalk si alte protocoale.

Protocoalele ce incep cu un bit 0 sunt protocoale pentru nivelul retea cum ar fi IP, IPX, OSI CLNP, XNS.

Acelea care incep cu un bit sunt folosite pentru a negocia alte protocoale.
Acestea include LCP si un NCP diferit pentru fiecare protocol de retea suportat. Dimensiunea implicita a campului Protocol este de 2 octeti, dar ea poate fi
negociata la un octet folosind LCP.

Campul Informatie utila este de lungime variabila, pana la o anumita limita maxima negociata. Daca lungimea nu este negociata folosind LCP in timpul setarii liniei, este folosita o lungime implicita de 1500 de octeti. Daca este necesar, dupa informatia utila pot fi adaugate caractere de umplere.

Dupa campul Informatie utila urmeaza campul Suma de control, care este in mod normal de 2 octeti, dar poate fi modificat la 4 octeti.

In concluzie, PPP este un mecanism de incadrare multiprotocol potrivit pentru folosirea pe linii cu modem, linii seriale orientate pe biti HDLC, SONET si alte niveluri fizice. Suporta detectia erorilor, negociere optionala, compresia antetului si, optional, transmisie sigura folosind cadre HDLC.

3.5 Schema retelei fizice si descrierea sa

In acest subcapitol vom prezenta harta fizica schematica pentru doua puncte de lucru din Bucuresti, unul conectat pe fibra optica (cel din Depozit) si unul pe cablu TV ( Militari), o filiala standard din provincie conectata pe linie telefonica, si desigur, arhitectura de retea de la sediul central Bucuresti.

Figura 8.3 – Doua puncte de lucru Bucuresti si o filiala din provincie.

Figura 9.3 – Sediul conectat la provider si la Romtelecom.

4. Descrierea retelei implementate la nivelul retea si transport

Pentru un utilizator obisnuit Internet-ul este o singura retea virtuala care interconecteaza toate statiile si prin care este posibila comunicatia intre ele iar arhitectura ei de baza este ascunsa si irelevanta.

Software-ul Internet este dezvoltat in jurul a trei tipuri de servicii de retea aranjate intr-o ierarhie (fig. 1.4); iar succesul sau a rezultat deoarece aceasta arhitectura este robusta si adaptabila. Unul dintre cele mai semnificative avantaje ale acestei separari conceptuale este ca devine posibila inlocuirea unui serviciu sau modificarea lui fara a le afecta pe celelalte.

Figura 1.4

4.1 Sistemul de comunicatie nefiabil si neorientat pe conexiune

Serviciul care sta la baza Internet-ului este sistemul de distribuire a pachetelor. Din punct de vedere tehnic serviciul este definit ca un sistem de distribuire a pachetelor "nefiabil" (unreliable), cu "efort maxim" (best-effort) si "neorientat pe conexiune" (connectionless).

Sistem de comunicatie nefiabil – distribuirea nu este garantata. Exista pachete pierdute, duplicate, intarziate sau care au erori, insa serviciul nu va detecta aceste cazuri, nici nu va informa statia care transmite sau cea care receptioneaza.

Sistem de comunicatie neorientat pe conexiune – fiecare pachet este tratat independent de toate celelalte. O serie de pachete trimise de o masina spre o alta pot traversa cai diferite.

Distributie cu efort maxim – software-ul internet face incercare de a transmite pachetele.

4.2 Scopul protocolului Internet

Protocolul care defineste acest mecanism de distribuire nefiabil si neorientat pe conexiune se numeste "Internet Protocol", cunoscut sub initialele IP. IP ofera:

protocolul IP defineste unitatea de baza pentru transferul de date in retelele bazate pe TCP/IP. Acesta specifica formatul exact al tuturor datelor ce traverseaza o retea TCP/IP;

software-ul IP realizeaza si functia de rutare, alegand o cale pe care datele vor fi trimise;

pe langa specificatiile formale pentru formate si rutare, IP include un set de reguli ce incapsuleaza idea de transmisie nefiabila. Aceste reguli caracterizeaza modul in care o statie sau un gateway ar trebui sa proceseze pachetele primite: de ce si cand trebuie generate mesaje de eroare si in ce conditii pachetele pot fi eliminate;

deoarece IP este fara conexiune, fiecare pachet este independent. IP analizeaza informatiile de antet ale unui pachet si foloseste aceste informatii pentru a trimite pachetul spre destinatia finala. IP nu este interesat daca pachetele ajung in ordinea in care au fost expediate;

IP este fara confirmare. IP nu ofera nici un mecanism pentru a determina daca un pachet mai ajunge la destinatie. Protocolul nu face decat sa trimita pachetul si sa presupuna fie ca acesta va ajunge unde trebuie, fie ca un alt protocol va fi responsabil pentru aceasta verificare;

IP nu este interesat de calea pe care circula un pachet atunci cand traverseaza Internetul. Deciziile de rutare sunt de obicei lasate in seama altor protocoale. Este foarte posibil ca pachete provenite de la acelasi calculator gazda sa parcurga rute diferite catre aceeasi destinatie.

4.3 Datagrama IP

Pentru Internet unitatea care sta la baza tuturor transferurilor este datagrama internet sau datagrama IP.

IP se ocupa cu preluarea datelor de pe stratul gazda la gazda si le fragmenteaza in datagrame de o dimensiune care poate fi transferata prin retea. La destinatie IP reasambleaza aceste datagrame si le transfera in sus in stiva de protocoale. Pentru ca fiecare pachet sa fie livrat, protocolul internet plaseaza adresele IP sursa si destinatie in antetul pachetului. De asemenea, efectueaza un calcul al sumei de control a informatiilor din antet pentru a se asigura de corectitudinea acestora, insa nu efectueaza aceasta functie si pentru zona de date a pachetului.

La fel ca un cadru transmis pe o retea fizica, o datagrama IP este impartit in header si zona de date:

Campuri in pachetul IP:

Versiune – Acest camp indica versiuna protocolului IP care a construit datagrama. Campul are lungimea de 4 biti. In prezent cea mai utilizata versiune IP este versiunea 4. “Urmatoarea generatie” IP este numita IPv6, prescurtare de la versiunea 6. Versiuni diferite de IP folosesc formate diferite pentru informatiile de antet. Datorita acestui aspect, daca stratul IP de la capatul destinatie este o versiune mai mica (adica mai veche) decat cea specificata in acest camp, va refuza pachetul. Acesta este insa un eveniment rar, deoarece in prezent majoritatea sistemelor folosesc versiunea 4 a protocolului IP.

Lungimea antetului Internet (Internet Header Length, sau IHL) – Acest camp contine lungimea antetului pachetului si poate fi utilizat de programele software pentru a calcula locul in care incepe efectiv zona de date in cadrul datagramei. Lungimea este exprimata ca un numar de cuvinte pe 32 biti. Acest camp are lungimea de 4 biti.

Tipul de serviciu – Acest camp de 8 biti a fost creat pentru ca protocolul IP sa poata determina modul de tratatre a unei anumite datagrame, cum ar fi acordarea unei prioritati mai mici sau mai mari pentru un pachet. Insa nici o implementare importanta a protocolului IP versiunea 4 nu foloseste bitii din acest camp, astfel incat in mod uzual li se atribuie valoarea 0.

Lungimea datagramei – Acest camp este folosit pentru a specifica lungimea intregii datagrame si este exprimat intr-un numar de octeti (bytes). Deoarece are lungimea de 16 biti, poate fi folosit pentru a specifica o dimensiune de pachet de pana la 65.534 de octeti. Scazand valoarea campului IHL din aceasta valoare IP, poate fi determinata lungimea zonei de date a diagramei.

Identificare – Atunci cand protocolul IP imparte un mesaj in mai multe datagrame astfel incat sa poata fi transmise prin retea (operatie numita fragmentare), terbuie sa poata fi reasamblate. Pentru acest scop este utilizat acest camp. Calculatorul expeditor va folosi un numar unic pentru fiecare mesaj trimis, iar fiecare datagrama dintr-un anumit mesaj va avea aceeasi valoare in acest camp de 16 biti.

Indicatori – Acest camp contine mai multi biti indicatori. Bitul 0 este rezervat si ar trebui sa aiba mereu valoarea 0. Bitul 1 este Fara fragmentare (Don’t fragment sau DF): 0 = se accepta fragmentarea, 1 = nu se accepta fragmentarea. Daca un calculator determina ca trebuie sa fragmenteze o datagrama pentru a o trimite prin urmatorul segment din reteaua fizica si daca acest camp DF are stabilita valoarea 1, renunta la datagrama. Daca acest camp are valoarea 0, imparte datagrama in mai multe datagrame astfel incat acestea sa poata fi trimise mai departe pe traseu. Bitul 2 se numeste Mai multe fragmente (More Fragments, sau MF) si este utilizat pentru a indica starea de fragmentare a pachetului. Daca are stabilita valoarea 1, trebuie sa mai soseasca si alte fragmente. Ultimul fragment din mesajul original care a fost fragmentat are valoarea 0 in acest camp. Impreuna, cele doua campuri controleaza procesul de fragmentare.

Deplasamentul de fragment – Atunci cand indicatorul MF are stabilita valoarea 1 (adica mesajul a fost fragmentat), acest camp este folosit pentru a indica pozitia fragmentului in cadrul mesajului original astfel incat acesta sa poata fi reasamblat corect. Acest camp are o lungime de 13 biti si exprima valoarea deplasamentului acestui fragment in unitati de 8 octeti.

Durata de viata (Time to Live, sau TTL) – Acest camp specifica perioada maxima (in secunde) in care i se permite unei datagrame sa existe in retea. Valoarea este stabilita la inceput si este redusa de fiecare masina prin care trece datagrama. Cand acest camp ajunge la valoarea 0, se renunta la datagrama. Retineti ca, desi acest camp poate fi redus cu cateva secunde pe o masina cu incarcare foarte mare, este redus intotdeauna cu cel putin o secunda pe fiecare masina prin care trece, chiar daca a fost necesara o perioada mai mica de o secunda pentru prelucrarea datagramei.

Protocolul – Acest camp de 8 biti indica tipul de protocol pentru datele continute in aceasta datagrama. Network Information Centre (NIC) stabileste numerele folosite in acest camp pentru identificarea protocoalelor. De exmplu, TCP este indicat prin plasarea valorii 6 in acest camp.

Suma de control a antetului – Este o valoare calculata pe 16 biti, utilizata pentru a verifica integritatea informatiilor din antet. Cand informatiile din antet sunt modificate, aceasta valoare este recalculata. De exemplu, deoarece valoarea TTL este scazuta de fiecare sistem prin care trece datagrama, se modiica sivaloarea sumei de control.

Adresa sursa – Este adresa IP a sursei datagramei. Acest camp are lungimea de 32 biti.

Adresa destinatie – Este adresa IP a destinatiei datagramei. Acest camp are lungimea de 32 de biti.

Optiuni – Acesta este un camp optional, de lungime variabila, care poate contine o lista de optiuni. Intre clasele de optiuni se numara: control, rezervat, depanare si masura. Rutarea la sursa poate fi implementata cu ajutorul acestui camp si are o importanta deosebita la configurarea unui firewall.

Completare – Acest camp este utilizat pentru a completa antetul pana la limita de 32 de biti. Completarea se face cu zerouri.

Spre deosebire de cadrele retelelor fizice, dimensiunea unei datagrame nu este limitata de nici o caracteristica hardware. Pentru IPv4 lungimea maxima a unei datagrame poate fi 216. O datagrama care circula de la o masina la alta trebuie sa fie transportata pe o retea fizica (sau mai multe). Idea de a transporta o datagrama intr-un cadru de retea se numeste "incapsulare" (encapsulation)(fig 4.4).

Figura 2.4

In cazul ideal intreaga datagrama IP incape intr-un singur cadru fizic, facand astfel transmisia eficienta. Pentru a obtine aceasta eficienta a fost introdus termenul de "unitate de transfer maxima" (maximum transfer unit – MTU), astfel incat orice datagrama sa incapa intr-un cadru fizic.

Exemplu: pentru Ethernet MTU = 1500, pentru proNET10 (o retea token ring) MTU = 2044.

Daca se alege un MTU mic vom avea transferuri ineficiente pentru retelele care pot transporta cadre de dimensiuni mai mari.

Nu intotdeauna alegerea unui anumit MTU garanteaza ca datagrama va incapea in toate cadrele corespunzatoare retelelor fizice pe care le va traversa. Astfel, in loc sa avem datagrame care sunt constranse de capacitatea cadrelor retelelor fizice, software-ul TCP/IP alege o dimensiune initiala convenabila si un mod de a imparti datagramele de dimensiuni mai mari in bucati mai mici cand acestea trebuie sa traverseze o retea cu MTU mic. Micile bucati in care este impartita o datagrama sunt numite "fragmente" iar procesul de impartire a unei datagrame este numit "fragmentare".

Exemplu: In figura 3.4 statiile A si B sunt conectate la doua retele Ethernet, avand MTU = 1500. Calea dintre cele doua retele include si o retea al carei MTU este 620. Daca statia A trimite o datagrama statiei B avand dimensiunea mai mare de 620 de octeti, acesta va fi fregmentat de catre gateway-ul G1. Dimensiunea fragmentelor este aleasa astfel incat fiecare fragment sa poata incape intr-un cadru fizic.

Protocolul IP nu limiteaza lungimea minima a datagramelor, dar nici nu garanteaza ca datagramele de dimensiuni mari vor ajunge la destinatie nefragmentate. Sursa poate alege orice lungime pentru datagrama, fragmentarea si reasamblarea se realizeaza automat fara ca statia sursa sa intervina cu ceva.

Figura 3.4

Fiecare fragment are acelasi format ca si datagrama originala. In figura 4.4 este prezentat rezultatul fragmentarii. Fiecare fragment contine un header care este identic cu cel al datagramei initiale, cu exceptia unui bit din campul FLAGS, care indica ca aceasta datagrama este un fragment al unei datagrame initiale.

Figura 4.4

Intr-o retea TCP/IP daca o datagrama a fost fragmentata, ea va fi reasamblata doar la statia destinatie. Aceasta pastrare a fragmentarii pana la destinatia finala a datagramei are doua dezavantaje:

ineficienta – fragmentele trebuie sa circule separat din momentul fragmentarii si pana la destinatie, chiar daca vor mai parcurge si retele cu MTU mare.

daca unele fragmente sunt pierdute, datagrama initiala este complet pierduta.

Controlul fragmentelor se face pe baza campurilor IDENTIFICATION, FLAGS si FRAGMENT OFFSET din header.

4.4 Clasele de adrese IP

Internet-ul se poate gandi ca si orice alta retea fizica, cu diferenta ca Internet-ul este o structura virtuala implementata in intregime in software. Astfel proiectantii nu au fost constransi in alegerea formatului si dimensiunii pachetelor, a adreselor, de nici o caracteristica (limitare) hardware. Pentru adrese, proiectantii TCP/IP au ales o schema analoaga cu modul de adresare din retelele fizice, in fiecare statie are atribuit un unic numar intreg numit "adresa internet" sau "adresa IP". Insa aceste adrese au fost alese astfel incat sa faca rutarea pachetelor cat mai eficienta. Si anume, o adresa IP codifica informatia despre reteaua fizica de care apartine o anumita statie si informatia de identificare a statiei in cadrul retelei.

Fiecare statie gazda din internet are atribuita o unica adresa internet pe 32 de biti care este folosita in toate comunicatiile cu statia respectiva. Aceasta adresa este o pereche de tipul (netid, hostid) unde netid este un identificator de retea, iar hostid identifica o statie din cadrul retelei netid. In practica fiecare adresa IP are una dintre formele prezentate in figura 5.4 :

Figura 5.4

Pentru o anumita adresa IP data se poate determina clasa din care face parte pe baza celor mai semnificativi trei biti din adresa. Adresele de clasa A sunt folosite pentru retelele de dimensiuni foarte mari, care au mai mult de 216 statii, au 7 biti pentru netid si 24 biti pentru hostid. Adresele de clasa B, care sunt folosite pentru retelele de dimensiuni medii avand un numar de statii intre 28 si 216, au alocati 14 biti pentru netid si 16 biti pentru hostid. Iar adresele de clasa C, folosite in retelele de dimensiuni mici cu pana la 28 statii, au alocati 21 biti pentru netid si 8 biti pentru hostid. Trebuie sa remarcam ca adresele IP au fost astfel concepute pentru a se putea extrage cat mai simplu si rapid identificatorii netid si hostid.

In reteaua implementata sunt folosite intern adrese de clasa A pentru retelele de tip LAN si pentru utilizatorii care se conecteaza telefonic:

Testarea configurarii se face cu comanda:

[root@sediu /root]# ifconfig eth1

eth1 Link encap:Ethernet HWaddr 00:02:44:15:B3:97

inet addr:10.0.1.1 Bcast:10.0.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:2478034 errors:0 dropped:0 overruns:0 frame:0

TX packets:2552692 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100

Interrupt:11 Base address:0x6000

Pentru tunele am ales adresele interne de clasa C:

[root@sediu /root]# ifconfig tuneld

tuneld Link encap:UNSPEC

HWaddr 50-56-6D-E7-00-00-00-6C-00-00-00-00-00-00-00-00

inet addr:192.168.2.1 P-t-P:192.168.2.1 Mask:255.255.255.252

UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1

RX packets:187094 errors:0 dropped:0 overruns:0 frame:0

TX packets:199738 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

Adresele specifica conexiunile la retea si nu identifica o statie. Orice adresa IP identifica o unica statie din retea, dar o statie poate avea alocate mai multe adrese IP. Astfel pentru fiecare conexiune a unei statii la o anumita retea trebuie alocata o adresa IP distincta. Acest lucru este impus de codificarea adresei retelei in adresa IP.

Adresele de retea, de broadcast si de loopback

Un alt avantaj al codificarii informatiei de retea in adresa IP este acela ca se poate face referire la o retea in acelasi mod ca si la o statie. Prin conventie o valoare 0 de hostid nu este atribuita nici unei statii dintr-o retea. Insa o adresa IP cu campul hostid 0 este folosita pentru a identifica reteaua.

Un alt avantaj semnificativ al acestui tip de adresare este ca include o "adresa de broadcast", care identifica toate statiile unei retele. Astfel o adresa a carei hostid are "1" pe toate pozitiile este rezervata pentru broadcast. Acest tip de adresare se numeste adresare de broadcast directa, deoarece contine atat adresa de retea cat si cea de statie.

Un alt mod de adresare de tip broadcast, numita adresare de broadcast limitata, ofera o adresa de broadcast pentru reteaua locala, indiferent de adresa IP alocata ei. Adresa de broadcast locala este formata din 32 biti de "1". Acest tip de adresare poate fi folosit in rutina de boot-are pentru a afla adresa IP a retelei locale.

Adresa IP de clasa A 127.0.0.0 este rezervata pentru "loopback" si este folosita in testarea comunicatiilor interprocese de pe masina locala. Daca un program foloseste adresa de loopback pentru a trimite date, software-ul pentru protocol al calculatorului returneaza datele fara a le mai trimite pe nici o retea.

Notatia zecimala cu punct

In interfata cu utilizatorul adresele IP sunt scrise ca patru numere intregi zecimale separate prin punct, unde fiecare intreg reprezinta valoarea zecimala a unui octet din adresa IP. Astfel adresa IP

01010000.01010110.01101101.11100111

se scrie

80.86.109.231

4.5 Adrese IP rutabile

Adresele rutabile le asigneaza administratorul de retea al institutiei, din spatiul de adrese pe care il are la dispozitie deja sau pe care il obtine de la RIPE sau de la un "redistribuitor" de adrese local, numit LIR, de exemplu RNC (http://www.rnc.ro). RIPE este autoritatea europeana care aloca IP-uri participantilor la Internet, astfel incat sa nu existe un IP asignat la doi utilizatori diferiti. RIPE aloca unor "Local Internet Registry" (LIR) spatii de adrese pe care acestia le asigneaza catre utilizatori. Spatiul de adrese IPV4 (versiunea actuala de protocol IP, cu adrese IP pe 4 octeti) este asignat in proportie mare, astfel ca RIPE cere o argumentatie solida asupra lor, in cazul in care este posibila o solutie tip masquerade nu se aloca IP-uri rutabile. Fiecare provider mare de Internet are un numar de clase C (de 256 IP-uri) pe care "le anunta" in Internet printr-un protocol numit BGP. Aceste sunt clasele pe care el si clientii sai le au alocate de catre RIPE (in cazul Europei). Protocolul BGP (Border Gateway Protocol) realizeaza transmiterea de catre un ruter catre vecinii sai a routelor pe care le cunoaste. In acest fel, dupa un scurt timp fiecare router afla fiecare routa din Internet. Ruterele de la "periferia" Interetului (care separa cateva retele de restul Internetului) agrega rutele din Internet intr-o singura ruta (ruta default sau 0.0.0.0/0), ignorand spatiile libere (clasele de adrese nefolosite inca). El are uzual o singura conexiune la Internet, iar ruterul cu care este conectat ii este "default gateway". Orice pachet care nu este in lista celor cateva retele pe care le separa de Internet este trimis catre default gateway. Astfel se face ca un pachet spre o destinatie inexistenta in Internet se duce prin cateva rutere, pana la un "core" ruter care cunoaste exact ce clase de adrese sunt accesibile in Internet si abia in acel punct pachetul este dropat si uzual se semnaleaza printr-un pachet ICMP special faptul ca nu exista ruta catre acea destinatie.

In reteaua descrisa sunt 4 IP-uri rutabile

IP-ul Sediu 80.86.109.231;

IP-ul Militari 213.157.163.150;

IP-ul Nerva 80.86.109.235;

IP-ul Depozit 62.231.66.39.

4.6 Maparea adreselor IP in adrese fizice

Adresele IP sunt utilizate pentru a forma un spatiu ierarhic de adrese care poate fiinteles de agentii de rutare din Internet, astfel incat acestia sa poata determina modul in care sa transmita un pachet dintr-o retea in alta. Cand dispozitivele comunica direct pe segmentul de retea local (pe aceeasi “sarma”, deci nivelul fizic), adresa reala utilizata pentru comunicarea intre doua dispozitive, indiferent daca acestea sunt calculatoare, rutere sau orice altceva, este adresa interna de control al accesului la mediu (Media Access Control sau MAC).

4.6.1 Rezolutia adreselor

Sa consideram doua masini A si B care sunt legate la o aceeasi retea fizica. Fiecare are asignata cate o adresa IP IA si IB si cate o adresa fizica PA si PB. Scopul ar fi sa vedem care este rolul software-ului de nivel scazut care ascunde adresele fizice si permite programelor de nivel inalt sa lucreze cu adresele IP ale statiilor. Presupunem ca statia A doreste sa transmita un pachet statiei B prin reteaua fizica la care sunt ambele statii legate, dar statia A cunoaste doar adresa IP IB a statiei B. Intrebarea care se ridica este: Cum se mapeaza o adresa IP in adresa fizica corespunzatoare statiei destinatie?

In acest subcapitol vom lua drept exemplu cazul retelelor Ethernet, pentru ca sunt folosite cu precadere in acest proiect. O placa de retea Ethernet are adresa pe 48 de biti, adresa stabilita de catre producatorul placii, iar aceasta adresa nu poate fi modificata. Ca o consecinta, daca o placa de retea se defecteaza si aceasta se inlocuieste, masina in cauza va avea o alta adresa fizica. Mai mult, deoarece adresa Ethernet este pe 48 de biti, nu este nici o posibilitate de a o codifica pe cei 32 de biti ai adresei IP.

Solutia aleasa permite ca o noua masina sa fie adaugata in retea fara a recompila codul, si nu necesita mentinerea unei baze de date centralizata. Pentru evitarea mentinerii unui tabel de mapare centralizat, proiectantii Internet au ales un protocol de nivel scazut care leaga adresele dinamic. Acest protocol este cunoscut sub numele de "Address Resolution Protocol" (ARP).

Idea pe care se bazeaza rezolutia dinamica cu ARP este simpla. Daca o statia A doreste sa rezolve adresa fizica a statiei B IB, trimite un pachet special prin broadcast la toate statiile din retea, prin care cere statiei cu adresa IP IB sa raspunda cu adresa sa fizica PB. Toate statiile receptioneaza pachetul, dar doar statia B isi recunoaste propria adresa IP si raspunde statiei A, careia ii cunoaste adresa fizica chiar din pachetul receptionat. Dupa ce statia A a receptionat raspunsul va trimite pachetele statiei B folosind adresa ei fizica.

ARP permite unei statii sa afle adresa fizica a unei alte statii conectate la aceeasi retea fizica, furnizand doar adresa IP a statiei destinatie.

Pentru a reduce comunicatiile inutile, statiile care folosesc ARP mentin in cache cele mai recente adresele IP rezolvate si adresele fizice corespunzatoare. Cand o statie primeste un raspuns la o cerere ARP, ea salveaza in cache adresa IP a masinii si adresa fizica corespunzatoare, pentru cautarile ulterioare. Cand statia doreste sa transmita un pachet, ea se uita prima data daca are in cache adresa fizica pentru adresa IP dorita, daca o are o foloseste pe aceasta, iar daca nu o gaseste trimite un pachet ARP, si asteapta raspunsul cu adresa fizica.

Comanda “arp” permite vizualizarea tabelului ARP. De asemenea, poate fi folosita pentru a adauga sau sterge intrari din tabel:

[root@sediu /root]# arp

Address HWtype HWaddress Flags Mask Iface

master.deltadr.ro ether 00:E0:29:66:0B:F7 C eth1

server.deltadr.ro ether 00:50:DA:4A:7C:F1 C eth1

80.86.109.225 ether 00:D0:05:68:98:0A C eth0

dodson.deltadr.ro ether 00:02:B3:50:2F:97 C eth1

[root@sediu /root]#

4.6.2 Implementarea ARP

Din punct de vedere functional ARP este impartit in doua parti. O parte determina adresele fizice prin trimiterea de pachete, iar cealalta parte raspunde cererilor de la alte statii.

Dandu-se o adresa IP destinatie, statia A care doreste sa trimita un pachet consulta cache-ul pentru a vedea daca cunoaste maparea adresei IP in adresa fizica. Daca gaseste adresa fizica pentru statia destinatie B, o foloseste pe aceasta in construirea cadrului pentru Ethernet, incapsuleaza informatia si o transmite statiei destinatie. Daca nu reuseste sa mapeze adresa IP, atunci trebuie sa trimita in broadcast o cerere ARP si asteapta un raspuns. Aici apar insa cateva probleme. Daca statia destinatie nu este pornita sau nu raspunde cererii ARP, atunci statia A nu va primi nici un raspuns si ar trebui sa existe un timp de timeout dupa care sa retransmita cererea ARP. Acest timp de timeout este necesar si pentru cazul in care, datorita coliziunilor, s-ar pierde pachetul cu cererea sau pachetul cu raspunsul.

La nivelul statiei care receptioneaza o cerere ARP, se executa urmatoarele operatii: se extrage din pachetul primit adresa IP si adresa fizica corespunzatoare statiei A, verifica daca acestea exista in cache-ul propriu si in caz ca nu exista le salveaza iar daca exista se suprascrie noua pereche. Daca adresa IP nu este egala cu propria adresa IP acest pachet este ignorat. Daca insa adresa IP este cea a statiei, aceasta construieste un pachet raspuns pentru statia A, pachet care contine si adresa fizica a statiei B, si-l trimite statiei A. Statia A preia pachetul, extrage informatia de mapare a adreselor de care are nevoie, isi actualizeaza cache-ul cu ea si trimite pachetul de date statiei B.

Un mesaj ARP pentru a putea fi trimis trebuie incapsulat intr-un cadru fizic. Aceasta incapsulare este prezentata in figura 6.4.

Figura 6.4

Structura unui pachet ARP nu este fixa. Astfel ca acest protocol poate fi folosit pe mai multe tipuri de retele fizice si pentru maparea mai multor tipuri de adrese de nivel inalt. In figura 7.4 este prezentat un pachet ARP care foloseste adresele IP pe o retea Ethernet.

Figura 7.4

HARDWARE TYPE – tipul interfetei cu reteaua (1 pentru Ethernet);

PROTOCOL TYPE – tipul adreselor de nivel inalt pentru care se face maparea (0800h pentru adrese IP);

OPERATION

1 pentru cerere ARP

2 raspuns ARP

3 cerere RARP

4 raspuns RARP;

HLEN, PLEN – specifica lungimea adresei fizice si respectiv cea a adresei de nivel inalt;

SENDER HA – adresa fizica a statiei care a initiat cererea;

SENDER IP – adresa de nivel inalt a statiei care a initiat cererea;

TARGET HA – adresa fizica a statiei care a primit cererea;

TARGET IP – adresa de nivel inalt a statiei care a primit cererea.

4.6.3 Determinarea adresei IP

Exista situatii in care o statie, dupa boot-are nu isi cunoaste propria adresa IP (este cazul statiilor fara harddisk care comunica prin TCP/IP cu server-ul). Pentru acestea exista "Reverse Address Resolution Protocol" (RARP) prin care este posibila obtinerea adresei IP pe baza adresei fizice a statiei. RARP functioneaza asemanator cu ARP, si foloseste acelasi tip de pachete. Deosebirea fata de ARP consta in aceea ca intr-o cerere RARP se completeaza atat informatiile despre "sender" cat si cele despre "target" cu adresa fizica a statiei care trimite cererea. O cerere RARP este primita de toate statiile din retea dar vor raspunde la ea doar acele statii care au fost configurate ca server-e RARP.

4.7 Red-Hat Linux

Deoarece voi incepe in curand descrierea modului de implementare efectiva a unor servicii, iar sistemul de operare folosit este RedHat Linux, un sistem de operare demn de laudat, se cuvine sa spun cateva cuvinte despre acesta.

Red Hat Linux este una dintre cele mai populare distributii de Linux. Este orientata catre toate nivelele de utilizatori, dar un pic mai mult catre nivelul profesionist. Un incepator va gasi o modalitate usoara de instalare si configurare, conditia fiind sa instaleze Red Hat Linux cu manualul in fata. Utilizatorul profesionist va gasi un mediu de lucru robust si foarte usor de configurat, adaptabil oricaror nevoi. Ceea ce este cel mai avantajos lucru la acest sistem de operare este faptul ca este gratis si ca este free-source.

4.8 Protocolul DCHP(Dynamic Host Configuration Protocol)

Protocolul cel mai larg raspandit care implementeaza RARP este DHCP, un protocol care se bazeaza si il mosteneste pe mai vechiul BOOTP si care permite administratorului sa asigneze setari de retea in mod dinamic clientilor care se conecteaza la retea.

Aceste setari preluate la bootare elimina nevoia de a configura setari de retea cum ar fi DNS, gateway, si adresa IP in partea clientilor. Acest lucru ar fi util de exemplu pentru laptop-uri care sunt utilizate in mai multe retele, dar si prin faptul ca elimina timpii necesari pentru configurarea multor clienti si tine informatiile centralizat pe server. Pe de alta parte, alt avantaj ar fi refolosirea adreselor IP: imediat cum un client se de-logheaza, acelasi adresa IP poate fi cedata urmatorului client. Acelasi mecanism este folosit si de catre providerii de Internet pe liniiile telefonice si chiar pe liniile inchiriate.

4.8.1 Mod de functionare

Cand un client este configurat sa foloseasca DCHP, la bootare difuzeaza pe segmentul sau de retea o cerere DHCPDISCOVER. Daca exista vreun server DHCP care sa asculte, va raspunde cu o DHCPOFFER. Din momentul in care s-au descoperit reciproc, serverul trimite clientului informatii despre cum sa isi configureze setarile de retea, cum ar fi adresa IP, netmask, gateway, si nume de domeniu etc.

Exemplificare din fisierul de loguri: /var/log/messages

Jun 10 08:11:22 sediu dhcpd: DHCPDISCOVER from 00:E0:29:66:0B:F7 via eth1

Jun 10 08:11:22 sediu dhcpd: DHCPOFFER on 10.0.1.37 to 00:E0:29:66:0B:F7 via eth1

Jun 10 08:11:22 sediu dhcpd: DHCPREQUEST for 10.0.1.37 from 00:E0:29:66:0B:F7 via eth1

Jun 10 08:11:22 sediu dhcpd: DHCPACK on 10.0.1.37 to 00:E0:29:66:0B:F7 via eth1

Observam exact pasii din algoritm: anuntare la bootare de la MAC-ul x, oferta de la serverul DHCP pentru MAC-ul x cu adresa IP care a fost citita in prealabil din fisierul de configurare, cererea de IP formulata explicit, si confirmarea de la server, toate pe interfata de retea pe care este configurat sa functioneze serverul.

Exemplificare de test – client Windows 2000, comanda:

C:\ ipconfig –all

Windows 2000 IP Configuration

Host Name . . . . . . . . . . . . : master

Primary DNS Suffix . . . . . . . :

Node Type . . . . . . . . . . . . : Hybrid

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . . : No

DNS Suffix Search List. . . . . . : deltadr.ro

Ethernet adapter Intranet:

Connection-specific DNS Suffix . : deltadr.ro

Description . . . . . . . . . . . : SMC EZ Card 10/100 (SMC1211TX)

Physical Address. . . . . . . . . : 00-E0-29-66-0B-F7

DHCP Enabled. . . . . . . . . . . : Yes

Autoconfiguration Enabled . . . . : Yes

IP Address. . . . . . . . . . . . : 10.0.1.37

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 10.0.1.1

DHCP Server . . . . . . . . . . . : 10.0.1.1

DNS Servers . . . . . . . . . . . : 10.0.0.1

Primary WINS Server . . . . . . . : 10.0.0.1

Lease Obtained. . . . . . . . . . : Monday, June 10, 2002 8:11:22 AM

Lease Expires . . . . . . . . . . : Wednesday, July 10, 2002 8:36:09 AM

4.8.2 Configurare DHCP

Sub Linux, serverul DHCP ruleaza ca un daemon, acronim pentru “Disk And Execution MONitor”, deci se detaseaza de terminal si ruleaza in background, asteptand cererile de configurare de la clienti. Sub RedHat Linux se lanseaza cu comanda:

service dhcpd start,

care apeleaza fisierul /etc/rc.d/init.d/dhcp, care in prealabil trebuie sa fie configurat sa porneasca serverul pentru ascultare numai pe interfetele unde se doreste aceasta alocare dinamica.

Exemplu:

start() {

# Start daemons.

echo -n $"Starting $prog: "

daemon /usr/sbin/dhcpd eth1

}

Fisierul de configurare este /etc/dhcpd.conf, se poate edita cu orice editor ASCII, consta intr-o insiruire de propozitii care pot fi de doua feluri: parametri si declaratii. Se observa din parcurgerea acestor optiuni ca un client care are acces la acest server DHCP este configurat complet fara nici o interventie umana.

option domain-name "deltadr.ro";

Numele de domeniu al organizatiei

option domain-name-servers 10.0.1.1;

Serverul de nume existent pe segmentul de retea

option netbios-name-servers 10.0.1.1;

Serverul de nume NETBIOS folosite de SAMBA, FILE SHARING, practic se refera la omologul serverului de WINS din Windows

option broadcast-address 10.0.1.255;

Adresa de broadcast a subretelei

option subnet-mask 255.255.255.0;

Masca de subretea a segmentului de retea pe care opereaza DCHP-ul . Aici este o adresa /24, adica de clasa C

default-lease-time 2590000;

Parametrul este numarul de secunde care va fi alocat inchirierii daca clientul nu cere o perioada specifica de expirare… aici aproximativ o luna.

max-lease-time 2592000;

Parametrul este numarul de secunde care va fi alocat inchirierii daca clientul cere o perioada specifica de expirare..

deny bootp;

Flag-ul bootp este folosit pentru a comunica dhcpd-ului daca sa raspunda sau nu la cereri bootp.

authoritative;

Serverul DHCP in mod normal va presupune ca informatia de configurare despre un segment de retea dat este corecta si ca poate fi autoritar. Deci daca un client cere o adresa IP pe un segment de retea dat pe care serverul stie ca nu este valida, va raspunde cu un mesaj DHCPNAK, fortand clientul sa uite acea adresa IP si sa incerce sa procure o alta noua. Daca serverul DHCP este configurat de catre cineva care nu este administratorul de retea si nu doreste sa preia acest nivel de autoritate, atunci ar trebui precizat prin declaratia : “not authoritative” in pozitia potrivita a fisierului de configurare.

option routers 10.0.1.1;

Lista de IP-uri este o lista cu rutere prezenta pe segmentul de retea vizat si trebuie scrise in ordinea preferintelor. In cazul de fata este vorba numai de un ruter care joaca si rolul de gateway.

use-host-decl-names on;

In cazul de fata in care este activat acest parametru pentru fiecare declaratie de gazda din interiorul zonei sale de actiune numele precizat in declaratia de host va fi furnizat clientului ca fiind numele sau de gazda.

subnet 10.0.1.0 netmask 255.255.255.0 {

range 10.0.1.200 10.0.1.254;

}

Pentru o adresa MAC pe care nu o recunoaste ,dhcpd-ul va aloca o adresa intre 10.0.1.200 si 10.0.1.254

;––––––––––––––––––––

group {

host master.deltadr.ro {

hardware ethernet 00:E0:29:66:0B:F7;

fixed-address master.deltadr.ro;

}

}

group {

host dodson.deltadr.ro {

hardware ethernet 00:02:B3:50:2F:97;

fixed-address dodson.deltadr.ro;

}

}

………………………………………………………………..

(s.a.m.d)

Se observa ca in campul fiecarui host atribuirea de adrese nu se face pe IP ci pe numele DNS pentru a usura munca de configurare a unui client. Observam ca modificarile pe care le facem in DNS vor influenta direct atribuirea de adrese IP clientilor.

Pentru a tine evidenta inchirierilor de adrese in timpul reboot-arilor de sistem si a restartarii serverului, dhcpd-ul mentine o lista de inchirieri in fisierul /var/lib/dhcp/dhcpd.leases, iar o inchiriere are urmatoarea forma:

lease 10.0.1.230 {

starts 5 2002/06/14 13:25:43;

ends 0 2002/07/14 12:52:23;

hardware ethernet 00:e0:29:66:09:ad;

uid 01:00:e0:29:66:09:ad;

client-hostname "Marketing4";

}

Inainte ca dhcpd-ul sa ofere o inchiriere unei gazde (host), el inregistreaza actiunea in acest fisier si se asigura de salvarea continutului acestuia pe disc. Asta asigura ca fie si in eventualitatea blocarii sistemului, dhcpd nu va uita despre o inchiriere asignata.

4.9 Implementarea Serviciului de Dial-in bazat pe PPP

In proiectarea serviciului de dial-in s-a tinut cont de numarul de filiale care pot fi concurente in obtinerea unei legaturi punct la punct si am decis ca 3 linii de conectare sunt suficiente pentru o functionare normala.

Pentru o setare unica a conectarii la client s-a optat pentru obtinerea unui trunchi de hunting de la Romtelecom care alocand 3 linii telefonice cu cele trei numere aferente, desemneaza unul din numere ca fiind cap de hunting. Toti utilizatorii care se conecteaza prin modem telefonic suna pe acest numar si din centrala Romtelecom se face redirectarea automata pe unul dintre cele trei numere care nu sunt ocupate.

Pe ruterul de la sediu, un PC clasic s-a instalat pe o interfata PCI o placa seriala multiport Cyclades Cyclom YeP, care se conecteaza cu un cablu SCSI 2 la un modul extern SM8, care are 8 mufe DB-25 seriale, unde s-au conectat 3 modemuri clasice US Robotics de 56 kbps.

Avand ca premisa instalarea pachetelor pppd si mgetty, primul fiind demonul care administreaza legaturi punct la punct si al doilea fiind un program de gestiune a terminalelor pe care lucreaza cu aceste legaturi, ramane de facut configurarea propriu-zisa.

Pentru partea de securitate este prezenta autentificarea PAP descrisa in subcapitolul 4.9.1:

4.9.1 Autentificarea PAP

Protocolul de autentificare prin parola (Password Authentication Protocol (PAP)) ofera o metoda simpla unei parti pentru a-si stabili identitatea folosing o conversatie in doua directii. Aceasta are loc in timpul stabilirii initiale a legaturii. Pachetul PAP este incapsulat in campul de Informatii a cadrulul de la nivelul legatura de date atunci cand campul de protocol indica tipul in hexazecimal c023. Structura pachetului PAP este descrisa in figura urmatoare:

Codul poate lua una din valorile:

1 – cerere de autentificare;

2 – acceptare a autentificarii;

3 – refuz al autentificarii.

Identificatorul ajuta la potrivirea cererilor si replicilor, iar campul de Lungime indica lungimea pachetului PAP incluzand toate campurile din figura de mai sus.

Campul de date poate avea zero sau mai multi octeti in functie de ceea ce contine campul Cod:

Pentru cererea de autentificare (1) campul de date arata astfel:

Pentru acceptarea/refuzul autentificarii campul de date are urmatorul format:

4.9.2 Configurare PPP sub RedHat Linux

Fisierul de configurare generala a ppp-ului pe RedHat Linux este:

/etc/ppp/options

lock

Specifica faptul ca pppd trebuie sa creeza un fisier de blocare a echipamentului serial pentru a asigura acces exhaustiv la acesta.

logfile /var/log/pppd.log

Fisierul unde se inregistreaza logurile referitoare la conectari

ms-dns 10.0.0.1

ms-dns 193.231.236.17

ms-dns 193.231.236.10

Serverele de DNS pe care le comunica partenerului care se conecteaza

/etc/ppp/ppplogin

#!/bin/sh

mesg n

stty –echo

Dezactiveaza aparitia caracterelor de ecou la consola

/usr/sbin/pppd -detach 57600 silent modem crtscts auth +pap -chap login

/etc/ppp/pap-secrets

* * "" *

Secrete pentru autentificarea folosind PAP de forma:

client server secret adrese IP

Nu se folosesc pentru ca este folosita optiunea “login” care forteaza PAP-ul sa admita ca fisier de parole /etc/passwd.

/etc/ppp/options.ttyC0:2

auth

Cere partenerului ppp sa se autentifice inainte de a permite pachete sa circule.

require-pap

Cere metoda de PAP (Password Authentication Protocol descrisa mai jos) pentru autentificarea partenerului.

refuse-chap

Refuza metoda CHAP (Chalenge Handshake Authentication Protocol) pentru autentificarea partenerului.

crtscts

Foloseste controlul de flux hardware RTS/CTS pentru datele care circula pe portul serial

10.0.0.1:10.1.1.1

Pereche punct la punct : ruter sediu : calculator conectat pe primul terminal ttyC0

debug

Activeaza facilitatile de debug ale conexiunilor, logand continutul pachetelor de control trimise sau primite intr-o forma lizibila.

/etc/mgetty+sendfax/login.config

/AutoPPP/ – a_ppp /usr/sbin/pppd auth -chap +pap login debug

Porneste pppd-ul cu userul impus a_ppp, cu autentificare PAP si fara autentificare CHAP, login inseamna ca fisierul pap-secrets nu va fi folosit ci in schimb va fi folosit /etc/passwd, chiar fisierul cu userii sistemului (parolele lor sunt in fisierul /etc/shadow), unde o intrare e de forma:

piatraneamt_m:x:594:44:PiatraNeamt-Magazin:/home/piatraneamt_m:/usr/lib/linuxconf/lib/ppplogin

adrian:x:638:500:Adrian Ghioc (Bucuresti-admin.retea):/home/adrian:/bin/bash

/etc/mgetty+sendfax/mgetty.config

speed 38400

Seteaza viteza pe care va functiona mgetty-ul.

/etc/inittab – fisierul care incarca terminalele si stabileste modurile de rulare ale Linuxului, un fisier foarte important.

………………………………………………..

m1:12345:respawn:/sbin/mgetty -D /dev/ttyC0

m2:12345:respawn:/sbin/mgetty -D /dev/ttyC1

m3:12345:respawn:/sbin/mgetty -D /dev/ttyC2

Pornesc mgetty pentru cele 3 modemuri

……………………………………………….

/etc/sysconfig/static-routes

ppp+ net 10.1.1.0 netmask 255.255.255.0 gw 80.86.109.231

Trebuie adaugate rute pentru conectare pentru a ruta eficient pachetele venind din retelele interne spre capatul opus ruterului pentru ca acesta poate fi la randul sau ruter, fie el Windows 98 pentru reteaua LAN a filialei. Daca ar fi fost numai calculatoare singulare ar fi fost usor de setat, folosind optiunea “proxyarp” in /etc/ppp/options.ttyCx care seta o intrare ARP in tabela ruterului care spunea practic: “ trimiteti toate pachetele destinate clientului ppp mie”.

Descriu in continuare o conectare a unei filiale la sediu, mesajele de pe ruterul din sediu si configuratia de pe ruterul Windows 98 Second Edition al filialei. Urmarim fisierul de loguri in direct in timp ce se conecteaza magazinul din Piatra Neamt:

[root@sediu /etc]# tail –f /var/log/messages

Jun 22 14:33:36 sediu mgetty[1989]: data dev=ttyC1, pid=1989, caller='none', conn='38400', name='', cmd='/usr/sbin/pppd', user='/AutoPPP/'

Jun 22 14:33:36 sediu pppd[1989]: pppd 2.4.0 started by a_ppp, uid 0

Jun 22 14:33:36 sediu pppd[1989]: Using interface ppp0

Jun 22 14:33:36 sediu pppd[1989]: Connect: ppp0 <–> /dev/ttyC0

Jun 22 14:33:40 sediu ppp(pam_unix)[1989]: session opened for user piatraneamt_m by a_ppp(uid=0)

Jun 22 14:33:40 sediu pppd[1989]: user piatraneamt_m logged in

Jun 22 14:33:40 sediu pppd[1989]: local IP address 10.0.0.1

Jun 22 14:33:40 sediu pppd[1989]: remote IP address 10.1.1.1

Jun 22 14:33:40 sediu pppd[1989]: CCP terminated by peer

Jun 22 14:33:40 sediu pppd[1989]: Compression disabled by peer.

Jun 22 14:35:49 sediu pppd[1989]: LCP terminated by peer

Jun 22 14:35:50 sediu pppd[1989]: Hangup (SIGHUP)

Jun 22 14:35:50 sediu pppd[1989]: Modem hangup

Jun 22 14:35:50 sediu ppp(pam_unix)[1989]: session closed for user piatraneamt_m

Jun 22 14:35:50 sediu pppd[1989]: Connection terminated.

Jun 22 14:35:50 sediu pppd[1989]: Connect time 2.3 minutes.

Jun 22 14:35:50 sediu pppd[1989]: Sent 6932 bytes, received 88557 bytes.

Jun 22 14:35:50 sediu pppd[1989]: Exit.

[root@sediu log]# ifconfig ppp0

ppp0 Link encap:Point-to-Point Protocol

inet addr:10.0.0.1 P-t-P:10.1.1.1 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1

RX packets:453 errors:0 dropped:0 overruns:0 frame:0

TX packets:541 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

Interfata ppp0 este activa:

[root@sediu log]# route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

modem1.deltadr.ro * 255.255.255.255 UH 0 0 ppp0

Exista ruta spre clientul PPP.

Figura 8.4 – Comanda “winipcfg” pe clientul ppp Windows98SE.

In Piatra Neamt o comanda “winipcfg” si selectarea casutei “PPP adapter” si apoi butonului “More Info” produce rezultatul din figura 8.4. In momentul acesta clientul are conectivitate totala cu reteaua mare interna, are legatura cu serverul de gestiune, are conectare la Internet, etc.

4.10 Subretele

Structura standard a unei adrese IP poate fi modificata local prin folosirea bitilor pentru adresa statiei ca biti suplimentari pentru adresa de retea. Prin aceasta se creaza mai multe retele, prin reducerea numarului maxim de statii ce apartin fiecarei retele nou create. Aceste retele nou create se numesc subretele.

Folosirea subretelelor:

permite un management decentralizat al adresarii statiilor;

rezolvarea diferentelor hardware si a limitarii distantelor.

Din punct de vedere conceptual, impartirea in subretele schimba doar interpretarea unei adrese IP. Astfel, in loc de a imparti adresa IP intr-un prefix corespunzator retelei si un sufix pentru adresa statiei, adresa se imparte intr-o portiune corespunzatoare retelei si una corespunzatoare statiei. Partea de retea fizica se trateaza doar local; doar gateway-ul local stie ca sunt mai multe retele fizice si ruteaza traficul intre ele.

Figura 9.4

Standardul specifica ca pentru un site care foloseste subretelele trebuie specificata cate o masca pentru fiecare subretea. In aceasta masca sunt setati pe 1 bitii corespunzatori adresei retelei si sunt pe 0 pentru portiunea corespunzatoare adresei statiei.

Adresele IP identifica o conexiune si nu o statie, astfel ca o statie cu mai multe conexiuni de retea va avea mai multe adrese IP.

Adresele IP speciale sunt prezentate in figura 10.4:

Figura 10.4

4.11 Rutarea datagramelor IP

Intr-un sistem bazat pe comutarea de pachete prin "rutare" (routing) se intelege procesul de alegere a unei cai pe care se va trimite pachetul pentru o anumita destinatie; iar "ruter" este orice statie care poate lua o astfel de decizie. Algoritmul de rutare IP trebuie sa aleaga modul in care se va trimite o datagrama prin o multitudine de retele fizice.

Rutarea in internet poate fi dificila, in special pentru masinile care au conexiuni de retea multiple. Ideal software-ul de rutare atunci cand cauta o cale, ar trebui sa examineze: incarcarea retelei, lungimea datagramei, tipul de serviciu specificat in header-ul datagramei.

Pentru a intelege procesul de rutare IP trebuie sa privim din nou la arhitectura unei retele TCP/IP. Internet-ul este compus dintr-o multitudine de retele fizice interconectate prin sisteme numite gateway. Fiecare gateway are o conexiune directa la doua sau mai multe retele. Spre deosebire de un gateway, o statie are doar o singura conexiune (de obicei).

Atat statiile cat si gateway-urile participa in procesul de rutare. O statie trebuie sa ia decizii de rutare, chiar daca are o singura conexiune de retea, atunci cand alege unde va trimite o datagrama. Un gateway care poate lua si decizii de rutare se numeste "ruter" (de obicei orice gateway functioneaza si ca ruter).

Distribuirea directa si indirecta

Rutarea directa (direct routing) – transmiterea unei datagrame direct de la o masina la alta. Acest lucru este posibil doar daca ambele statii sunt legate la aceeasi retea fizica. Transmiterea unei datagrame IP intre doua masini conectate la aceeasi retea fizica nu implica nici un gateway. Transmitatorul incapsuleaza datagrama intr-un cadru fizic, construieste adresa fizica din adresa IP si transmite cadrul rezultat direct la destinatie. Pentru a afla daca a anumita statie este legata la aceeasi retea fizica putem folosi campul ce codifica reteaua din adresa IP, care se compara cu adresa de retea a statiei curente. Daca cele doua adrese sunt egale inseamna ca statia destinatie se afla conectata la aceeasi retea fizica.

Rutarea indirecta (indirect routing) – destinatia nu este atasata la aceeasi retea fizica cu sursa, fortand statia sursa sa trimita datagramele prin cel putin un gateway. Rutarea indirecta este mai dificila decat cea directa deoarece statia transmitatoare trebuie sa identifice un gateway caruia sa-i trimita datagrama. Gateway-ului ii revine apoi sarcina de a trimite datagrama catre destinatia sa finala.

Gateway-urile intr-o retea internet TCP/IP formeaza o structura cooperativa interconectata. Datagramele trec de la gateway la gateway pana cand ajung la un gateway care are posibilitatea sa le trimita direct statiei destinatie.

Acum se ridica doua intrebari:

de unde stie un gateway unde sa trimita fiecare datagrama?

de unde stie o statie ce gateway sa aleaga pentru o anumita destinatie?

4.12 Tabela de rutare

Algoritmul de rutare uzual folosit foloseste o "tabela de rutare Internet" (Internet routing table) pe fiecare masina care stocheaza informatii despre posibilele destinatii si cum se ajunge la ele. Deoarece atat statiile cat si gateway-urile ruteaza datagrame, ambele vor avea tabele de rutare.

Pentru a ascunde informatiile despre statiile destinatie, pentru a mentine tabela de rutare de dimensiuni mici si pentru a face rutarea eficienta, software-ul de rutare IP pastreaza doar informatii despre adresele de retea pentru destinatii si nu despre statiile destinatie. Tipic, un tabel de rutare contine perechi (N, G), unde N este adresa IP a retelei destinatie, iar G este adresa IP a urmatorului gateway in calea spre destinatie. Acest gateway trebuie sa fie legat la aceeasi retea fizica cu statia in a carei tabela de rutare este prezent.

Folosirea adreselor de retea in tabelele de rutare are urmatoarele consecinte:

tot traficul pentru o anumita retea destinatie va urma aceeasi cale, deci chiar daca exista mai multe cai acestea nu vor fi folosite concurent si nici nu tin seama de intarzierea pe celelalte cai care ar exista;

deoarece doar ultimul gateway poate comunica direct cu destinatia, numai acesta poate determina daca statia destinatie exista sau nu si daca este operationala.

deoarece fiecare gateway ruteaza datagramele independent este posibil ca datagramele trimise de o statie A spre o alta statia B sa urmeze alta cale decat cele trimise de statia B spre statia A.

Rute implicite si rute specifice

O alta tehnica de a ascunde informatia si de a pastra tabela de rutare mica consta in strangerea intrarilor multiple intr-o intrare "default". Se va folosi un gateway implicit pentru acele destinatii care nu apar in tabela de rutare. Aceste rute implicite sunt utile in cazul site-urilor cu un numar mic de adrese locale si cu o singura conexiune cu exteriorul.

In tabela de rutare pot exista si intrari pentru adrese de statii destinatie, numite rute specifice. Acestea ofera administratorului de retea un control mai mare asupra folosirii retelei si pot fi folosite si pentru securitate.

4.13 Algoritmul de rutare

Ruteaza_Datagrama_IP (datagrama, tabela_de_rutare)

Extrage adresa IP destinatie, ID, din datagrama

Calculeaza adresa IP a retelei destinatie, IN

daca IN se potriveste cu vreo adresa de retea direct conectata

rezolva ID intr-o adresa fizica;

incapsuleaza datagrama intr-un cadru;

trimite datagrama la destinatie folosind acea retea;

altfel daca ID apare intr-o ruta specifica spre o gazda

ruteaza datagrama dupa cum este specificat in tabela;

altfel daca IN apare in tabela de rutari

ruteaza datagrama dupa cum este specificat in tabela;

altfel daca o ruta implicita a fost specificata

ruteaza datagrama catre ruta implicita;

altfel declara o eroare de rutare;

4.14 Prelucrarea datagramelor receptionate

Cand o statie receptioneaza o datagrama, software-ul de retea o transmite software-ului IP pentru procesare. Daca adresa destinatie a datagramei coincide cu adresa IP a statiei, datagrama este acceptata si este trimisa spre procesare nivelului imediat superior. Daca adresele nu se potrivesc datagrama va fi eliminata.

In cazul gateway-urilor daca adresa IP destinatie din datagrama nu coincide cu cea proprie, datagrama este trimisa software-ului de rutare IP, care va realiza transmiterea mai departe a datagramei.

4.15 Retea Virtual Privata (VPN)

Notiunea de VPN (Virtual Private Network – Retea Privata Virtuala) defineste o astfel de solutie prin care se asigura confidentialitatea datelor vehiculate printr-un mediu public (cum ar fi Internet-ul). Securitatea datelor se poate realiza in mai multe moduri, determinand gradul de securitate al acelui VPN.

Motivatia de baza pentru construirea unui VPN este reducerea costurilor legate de comunicatii pentru ca este mult mai ieftin sa se foloseasca o singura legatura fizica comuna pentru servirea mai multor clienti din retea decat sa se utilizeze legaturi separate pentru fiecare client din reteaua privata.

O alta motivatie pentru VPN este asigurarea confidentialitatii datelor. Nivelul de securitate din retea este dat de nivelul de securitate necesar organizatiei care implementeaza VPN si se pot folosi mecanisme complexe, caracteristice VPN, pentru a asigura nivele inalte de securitate. Implementarea VPN depinde, in mare masura, de tehnologiile folosite. Daca presupunem ca se vehiculeaza date criptate intre subretelele retelei virtuale private se poate spune ca nivelul de securitate in VPN este relativ ridicat.

O alta caracteristica a VPN este crearea unei retele comune unind toate subretelele companiei sau organizatiei respective, subretele care sunt raspandite de regula pe intinderi geografice relativ mari.

Definitie: retelele virtual private reprezinta un mod de a conecta locatii aflate la distanta (filiale, utilizatori mobili, clienti, furnizori etc.) intr-o unica retea virtuala, asigurandu-se mecanisme de securitate. In foarte scurt timp, oricine poate fi conectat la aceasta retea virtuala a companiei intr-un fel in care se respecta normele de securitate implementate in interiorul respectivei retele. Toate acestea se obtin prin reducerea costurilor implicate de comunicatii cu aproximativ 80% fata de variantele clasice ce presupuneau folosirea liniilor inchiriate la mare distanta.

4.15.1 Realizare VPN

Pentru a realiza un VPN se foloseste un mediu public de transmisie – in cazul cel mai des intalnit, care este si cazul proiectului acestade exemplu, Internet-ul – in locul liniilor dedicate care sunt foarte scumpe. Prin folosirea serviciilor unui asa numit furnizor de servicii Internet (ISP – Internet Service Provider) se realizeaza foarte rapid conectarea la Internet. Pentru ca acesti ISP sunt foarte raspanditi, se pot alege in functie de zona geografica in care se afla sediul central sau filialele companiei, asigurandu-se pentru fiecare din acestea o conectare ieftina la Internet prin dial-up sau linie inchiriata locala – in functie de marimea si necesitatile de comunicatie ale biroului sau filialei respective. Spre exemplu, fiecare conectare la Internet prin dial-up implica doar costul unei convorbiri locale (cu ISP-ul local). Prin folosirea unor mecanisme de securitate se asigura confidentialitatea datelor. Se pot folosi mecanisme de criptare a datelor vehiculate, ceea ce inseamna ca numai expeditorul care poseda cheia de criptare si destinatarul care poseda cheia de decriptare pot avea acces la date.

4.15.2 Functionarea VPN

Virtual Private Network rezolva cea mai stringenta problema a Internet-ului: asigurarea confidentialitatii datelor prin criptarea si incapsularea datelor in timpul transmiterii. Datele sunt comprimate si apoi incapsulate pentru a ascunde adresa fiecarui pachet. Datele incapsulate sunt transmise printr-un tunel sigur care este initializat la fiecare sesiune de transmisie date. Acest tunel se foloseste pentru a transmite numai date din interiorul VPN. Datorita faptului ca aplicatia de gestiune ofera mijloace de autentificare a utilizatorului in ceea ce o priveste, am considerat ca nu este necesara o autentificare suplimentara si tunelele sunt accesibile oricui din reteaua interna.

La capatul celalalt al tunelului – reteaua locala a companiei – datele sunt autentificate, reasamblate si rutate catre calculatorul din retea caruia i-au fost destinate. Datele din tunel sunt inaccesibile altor utilizatori din Internet, eliminandu-se astfel posibilitatea de interceptarea a pachetelor de date.

4.15.3 Protocolul GRE

Trimiterea unor anumite portiuni de trafic de-a lungul unui tunel este o alta metoda de a construi VPN, o metoda dintre cele mai folosite. Cel mai comun mecanism de implementare a tunelului este GRE, un acronim pentru Generic Routing Encapsulation (Incapsulare Generica la Rutare), un protocol dezvoltat de Cisco care uneste o sursa cu destinatia, acestea putand fi reprezentate prin rutere sau calculatoare host.

Cum functioneaza mecanismul ?

Acest GRE tunneling este, in general, configurat intre un ruter sursa si un ruter destinatie, astfel incat pachetele de date care trebuie transmise prin acest tunel (pachete care sunt deja incapsulate si au deja un header corespunzator protocolului) sunt din nou incapsulate intr-un nou pachet care are un nou header si care are ca adresa de destinatie capatul celalalt al tunelului. Cand aceste pachete ajung la destinatie, pachetul este decapsulat – ramanand astfel doar pachetul original care este condus mai departe catre destinatia sa – de obicei un calculator din reteaua care se gaseste la acest capat al tunelului.

GRE este un protocol de la nivelul transport, avand codul de protocol 47 si fiind descris de documentul RFC 1701 si 2784. Versiunea folosita este cea mai veche, versiunea 0, care nu are in antet informatii despre userul caruia ii este destinat pachetul, ceea ce nici nu ne intereseaza la modul in care folosim tunelele.

Formatul de transport al unui pachet GRE este urmatorul:

Antetul GRE 0 arata astfel:

C. Prezenta sumei de control. 1 bit.
Daca e setata, atunci campul Suma de control este prezent si contine informatie valida. Daca sunt setate fie Prezenta sumei de control fie bitul de prezenta a rutarii, sunt prezente campurile de Suma de control si de Offset.

R. Prezenta rutarii. 1 bit.
Daca e setata, atunci campul Offset este prezent si contine informatie valida. Daca sunt setate fie Prezenta sumei de control fie bitul de prezenta a rutarii, sunt prezente campurile de Suma de control si de Offset.

K. Prezenta cheii. 1 bit.
Daca este setat, atunci campul Cheie este prezent si contine informatie valida.

S. Prezenta numarului de secventa. 1 bit.
Daca este setat, atunci campul Numar de secventa este prezent si contine informatie valida.

s. rutare stricta la sursa 1 bit. Recur, Controlul Recursiei 3 biti, intreg fara semn.

Contine numarul incapsularilor aditionale care sunt permise (0 implicit)

Flaguri. 5 biti.
Acesti biti sunt rezervati si trebuie transmisi ca 0.

Versiune. 3 biti.
Versiunea protocolului GRE. Must be set to 0.

Protocol. 8 biti.
Contine tipul protocolului din pachetul incapsulat.

Suma de control.16 biti.
Optionala. Contine suma de control a antetului GRE si a incarcaturii.

Cheie. 32 de biti

Optionala. Contine un numar care a fost inserat de catre incapsulator. Poate fi folosit pentru primitor sa autentifice sursa pachetului.

Numar de secventa. 32 de biti, intreg fara semn.

Optional. Contine un numar care a fost inserat de catre incapsulator. Poate fi folosit de catre primitor pentru a stabili ordinea in care pachetele au fost transmise.

Rutare. Lungime variabila

4.16 Implementare tunele

Scriptul de configurare al celor trei tunele de la Sediu este etc/tunel/tunel:

#!/bin/bash

/sbin/insmod ip_gre

/sbin/ip tunnel add tuneld mode gre local 80.86.109.231 remote 62.231.66.39 ttl 254

/sbin/ip tunnel add tunelm mode gre local 80.86.109.231 remote 213.157.163.150 ttl 254

/sbin/ip tunnel add tuneln mode gre local 80.86.109.231 remote 80.86.109.235 ttl 254

Adauga trei interfete software.

/sbin/ip link set tunelm up

/sbin/ip link set tuneld up

/sbin/ip link set tuneln up

Activeaza interfetele.

/sbin/ip addr add 192.168.2.1/30 dev tuneld

/sbin/ip addr add 192.168.3.1/30 dev tunelm

/sbin/ip addr add 192.168.4.1/30 dev tuneln

Seteaza adresele IP ale capetelor locale de tunel.

/sbin/route add -net 10.0.2.0 netmask 255.255.255.0 gw 192.168.2.2

/sbin/route add -net 10.0.3.0 netmask 255.255.255.0 gw 192.168.3.2

/sbin/route add -net 10.0.4.0 netmask 255.255.255.0 gw 192.168.4.2

Seteaza rutele spre LAN-urile celor trei puncte de lucru din Bucuresti

Scriptul care dezactiveaza tunelele de la Sediu este /etc/tunel/joscuel:

#!/bin/bash

/sbin/route del -net 10.0.2.0 netmask 255.255.255.0 gw 192.168.2.2

/sbin/route del -net 10.0.3.0 netmask 255.255.255.0 gw 192.168.3.2

/sbin/route del -net 10.0.4.0 netmask 255.255.255.0 gw 192.168.4.2

/sbin/ip addr del 192.168.2.1/30 dev tuneld

/sbin/ip addr del 192.168.3.1/30 dev tunelm

/sbin/ip addr del 192.168.4.1/30 dev tuneln

/sbin/ip tunnel del tuneld mode gre local 80.86.109.231 remote 62.231.66.39 ttl 254

/sbin/ip tunnel del tunelm mode gre local 80.86.109.231 remote 213.157.163.150 ttl 254

/sbin/ip tunnel del tuneln mode gre local 80.86.109.231 remote 80.86.109.235 ttl 254

Rezultatul se poate vedea cu ajutorul urmatoarei comenzi:

[root@sediu /root]# ip tu show

gre0: gre/ip remote any local any ttl inherit nopmtudisc

tuneld: gre/ip remote 62.231.66.39 local 80.86.109.231 ttl 254

tunelm: gre/ip remote 213.157.163.150 local 80.86.109.231 ttl 254

tuneln: gre/ip remote 80.86.109.235 local 80.86.109.231 ttl 254

Putem testa legatura cu ajutorul comenzii “mtr” (Matt’s traceroute):

[root@sediu /root]# mtr 213.157.163.150

sau mai explicit,

[root@sediu /root]# mtr 213.157.163.150 –n

Timpii sunt exprimati in milisecunde.

Pentru un capatul de tunel de la punctul de lucru din depozit de exemplu scriptul de configurare este /etc/tunel/tunel :

#!/bin/bash

/sbin/insmod ip_gre

Modulul de GRE

/sbin/route add -host 80.86.109.231 gw 62.231.66.1

Ruta pentru ca IP-ul Sediului sa fie vizibil dupa ce ruta implicita va fi schimbata

/sbin/ip tunnel add tunel mode gre remote 80.86.109.231 local 62.231.66.39 ttl 254

Adaugarea interfetei tunel

/sbin/ip link set tunel up

Activarea interfetei tunel

/sbin/ip addr add 192.168.2.2/30 dev tunel

Setarea adresei IP a capatului de tunel

/sbin/route del defaul

Stergerea rutei implicitet

/sbin/route add default gw 192.168.2.1

Adaugarea rutei implicite pe capatul de tunel de la sediu

De acum pachetele care nu vor intalni in ruter o ruta specifica vor urma calea capatului de tunel adica vor fi rutate implicit spre ruterul de la sediu, iar de acolo daca nu vor intalni rute interne vor fi rutate pe Internet. Asta este si modul in care se iese pe Internet dintr-un LAN al unui punct de lucru.

Scriptul de dezactivare este /etc/tunel/joscuel :

#!/bin/bash

/sbin/ip addr del 192.168.2.2/30 dev tunel

/sbin/ip tunnel del tunel mode gre remote 80.86.109.231 local 62.231.66.39 ttl 254

/sbin/route del default

/sbin/route add default gw 62.231.66.1

Rezultatul

[root@depozit tunel]# ip tu show

gre0: gre/ip remote any local any ttl inherit nopmtudisc

tunel: gre/ip remote 80.86.109.231 local 62.231.66.39 ttl 254

Testam functionarea rutelor externe, de exemplu adresa bursa.rol.ro:

[root@depozit /root]# mtr bursa.rol.ro

Hostname %Loss Rcv Snt Last Best Avg Worst

1. s-d.deltadr.ro 0% 4 4 2 2 2 3

2. bucharest-cr1-fe3-4.rdsnet.ro 0% 4 4 4 4 4 5

3. pcnet.iex.ro 0% 4 4 7 5 6 7

4. bursa.rol.ro 0% 4 4 5 4 6 8

sau, mai clar de citit cand vine vorba de adrese IP,

[root@depozit /root]# mtr bursa.rol.ro -n

Hostname %Loss Rcv Snt Last Best Avg Worst

1. 192.168.2.1 0% 14 14 3 2 4 17

2. 212.93.133.1 0% 13 13 4 4 5 12

3. 194.102.255.231 0% 13 13 4 4 6 13

4. 213.154.128.151 0% 13 13 5 4 5 8

4.17 Topologia logica a retelei

In figura 11.4 am prezentat topologia logica a retelei, unde am reprezentat interfetele, adresele IP, ruterele, LAN-urile interne si utilizatorii mobili.

Figura 11.4 – Topologia logica a retelei.

Configurarea ruterului de la Sediul Central:

[root@sediu /root]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.1.1.3 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1

10.1.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 ppp2

10.1.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0

192.168.4.0 0.0.0.0 255.255.255.252 U 0 0 0 tuneln

192.168.3.0 0.0.0.0 255.255.255.252 U 0 0 0 tunelm

192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tuneld

80.86.109.224 0.0.0.0 255.255.255.240 U 0 0 0 eth0

10.0.4.0 192.168.4.2 255.255.255.0 UG 0 0 0 tuneln

10.0.3.0 192.168.3.2 255.255.255.0 UG 0 0 0 tunelm

10.0.2.0 192.168.2.2 255.255.255.0 UG 0 0 0 tuneld

10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo

0.0.0.0 80.86.109.225 0.0.0.0 UG 0 0 0 eth0

Pentru adresele 10.1.1.X, 192.168.X.Y, 10.0.1.X, 10.0.0.X si 127.0.0.X nu este nevoie de precizarea explicita a unei rute deoarece sunt ruterul are o interfata mai mult sau mai putin fizica pentru fiecare din ele. La fel si pentru 80.86.109.224, care este reteaua WAN externa a providerului si din care face parte ruterul prin interfata sa externa eth0.

Rutarile se pornesc cu urmatoarele scripturi :

/etc/rc.d/rc.local

……………………….

sh /etc/tunel/tunel

/etc/sysconfig/network-scripts/*ifcfg-eth-0

DEVICE="eth0"

BOOTPROTO="none"

IPADDR="80.86.109.231"

NETMASK="255.255.255.240"

ONBOOT="yes"

DOMAIN=deltadr.ro

/etc/sysconfig/network-scripts/*ifcfg-eth-1

DEVICE="eth1"

ONBOOT="yes"

IPADDR="10.0.1.1"

NETWORK=10.0.1.0

BROADCAST="10.0.1.255"

NETMASK="255.255.255.0"

/etc/sysconfig/network-scripts/ifcfg-eth-1:0

IPADDR="10.0.0.1"

NETMASK="255.255.255.0"

/etc/sysconfig/network-scripts/ifcfg-eth-lo

DEVICE=lo

IPADDR=127.0.0.1

NETMASK=255.0.0.0

NETWORK=127.0.0.0

BROADCAST=127.255.255.255

ONBOOT=yes

NAME=loopback

BOOTPROTO=none

/etc/sysconfig/network-scripts/static-routes

ppp+ net 10.1.1.0 netmask 255.255.255.0 gw 80.86.109.231

Mentinere rutelor se face utilizand daemonul crond care se autoapeleaza la o perioada mica de timp si executa anumite comenzi:

/root/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

* 0 * * * sh /etc/tunel/tunel > /dev/null 2>&1

In fiecare zi la ora 0 porneste tunelul.

*/5 * * * * /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg.cfg 1> /dev/null 2> /dev/null –logging /var/log/mrtg.log

La fiecare 5 minute executa mrtg-ul, un program care face poze ale traficului si le afiseaza pe pagina Web.

*/5 * * * * ping -c 3 m-s.deltadr.ro > /dev/null 2>&1

*/5 * * * * ping -c 3 n-s.deltadr.ro > /dev/null 2>&1

*/5 * * * * ping -c 3 d-s.deltadr.ro > /dev/null 2>&1

La fiecare 5 minute da cate 3 comenzi ping pentru mentinerea tunelelor active.

Cu comanda urmatoare putem vedea toate interfetele configurate:

[root@sediu /root]# ip link

1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100

link/ether 00:02:44:34:8c:ba brd ff:ff:ff:ff:ff:ff

3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100

link/ether 00:02:44:15:b3:97 brd ff:ff:ff:ff:ff:ff

4: gre0@NONE: <NOARP> mtu 1476 qdisc noop

link/gre 0.0.0.0 brd 0.0.0.0

5: tuneld@NONE: <POINTOPOINT,NOARP,UP> mtu 1476 qdisc noqueue

link/gre 80.86.109.231 peer 62.231.66.39

6: tunelm@NONE: <POINTOPOINT,NOARP,UP> mtu 1476 qdisc noqueue

link/gre 80.86.109.231 peer 213.157.163.150

7: tuneln@NONE: <POINTOPOINT,NOARP,UP> mtu 1476 qdisc noqueue

link/gre 80.86.109.231 peer 80.86.109.235

1057: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 3 link/ppp

1058: ppp1: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 3 link/ppp

1059: ppp2: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen 3 link/ppp

Tabela de rutari de la depozit, ca exemplu pentru o tabela de rutari de la un punct de lucru on-line din capitala.

[root@depozit tunel]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref UseIface

80.86.109.231 62.231.66.1 255.255.255.255 UGH 0 0 0 eth0

213.157.165.13 62.231.66.1 255.255.255.255 UGH 0 0 0 eth0

193.231.191.40 62.231.66.1 255.255.255.255 UGH 0 0 0 eth0

192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tunel

10.0.2.0 10.0.2.1 255.255.255.0 UG 0 0 0 eth1

10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

62.231.66.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo

0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 tunel

[root@depozit tunel]# ip link

1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100

link/ether 00:e0:29:66:0b:f1 brd ff:ff:ff:ff:ff:ff

3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100

link/ether 00:e0:29:66:0b:f6 brd ff:ff:ff:ff:ff:ff

5: gre0@NONE: <NOARP> mtu 1476 qdisc noop

link/gre 0.0.0.0 brd 0.0.0.0

6: tunel@NONE: <POINTOPOINT,NOARP,UP> mtu 1476 qdisc noqueue

link/gre 62.231.66.39 peer 80.86.109.231

Fisierele de configurare a rutelor de la depozit sunt:

/etc/sysconfig/network-scripts/*ifcfg-eth-0

DEVICE="eth0"

ONBOOT="yes"

BOOTPROTO="none"

IPADDR="62.231.66.39"

NETMASK="255.255.255.0"

GATEWAY=62.231.66.1

/etc/sysconfig/network-scripts/*ifcfg-eth-1

DEVICE="eth1"

ONBOOT="yes"

BOOTPROTO="none"

IPADDR="10.0.2.1"

NETMASK="255.255.255.0"

/etc/sysconfig/network-scripts/ifcfg-lo

DEVICE=lo

IPADDR=127.0.0.1

NETMASK=255.0.0.0

NETWORK=127.0.0.0

BROADCAST=127.255.255.255

ONBOOT=yes

NAME=loopback

Rute statice necesita aici o atentie speciala deoarece in cazul resetarii serverului trebuie mentinuta ruta spre sediu pentru a putea avea ruta implicita pe capatul de tunel de la sediu. De asemenea avand in vedere ca legatura cu reteaua metropolitana este facuta pe fibra optica, si nu pe modem CaTV, este necesara adaugarea de rute spre cateva adrese ale providerului pentru ca locatia sa poate raspunde la ping pentru monitorizare.

/etc/sysconfig/network-scripts/static-routes

eth0 net 80.86.109.231 netmask 255.255.255.255 gw 62.231.66.1

eth0 net 193.231.191.40 netmask 255.255.255.255 gw 62.231.66.1

eth0 net 213.157.165.13 netmask 255.255.255.255 gw 62.231.66.1

Tunelul se mentine ca la sediu, cu ajutorul crond-ului:

/root/crontab

"SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

0 * * * * sh /etc/tunel/tunel >/dev/null 2>&1"

4.18 Mesajele de eroare si de control

Cu toate ca protocolul IP nu ofera mecanisme de confirmare pentru a permite calculatorului care a trimis mesajul sa afle daca datagrama a fost receptionata intacta la destinatie, pune la dispozitie o serie de mecanisme de raportare a erorilor prin intermediul protocolului ICMP. Este o componenta necesara a oricarei implementari TCP/IP, iar functiile pe care le efectueaza sunt foarte importante pentru rutere si alte dispozitive de retea care comunica prin TCP/IP. Ca si TCP si UDP, ICMP foloseste protocolul IP pentru a transmite propriile date prin retea.

Fiecare pachet ICMP are un camp care defineste tipul mesajului. Tipurile de mesaje folosite de acest protocol sunt prezentate in urmatorul tabel:

Tipuri de mesaje ICMP:

0 echo-reply (pong) Raspuns de ecou

3 destination-unreachable Destinatie inaccesibila

4 source-quench Oprirea sursei

5 redirect Redirectionarea mesajului

8 echo-request (ping) Cerere de ecou

11 time-exceeded (ttl-exceeded) Depasirea timpului

12 parameter-problem Problema legata de parametru

13 timestamp-request Cerere de marca de timp

14 timestamp-reply Raspuns de marca de timp

17 address-mask-request Cerere de masca de adresa

18 address-mask-reply Raspuns de masca de adresa

Comanda “ping” foloseste mesajele de cerere si raspuns la ecou pentru a stabili daca exista conexiune fizica intre sisteme. O alta functie importanta in Internet este controlul traficului. Mesajul de oprire a sursei poate fi transmis pentru a comunica unei gazde sursa ca gazda destinatie nu poate tine pasul cu viteza de transmitere a pachetelor. Calculatorul destinatie continua sa transmita aceste mesaje de oprire pana cand sursa reduce viteza transmisiei la o viteza acceptabila.

In acest sistem de comunicatie neorientat pe conexiune pe care l-am descris in capitolele precedente, fiecare gateway lucreaza autonom, iar o datagrama este transmisa de la un gateway la altul pana acesta ajunge la destinatie. Acest sistem functioneaza atata timp cat toate masinile din sistem functioneaza corect. Pe langa erorile de comunicatie sau defectarea statiilor, care pot apare in realitate, distribuirea de datagrame nu este posibila nici in cazul in care statia destinatie este decuplata de la reteaua fizica. Pentru aceste situatii este nevoie de un nou protocol pe baza caruia o masina (gateway) care intervine in rutarea unei datagrame, sa poata comunica statiei transmitatoare, motivul pentru care datagrama nu a reusit sa fie trimisa statiei destinatie.

ICMP permite gateway-urilor sa trimita mesaje de eroare sau de control altor gateway-uri sau statii si ofera o modalitate de comunicatie intre software-ul IP de pe o masina si software-ul IP de pe o alta. ICMP doar raporteaza situatiile de eroare aparute, urmand ca statia sursa sa se ocupe de corectarea acestor erori.

Un mesaj ICMP este incapsulat intr-o datagrama IP:

Figura 12.4

4.19 Porturi de comunicatie

Sistemele de operare de pe majoritatea calculatoarelor suporta multiprogramare, adica permit executarea simultana a mai multor programe aplicatie. Orice program care se executa pe o anumita masina se numeste: proces, task, program aplicatie sau proces utilizator, iar sistemul se numeste sistem cu multiprocesare. In comunicatia inter-retele este normal sa consideram ca destinatia finala pentru un mesaj este un anumit proces de pe statia destinatie. Dar pentru a specifica un proces ca destinatie este destul de dificil si fara sens deoarece:

procesele sunt create si distruse dinamic, neexistand posibilitatea de a identifica un proces de pe masina destinatie;

trebuie sa existe posibilitatea de a inlocui un program fara a anunta toate statiile care-i transmit mesaje;

trebuie sa identificam destinatia unui mesaj pe baza functiei pe care o indeplineste si nu pe baza procesului care implementeaza functia.

Astfel ca, in loc sa privim procesul ca destinatie finala pentru un mesaj, consideram ca masina destinatie contine un set abstract de puncte destinatie denumite porturi (protocol ports). Fiecare port este identificat printr-un numar intreg pozitiv. Sistemul de operare trebuie sa ofere un mecanism prin care un proces poate sa acceseze un anumit port.

Majoritatea sistemelor de operare ofera acces sincron la porturi, adica daca un anumit proces acceseaza un port, el se va opri pana ce s-a incheiat accesul la portul respectiv.

Pentru a comunica cu un port de pe statia destinatie emitatorul trebuie sa cunoasca atat adresa IP a statiei respective cat si numarul de port folosit pentru comunicatie. Fiecare mesaj contine portul destinatie si portul sursa, pentru a permite procesului care primeste un mesaj sa-i raspunda emitatorului.

4.20 Protocolul de control al transmisiei (TCP)

Acest protocol utilizeaza protocolul IP si pune la dispozitie un serviciu fiabil de conexiune intr doua calculatoare gazda din Internet. In timp ce protocolul IP trimite pur si simplu pachetele pe rutele lor, TCP ofera mecanismele care garanteaza ca pachetele sunt receptionate intacte si ca pot fi plasate in ordinea corecta la calculatorul destinatie.

Protocolul TCP pune la dispozitie sume de control pentru datele reale transmise. De asemenea TCP poseda mecanisme care regularizeaza fluxul de date pentru a evita problemele asociate cu congestia. TCP foloseste numere secventiale in antetul TCP pentru ca datagramele IP sa poate fi reasamblate in ordinea corecta la capatul destinatie al comunicatiei.

Desi nu exista un model universal acceptat pentru a descrie structurat arhitectura protocolului TCP/IP, acesta este vazut ca fiind compus din mai putine straturi decat modelul OSI. Cele mai multe descrieri definesc intre trei si cinci nivele functionale pentru arhitectura protocolului. In figura 13.4 este prezentat unul dintre aceste modele.

Figura 13.4

Ca si in modelul structural OSI, datele sunt pasate de sus in jos cand se tramsmite retelei si de jos in sus cand sunt receptionate de pe retea. Cele patru nivele din structura TCP/IP sunt vazute din puctul de vedere al prelucrarii datelor.

Fiecare nivel din stiva adauga informatii de control datelor primite de la nivelul superior pentru asigura o transmisie corecta. Aceasta informatie de control se numeste "header" deoarece este plasata la inceputul blocului de date.

Fiecare nivel trateaza toate informatiile receptionate de la nivelul superior, ca date si isi plaseaza propriul header la inceputul acestor informatii. Adaugarea de informatii necesare comunicarii de catre fiecare nivel se numeste "incapsulare" (fig 14.4).

Figura 14.4

Fiecare nivel isi are propria structura de date, iar software-ul ce implementeaza nivelul respectiv se ocupa de prelucrarea lor.

Aplicatiile care folosesc TCP numesc datele "stream", iar cele care folosesc UDP le numesc "message". TCP foloseste termenul de "segment" pentru date , UDP foloseste termenul de "packet", iar IP foloseste termenul de "datagrama". Pentru o retea fizica datele sunt cunoscute sub numele de "frame" (vezi figura 13.4).

Formatul unui segment TCP:

Figura 15.4

4.21 Protocolul datagramelor utilizator (UDP)

User Datagram Protocol (UDP) este similar cu TCP prin faptul ca foloseste protocolul IP pentru a muta pachetele prin retea. UDP nu pune la dispozitie un mecanism de confirmare, asa cum procedeaza TCP, astfel ca poate fi considerat un serviciu fara conexiune. Pentru aplicatiile care nu au nevoie de un serviciu de livrare garantat ( si de informatiile suplimentare asociate acestuia) poate fi utilizat protocolul UDP. Un exemplu in acest sens este serviciul de nume de domenii (Domain Name Service, sau DNS). DNS utilizeaza pachete UDP pentru a putea schimba eficient informatii cu alte calculatoare.

UDP (User Datagram Protocol) ofera mecanismul primar prin care programele de aplicatie trimit datagrame unei alte aplicatii.

UDP foloseste nivelul IP pentru a-si trimite mesajele si ofera acelasi tip de comunicatie nefiabila, neorientata pe conexiune. Nu foloseste semnale de "acknowledge" pentru a verifica daca mesajul a ajuns la destinatie si nu primeste nici un raspuns de control de la receptor. Programului aplicatie ii revine sarcina de a trata toate problemele de fiabilitate care apar.

Incapsularea unei datagrame UDP:

Figura 16.4

Formatul unei datagrame:

Figura 17.4

Demultiplexarea la nivelul transport (UDP):

Figura 18.4

4.22 Translatarea Adreselor de Retea (NAT – Network Address Translation)

NAT este procesul prin care un ruter modifica informatii despre sursa sau destinatie din anumite pachete care „trec prin ruter'' pe baza unor reguli. NAT include mecanisme cunoscute ca masquerading, redirectare de pachete.In practica NAT se foloseste pentru a permite statiilor ce utilizeaza adrese private sa acceseze Internetul.

Deoarece exista un numar destul de mare de retele neconectate la Internet, IETF a incercat sa reglementeze folosirea adreselor in cadrul acestor retele. Solutia (RFC 1918) a fost definirea unor spatii de adrese private, adrese ce nu pot fi rutate pe Internet.

Clasa Spatiul de adrese

A 10.0.0.0/8 10.0.0.0 – 10.255.255.255

B 172.16.0.0/12 172.16.0.0 – 172.31.255.255

C 192.168.0.0/16 192.168.0.0 – 192.168.255.255

Folosirea adreselor private ofera o schema de adresare rapida si comoda. In plus datorita faptului ca adresele statiilor nu sunt accesibile din afara retelei folosirea adreselor private este deseori considerata una dintre cele mai eficiente politici de securitate.

Totodata adresele private pun o serie de probleme. Cea mai importanta este ca ruterul prin care reteaua privata acceseaza Internetul va trebui sa fi capabil sa faca conversia adreselor private in adrese publice, deci sa ruleze un serviciu de NAT. Acest serviciu impune o latenta suplimentara pentru fiecare pachet ce tranziteaza ruterul. Un alt dezavantaj este acela ca in interiorul unei retele private nu pot fi plasate calculatoare ce ofera servicii publice, deoarece este imposibile de initiat conexiuni din exterior catre acestea.

Translatarea adreselor poate fi de mai multe feluri:

Translatarea statica a adreselor presupune constituirea unei tabele de translatare ce va asigna intotdeauna aceeasi adresa publica pentru o adresa privata data. Trebuie sa existe in acest caz un numar egal de adrese publice si adrese private.

Translatarea dinamica a adreselor presupune definirea unui rezervor de adrese publice, iar apoi vor fi asignate in functie de ordinea in care statiile solicita conexiuni cu Internetul. Odata incheiata ultima conexiune a unei statii adresa publica este intoarsa in rezervorul de adrese, putand fi alocata unei alte statii. Avantajul major al acestei implementari este ca numarul adreselor publice poate fi semnificativ mai redus decat al celor private. Daca spre exemplu avem o retea cu 200 de calculatoare, dar din care pe Internet nu sunt niciodata mai mult de un sfert, atunci se poate realiza o translatare dinamica a adreselor pe un spatiu de 64 de adrese publice si nu 256 ca in cazul translatarii statice.

Translatarea adreselor cu supraincarcare este forma cea mai des intalnita de NAT, in prezent cand ne referim la translatarea adreselor in realitate ne referim la translatarea adreselor cu supraincarcare. Aceasta metoda ofera posibilitatea folosirii unei singure adrese publice pentru mai multe statii ce acceseaza Internetul. Din aceasta cauza aceasta metoda mai este numita si NAT multi-la-unu sau PAT (Protocol Address Translation).

Cum functioneaza translatarea adreselor cu supraincarcare?

Daca avem o retea privata conectata la Internet printr-un ruter ce ruleaza NAT si statia A (10.0.1.37) si B (192.168.2.2) doua calculatoare din reteaua noastra privata. Adresele pentru interfetele ruterului vor fi: 10.0.1.1 si 192.168.2.1. Presupunem ca ambele incearca sa acceseze site-ul www.k.ro, a carei adresa IP este 194.102.255.23. Statia A va incapsula cererea precizand in antetul de nivel transport potul destinatie: 80, portul sursa: 3021, apoi la nivel retea or fi puse in antet adresa destinatie: 194.102.255.23, precum si adresa sursa: 10.0.1.37, la nivel legatura de date va pune in campul adresa destinatie adresa MAC a ruterului, si propria sa adresa MAC in campul adresa sursa. In mod similar statia B va incapsula cererea precizand in antetul de nivel transport potul destinatie: 80, portul sursa: 12021, apoi la nivel retea or fi puse in antet adresa destinatie: 194.102.255.23, precum si adresa sursa: 192.168.2.2, la nivel legatura de date va pune in campul adresa destinatie adresa MAC a ruterului, si propria sa adresa MAC in campul adresa sursa.

Odata ajunse la ruter cele doua pachete sunt despachetate. Campul adresa sursa din antetul de nivel retea va fi inlocuit cu adresa ruterului de pe interfata dinspre Internet: 80.86.109.231. Daca dupa aceasta operatiune pachetele ar fi rutate, ele ar ajunge la destinatie, dar ruterul nu va fi capabil sa determine cui din reteaua privata ii este adresat fiecare din cele doua raspunsuri pe care le va primi de la 194.102.255.23.

Serviciul de translatare a adresei se bazeaza pe construirea unei tabele ce va stabili o corespondenta univoca intre o conexiune initiata de la o adresa privata (adresa si port) cu un port de pe ruter. In cazul nostru pentru pachetul primit de la statia A ruterul va dedica un port: 15989. Va schimba portul sursa din pachetul primit de la A cu valoarea 15989, si orice va primi pe acest port va trebui reimpachetat cu adresa destinatie 10.0.1.1:3021. Portul 15989 va ramane blocat pana la incheirea conexiunii de web initiate de pe statia A catre www.k.ro.

Desi teoretic pe o singura adresa publica pot fi mapate ai mult de 65000 de conexiuni, in realitate implementarile de NAT nu mapeaza mai mult de 4000 de conexiuni pentru o adresa publica.

Pentru retelele mari translatarea adreselor se face combinand translatarea dinamica a adreselor cu translatarea adreselor cu supraincarcare.

4.23 Redirectare

In acest caz tratarea pachetelor identificate se face prin inlocuirea pachetului primit din reteua locala avand adresa sursa S, adresa destinatie D, portul P cu un altul avand adresa sursa S, adresa destinatie T (adresa ruterului pe care se face transparent proxy), portul R (portul in care se face redirectarea, specificat de utilizator).

Redirectarea este in general folosita pentru a implementa proxy transparent, caz in care pe ruterul T portul R ascula un proxy configurat pentru proxy transparent (squid de exemplu, cum este cazul retelei tratate aici).

5 Securizarea retelei

5.1 Considerente legate de securitate

Datorita usurintei in folosire si a costurilor implicate se opteaza din ce in ce mai mult pentru acest mijloc foarte robust si comod care este Internet-ul. Pe langa beneficiile pe care le ofera, Internet-ul prezinta si un inconvenient – si anume acela de a fi un mediu public, mediu in care se vehiculeaza date de interes general.

Pentru a putea folosi Internet-ul ca un "backbone" de comunicatie pentru companie, trebuie asigurata securitatea datelor vehiculate. Aceasta modalitatea este foarte avantajoasa pentru companiile care au intindere nationala sau internationala pentru ca da posibilitatea de a construi o retea, folosind Internet-ul, astfel incat fiecare birou sau filiala a companiei respective se poate conecta separat, apeland la un furnizor de servicii Internet local, minimizand astfel cheltuielile implicate de linii dedicate la mare distanta.

Termenul cel mai vehiculat in domeniul IT atunci cand vine vorba de securitate este cuvantul : “firewall”

Un firewall este un sistem hardware/software (de cele mai multe ori software) care este utilizat in scopul de a controla traficul intre cele doua tipuri de retele, respectiv reteaua publica (de regula Internet-ul) de cea proprietara (proprie companiei).

Acest dispozitiv – firewall este dotat cu cel putin doua placi de retea. In acest caz, daca cele doua cartele de retea sunt legate la retele diferite, acest dispozitiv are functionalitate de firewall, iar pachetele ajunse in una din cartele trebuie sa treaca prin firewall, adica sa se supuna unor reguli stabilite inainte de a trece spre cealalta cartela de retea. Dispozitivul care joaca rolul de firewall poate fi, in cele mai multe cazuri, un ruter.

In prezent exista doua tipuri distincte de firewall utilizate in Internet . Primul tip este asa numitul ruter filtru de pachete, in care se executa reguli definite pe acel ruter, reguli ce implica blocarea sau accesul pachetelor din interiorul sau, mai ales, exteriorul retelei locale. Al doilea tip este cunoscut sub denumirea de proxy server (poarta de aplicatie) . Unele solutii de firewall pot sa combine cele doua tipuri, crescand astfel securitatea retelei locale fata de atacuri din Internet.

5.2 Rutere filtru de pachete

Un ruter este o masina care conduce pachetele de date intre doua sau mai multe de retele. Un ruter filtru de pachete poseda o instructiune de cod in plus care permite acestuia sa compare pachetele cu un set de reguli inainte de a lua decizia de a le inainta in una din retelele la care este conectat. Pe baza acestor reguli definite, un astfel de ruter este capabili sa decida daca conduce pachetele mai departe sau le blocheaza accesul. Software-ul de rutare de adrese IP din ultima generatie poseda deja posibilitatea de a filtra pachetele ce trec prin ruterul respectiv.

Pentru a decide daca un pachet de date poate sa treaca sau nu, instructiunea de cod compara seturile de reguli cu informatiile continute in header-ele pachetelor. Daca aceste informatii coincid, pachetul este lasat sa treaca mai departe; daca nu, pachetul este blocat si – eventual – se poate trimite un mesaj catre masina care a trimis pachetul respectiv, aceasta facandu-se pe baza adresei sursa continuta in header-ul pachetului blocat.

Regulile de filtrare sunt formate dintr-o parte de „match'' pe pachet si dintr-o parte de tratare a pachetului.

In partea de „match'' se specifica clasa de pachete. Specificarea acestei clase se poate face cu: adresa sursa, adresa destinatie, adresa de retea sursa, adresa de retea destinatie, protocolul (TCP, UDP, ICMP), portul sursa/destinatie – pentru TCP, tipul mesajului – pentru ICMP, interfata pe unde vine/pleaca pachetul, etc. In principiu se poate face „match'' cu orice informatie scrisa in pachetul care circula prin ruter, bineinteles daca implementarea permite acest lucru.

In partea de tratarea a pachetului se specifica ce anume trebuie facut cu pachetele care au facut „match'' pe regula. Pentru filtrare exista in general 3 posibilitati de tratare: acceptare, ignorare sau respingere. In cazul acceptarii pachetul este lasat sa treaca. In cazul ignorarii pachetului acesta nu este lasat sa treaca si nu se trimite notificare catre sursa. In cazul respingerii pachetul nu este lasat sa treaca dar se trimite notificare catre sursa.

5.3 Servere intermediare de aplicatie (proxy)

Un proxy este un host din reteaua locala care este folosit de alte hosturi din reteaua locala pentru a accesa servicii din exterior. Exista doua tipuri de proxy-uri: traditional si transparent. In cel traditional, fiecare host din reteua locala care doreste sa utilizeze proxy-ul trebuie configurat explicit. In cazul proxy-ului transparent trebuie ca iesirea in exterior din cadrul retelei locale sa se faca neaparat prin proxy. Cazul cel mai comun (de proxy transparent) folosit este atunci cand dorim sa obligam o clasa mare de hosturi din reteua locala sa foloseasca un proxy.

Un proxy firewall face o conversie de protocoale intre reteaua interna si cea externa izoland astfel comunicatiile intre cele doua retele. Proxy serverele sunt mai sigure decat serverele normale deoarece au implementate mecanisme superioare de autentificare a utilizatorilor.

Folosirea unui proxy combinata cu filtrarea de pachete asigura o securitate buna a retelei precum si o utilizare mai eficienta a acesteia datorita faptului ca un proxy foloseste un sistem de caching.

5.3.1 Proxy-ul Squid

Squid-ul este cel mai cunoscut server intermediar de aplicatie din mediul Unix/Linux si ofera servicii de proxying si caching pentru aplicatii cum ar fi : HTTP, FTP, DNS, SSL, etc.

Fisierul de configurare este /etc/squid/squid.conf :

http_port 8080

Portul pe care Squid va asculta cererile clientilor http.

Figura 1.5 – Setarea corespunzatoare pentru folosirea proxy-ului din exterior

authenticate_program /etc/squid/auth/ncsa_auth /etc/squid/auth/passweb

Specifica comanda externa care lanseaza programul de autentificare la cerere

/etc/squid/auth/passweb este un fisier cu o sintaxa identica cu cea a liniilor din fisierul de parole criptate /etc/shadow

# Lista controalelor de acces

acl localhost src 127.0.0.1/255.255.255.255

acl intern src 10.0.0.0/255.0.0.0

acl rutere src 192.168.0.0/255.255.0.0

acl all src 0.0.0.0/0.0.0.0

acl Safe_ports port 80 21 443 563 70 210 1025-65535

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT

acl alien proxy_auth REQUIRED

Aici se definesc liste care identifica anumite cereri pe baza adresei sursa, portului destinatie etc.

# Acces Http

http_access allow localhost

http_access allow intern

http_access allow rutere

http_access allow alien

http_access deny !Safe_ports

http_access deny CONNECT

http_access deny all

Permite sau nu accesul bazat pe definitiile litelor de acces de mai sus. Functionarea este in felul urmator: se permite accesul de la gazda locala, de la retelele interne si de la cei conectati pe modemuri, cere o parola de la alte adrese IP sursa (din exterior), deoarece e posibil sa fie folosit traficul de catre persoane neautorizate, apoi se refuza conectarea pe porturi care nu sunt de interes si apoi interzice complet conectarea.

Atunci cand va veni vorba despre implementarea firewall-ului vom vedea ca toate adresele interne sunt fortate sa iasa prin proxy fara nici o setare la client, ceea ce il face proxy transparent. Toate cererile cu portul destinatie si cu adresa sursa interna vor fi fortate

# Numele de domeniu

proxy_auth_realm Squid proxy-caching web server

Specifica numele de domeniu care este reportat clientului pentru autentificare pentru uzul proxy-ului

Figura 2.5 – Fereastra de autentificare sub Windows98SE.

httpd_accel_host virtual

Permite suportul gazdelor virtuale.

httpd_accel_with_proxy on

Permite folosirea Squid-ului ca accelerator http local si ca proxy.

httpd_accel_uses_host_header on

Permite recunoasterea antetelor HTTP/1.1 in care se face distinctia intre denumirile de gazda cu care se fac cererile atunci cand se lucreaza cu gazde virtuale. Permite deasemenea ca Squid-ul sa fie folosit ca proxy transparent.

5.4 Urmarirea conexiunilor (Connection tracking)

Anumite protocoale datorita felului in care sunt concepute pot sa impiedice folosirea mecanismele prezentate mai sus. De exemplu o implementare clasica pentru filtrarea de pachete sau masquerading nu pot gestiona corect traficul de ftp. Mai concret nu se poate filtra traficul astel incat sa lasam sa treaca numai cel de ftp. De asemenea daca avem configurat masquerading pe un ruter acesta nu va fi capabil sa asigure o comunicatie intre un host local fara adresa rutabila si un server de ftp din exterior.

Problema care apare este datorata faptului ca atat filtrare de pachete cat si masquerading sunt configurate la nivel de porturi, dar protocolul ftp nu foloseste porturi standard pentru transmiterea de date. Aceste porturi sunt negociate de catre client si server la conectare. Din acest motiv nu putem configura filtrarea de pachete si/sau masquerading nestiind pe ce porturi se va desfasura de fapt comunicatia.

Solutia la aceasta problema se numeste connection tracking. Connection tracking este mecanismul prin care un ruter urmareste si stabileste care conexiuni sunt derivate dintr-o conexiune initiala. In general conexiunea initiala se poate identifica usor pentru ca serviciile folosesc porturi standard cel putin pentru initiere. Astfel, de exemplu filtrarea de pachete va lasa sa se stabileasca conexiunea initiala. Daca implementarea permite connection tracking acest mecanism va identifica mai apoi si alte conexiuni derivate din aceasta conexiune initiala pe care filtrarea de pachete le va accepta.

Identificarea conexiunilor derivate se face pentru fiecare protocol in parte si practic se realizeaza prin „tragerea cu ochiul'' la traficul dintre cele doua capete ale conexiunii initiale in care se stabilesc porturi auxiliare de comunicatie.

Un alt exemplu care necesita connection tracking: dorim sa lasam ca utilizatorii din reteaua locala sa aiba access in afara la orice serviciu, dar sa nu lasam ca utilizatorii din afara retelei locale sa se conecteze in reteaua locala. Pentru traficul TCP aceasta problema se rezolva usor, datorita faptului ca in cadrul traficului TCP exista pachete ce au flagul SYN setat, pachete care indica o cerere de conectare la un anumit port. Aceste pachete pot fi usor interceptate si rejectate. In traficul UDP nu exista asemenea pachete. Totusi daca folosim connection tracking este posibil sa rezolvam problema. In acest caz, mecanismul de connection tracking memoreaza informatii din pachetele trimise (sursa, destinatie, port sursa, port destinatie) iar cand un pachet ajunge la ruter destinat catre reteaua locala se verifica daca acesta este un reply posibil al vreunui pachet trimis.

5.5 Politica de securitate

In cazul oricarei companii care dispune de conexiune la Internet, este absolut obligatorie definirea si implementarea in practica a unei politici de securitate foarte restrictive pentru a asigura protectia impotriva haos-ului din Internet.

Exista doua metode fundamentale prin care firewall-ul poate fi utilizat pentru a implementa politica:

permiterea oricarui acces, mai putin cele care au fost interzise in mod explicit prin reguli;

interzicerea oricarui acces, mai putin cele care au fost permise in mod specific prin reguli.

In general cea mai buna abordare in proiectarea unui firewal este cea de-a doua varianta, pentru ca , presupunand o buna cunoastere a modului de comunicatie, este mai usor sa fie specificata o lista mica cu lucrurile care sunt permise decat una mai mare cu cele care nu sunt permise.

De asemenea, pentru ca in mod frecvent sunt dezvoltate protocoale si servicii noi pe masura ce reteaua Internet continua sa creasca, nu vor mai trebui adaugate continuu reguli noi pentru a exclude problemele care vor aparea.

In cazul retelei de fata se foloseste interzicerea tuturor comunicatiilor dinspre exterior, in timp ce este permis traficul de iesire, si apoi se da drumul explicit la servicii. Unealta care implementeaza firewall-ul sub Linux este iptables.

5.6 Iptables

Iptables este utilitarul cu ajutorul caruia se pot configura servicii de firewall, deghizare IP (NAT, masquerading) sau de redirectare platforma Linux, pentru versiunile de nucleu cel putin egale cu 2.4 .

Toate serviciile care nu necesita connection tracking (urmarirea conexiunilor, de exemplu www) sunt utilizabile prin masquerading. Iptables (de fapt nucleul) suporta connection tracking intr-un mod modular. Se pot construi foarte usor noi module de connection tracking pentru protocoalele care necesita acest lucru. Sunt suportate din distributia Linux serviciile de ftp, irc.

5.6.1 Tabele

In iptables exista mai multe tabele care contin lanturi predefinite si lanturi definite de utilizator. Aceste tabele au fost introduse pentru a separa intr-un fel tipurile de mecanisme oferite.

Din acest motiv cand lucram cu reguli sau lanturi trebuie sa specificam tabela in care lucram folosind optiunea “-t”. In fiecare din tabele sunt valide numai anumite lanturi predefinite si targeturi.

Tabela filter

Se foloseste pentru filtrarea de pachete. Exista trei lanturi predefinite :

INPUT – pachete ce intra in ruter;

OUTPUT -pachete generate de ruter;

FORWARD – pachete care sunt inaintate catre alta retea in procesul de rutare.

Targeturile valide includ:

ACCEPT – pachetele sunt lasate sa treaca;

DROP – pachetele sunt ignorate;

QUEUE – pachetele sunt copiate in user-space pentru analize;

REJECT – pachetele sunt ignorate dar sursa este notificata; la acest target se poate specifica tipul mesajului icmp folosit pentru notificare cu optiunea -reject-with;

LOG – pachetele sunt scrise in log.

Tabela nat

Aceasta tabela se foloseste pentru Network Address Translation. Exista trei lanturi predefinite:

PREROUTING – modifica pachetul imediat ce acesta intra in ruter (deci inainte de procesul de rutare);

OUTPUT – modifica pachetele generate local inainte ca acestea sa intre in procesul de rutare;

POSTROUTING – modifica pachetele ce urmeaza sa plece din ruter (deci dupa procesul de rutare).

Targeturile valide includ ACCEPT, DROP, QUEUE, REJECT, LOG precum si:

MASQUERADE – pachetele vor fi mascaradate;

SNAT – adresa sursa a pachetului va fi modificata la cea specificata prin optiunea -to-source; aceast target este valid numai in lantul POSTROUTING (si lanturile chemate din acest lant);

DNAT – adresa destinatie a pachetului va fi modificata la cea specificata prin optiunea -to-destination; acest target este valid numai un lanturile PREROUTING si OUTPUT;

REDIRECT – redirecteaza pachetul local pe portul specificat de optiunea -to-port; acest target este valid numai in lanturile PREROUTING si OUTPUT.

Regulile NAT sunt formate ca si cele de filtrare din doua parti: o parte de match si o parte de tratare. Partea de match este identica cu cea de la filtrarea de pachete. Partea de tratare specifica in cel fel va fi alterat pachetul.

Tabela mangle

Aceasta tabele este folosita pentru a modifica pachetele intr-un mod mai special. In general in NAT se modifica doar adresele dintr-un pachet.

Tabela mangle poate fi folosita pentru a schimba informatii precum TTL, TOS sau pentru a marca un pachet.

Marcarea pachetelor este folosita doar in cadrul ruterului. Odata ce un pachet paraseste ruterul informatiile adaugate in cadrul marcarii vor fi indepartate. In prezent marcarea pachetelor este folosita de catre sistemul de Quality of Service (QoS).

Exista doua lanturi predefinite (case sensitive):

PREROUTING – modifica pachetele imediat ce ele au intrat in ruter, inainte de rutare;

OUTPUT – modifica pachetele generate de ruter, inainte de rutare.

Targeturile valide includ ACCEPT, DROP, QUEUE, REJECT, LOG precum si:

MARK – marcheaza pachetul cu valoarea specificata prin optiunea -set-mark;

TOS – seteaza campul de type of service la valoarea specificata prin optiunea -set-tos;

TTL – seteaza campul time to live la valoarea specificata prin optiunea -ttl-set sau decrementeaza valoarea acestuia (daca se foloseste optiunea -ttl-dec) sau se incrementeaza valoarea acestuia (daca se foloseste optiunea -ttl-inc).

5.6.2 Ordinea de traversare a tabelelor este descrisa in figura 5.1 de mai jos :

Figura 1.5

Ar fi trei scenarii de analizat:

In primul presupunem ca pachetul are ca destinatie gazda locala:

In al doilea scenariu pachetul are ca sursa gazda locala:

In ultimul presupunem ca pachetul este destinat unei alte gazde:

5.6.3 Reguli

ipchains -t table -A chain packet -j target

– adauga o noua regula in tabela table lantul chain unde packet reprezinta o serie de optiuni ce identifica o clasa de pachete iar target reprezinta tinta.

ipchains -t table -I chain rule_no packet -j target

– insereaza o noua regula in tabela table pe pozitia rule_no definita prin packet si target.

5.6.4 Lanturi (chains)

Utilizatorul poate crea/sterge/modifica lanturi proprii:

ipchains -t table -N nume_lant

– creaza un nou lant in tabela table

ipchains -t table -X nume_lant

sterge lantul creat anterior de utilizator in tabela table

Fiecare lant predefinit are o politica implicita. Aceasta poate fi setata cu

ipchains -t table-P target

, unde target poate lua una din valorile enumerate mai sus (in sectiunea tabele)

5.6.5 Identificare pachet

La fel ca si la ipchains pachetul poate fi identificat dupa adresa sursa, adresa destinatie, tipul pachetului, portul (TCP, UDP) sau tipul mesajului (ICMP), interfata pe care intra/iese pachetul, daca este fragment dintr-un pachet, daca este pachet care initiaza o conexiune (TCP).

! argument

este folosit pe post de negatie (sau toate in afara de argument);

p [!] protocol

s [!] address[/mask] [!] [imcp_type_no | [port][:port]]

– adresa sursa ;

d [!] address[/mask] [!] [imcp_type_no | port][:port]]

– adresa destinatie;

icmp-type icmp_name

destination-port port

source-port port

i [!] interface_name[+]

– numele interfetei de unde vine pachetul (ppp0, eth1, etc.); + poate fi folosit pe post de wildcard;

o [!] interface_name[+]

– numele interfetei pe unde se duce pachetul (ppp0, eth1, etc.); + poate fi folosit pe post de wildcard;

[!] -f

– fragment

[!] -syn

– initiaza o conexiune

Iptables introduce si alte posibilitati de identificare a pachetelor printre care si posibilitatea folosirii mecanismului de connection tracking pentru a face potrivire (match) pe pachete.

mac-source [!] mac-address

– adresa MAC sursa a pachetului

limit rate

– face match numai pe primele n pachete pe secunda/minut/ora dupa cum s-a specificat in rate

state INVALID|ESTABLISHED|NEW|RELATED

– se foloseste connection tracking pentru a determina daca pachetul face parte dintr-o conexiune care se initiaza (NEW), o conexiune care este deja stabilita (ESTABLISHED), o conexiune care se initiaza dar are legatura cu o conexiune deja activa (RELATED) sau nu face parte din nici o conexiune activa (INVALID)

5.7 Implementare Firewall

Scripturile de implementare a firewall-ului sunt /etc/rc.d/init.d/iptables si /etc/firewall/firewall.sh si sunt scrise folosind limbajul Bash (Bourne Again Shell). Am considerat mult mai usor de urmarit si de inteles daca plasez comentariile in interiorul scripturilor cu font normal si cu italic ramane programul propriu-zis.

Scriptul de lansare este :

#!/bin/sh

#

# Startup script to implement /etc/sysconfig/iptables pre-defined rules.

#

# chkconfig: 2345 08 92

#

# config: /etc/sysconfig/iptables

# Source 'em up

. /etc/init.d/functions

IPTABLES_CONFIG=/etc/sysconfig/iptables

if [ ! -x /sbin/iptables ]; then

exit 0

fi

KERNELMAJ=`uname -r | sed -e 's,\..*,,'`

KERNELMIN=`uname -r | sed -e 's,[^\.]*\.,,' -e 's,\..*,,'`

if [ "$KERNELMAJ" -lt 2 ] ; then

exit 0

fi

if [ "$KERNELMAJ" -eq 2 -a "$KERNELMIN" -lt 3 ] ; then

exit 0

fi

if /sbin/lsmod 2>/dev/null |grep -q ipchains ; then

# Don't do both

exit 0

fi

# Nu executa si utilitarul ipchains, care este predecesorul lui iptables

iftable() {

if fgrep -qsx $1 /proc/net/ip_tables_names; then

iptables -t "$@"

fi

}

# Citeste numele tabelelor existente

start() {

# nu face nimic daca nu avem fisierul de configurare

if [ -f $IPTABLES_CONFIG ]; then

# daca nu le stergem intai pe acestea , am putea sa adaugam la reguli

# pre-existente

action $"Golim toate regulile curente si lanturile definite de utilizator:” iptables –F

action $"Stergem toate lanturile definite de utilizator:" iptables –X

chains=`cat /proc/net/ip_tables_names 2>/dev/null`

for i in $chains; do iptables -t $i -F; done && \

success $" Golim toate regulile curente si lanturile definite de utilizator:" || \

failure $" Golim toate regulile curente si lanturile definite de utilizator:"

for i in $chains; do iptables -t $i -X; done && \

success $" Stergem toate lanturile definite de utilizator:" || \

failure $" Stergem toate lanturile definite de utilizator:"

for i in $chains; do iptables -t $i -Z; done

# echo $"Aplicam regulile de firewall: "

# grep -v "^[[:space:]]*#" $IPTABLES_CONFIG | grep -v '^[[:space:]]*$' |

# /sbin/iptables-restore -c && \

# success $" Aplicam regulile de firewall:" || \

# failure $" Aplicam regulile de firewall:"

# echo

echo " Aplicam regulile de firewall: "

sh /etc/firewall/firewall.sh

# Executa scriptul efectiv de implementarea a firewall-ului

touch /var/lock/subsys/iptables

fi

}

stop() {

chains=`cat /proc/net/ip_tables_names 2>/dev/null`

for i in $chains; do iptables -t $i -F; done && \

success $"Golim toate lanturile:" || \

failure $" Golim toate lanturile:"

for i in $chains; do iptables -t $i -X; done && \

success $"Stergem lanturile definite de utilizator:" || \

failure $" Stergem lanturile definite de utilizator:"

echo -n $"Resetam lanturile interne la politica implicita de ACCEPT:"

iftable filter -P INPUT ACCEPT && \

iftable filter -P OUTPUT ACCEPT && \

iftable filter -P FORWARD ACCEPT && \

iftable nat -P PREROUTING ACCEPT && \

iftable nat -P POSTROUTING ACCEPT && \

iftable nat -P OUTPUT ACCEPT && \

iftable mangle -P PREROUTING ACCEPT && \

iftable mangle -P OUTPUT ACCEPT && \

success $" Resetam lanturile interne la politica implicita de ACCEPT:" || \

failure $" Resetam lanturile interne la politica implicita de ACCEPT:"

echo

rm -f /var/lock/subsys/iptables

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

# "restart" este de fapt start pentru ca nu e un daemon,

# si” start” sterge oricum orice regula predefinita.

# Este doar pentru a multumi pe cei care se asteapta la existenta ei.

start

;;

condrestart)

[ -e /var/lock/subsys/iptables ] && start

;;

status)

tables=`cat /proc/net/ip_tables_names 2>/dev/null`

for table in $tables; do

echo $"Table: $table"

iptables -t $table –list

done

;;

panic)

echo -n $" Schimbam politica la DROP: "

iftable filter -P INPUT DROP && \

iftable filter -P FORWARD DROP && \

iftable filter -P OUTPUT DROP && \

iftable nat -P PREROUTING DROP && \

iftable nat -P POSTROUTING DROP && \

iftable nat -P OUTPUT DROP && \

iftable mangle -P PREROUTING DROP && \

iftable mangle -P OUTPUT DROP && \

success $"Schimbam politica la DROP:" || \

failure $"Schimbam politica la DROP:"

echo

iftable filter -F INPUT && \

iftable filter -F FORWARD && \

iftable filter -F OUTPUT && \

iftable nat -F PREROUTING && \

iftable nat -F POSTROUTING && \

iftable nat -F OUTPUT && \

iftable mangle -F PREROUTING && \

iftable mangle -F OUTPUT && \

success $"Golim toate lanturile:" || \

failure $"Golim toate lanturile:"

iftable filter -X INPUT && \

iftable filter -X FORWARD && \

iftable filter -X OUTPUT && \

iftable nat -X PREROUTING && \

iftable nat -X POSTROUTING && \

iftable nat -X OUTPUT && \

iftable mangle -X PREROUTING && \

iftable mangle -X OUTPUT && \

success $"Stergem lanturile definite de utilizator:" || \

failure $"Stergem lanturile definite de utilizator:"

;;

save)

echo -n $"Salvam regulile curente in fisierul $IPTABLES_CONFIG: "

touch $IPTABLES_CONFIG

chmod 600 $IPTABLES_CONFIG

/sbin/iptables-save -c > $IPTABLES_CONFIG 2>/dev/null && \

success $" Salvam regulile curente in fisierul $IPTABLES_CONFIG" || \

failure $" Salvam regulile curente in fisierul $IPTABLES_CONFIG"

echo

;;

*)

echo $"Folosire: $0 {start|stop|restart|condrestart|status|panic|save}"

exit 1

esac

exit 0

Figura 2.5 – Harta Ruterului Sediu cu amplasarea Firewall-ului.

Scriptul de implementare efectiva :

#!/bin/sh

#

# Script Firewall pentru Sediu DELTA

#

# Adrian Ghioc (c) 2002

ANYWHERE="any/0" # Orice Adresa IP

BROADCAST_SRC="0.0.0.0" # Adresa de Broadcast a Sursei

BROADCAST_DEST="255.255.255.255" # Adresa de Broadcast a Destiantiei

CLASS_A="10.0.0.0/8" # Retele Private Clasa A

CLASS_B="172.16.0.0/12" # Retele Private Clasa B

CLASS_C="192.168.0.0/16" # Retele Private Clasa C

CLASS_D_MULTICAST="224.0.0.0/4" # Adrese de Multicast Clasa D

CLASS_E_RESERVED_NET="240.0.0.0/5" # Adrese Rezervate Clasa E

PRIVPORTS="0:1023" # Intervalul de Porturi Privilegiate

UNPRIVPORTS="1024:65535" # Intervalul de Porturi Neprivilegiate

TRACEROUTE_SRC_PORTS="32769:65535" # Porturi Sursa Traceroute

TRACEROUTE_DEST_PORTS="33434:33523" #Porturi Destinatie Traceroute

SSH_HI_PORTS="513:1023" # Conexiuni simultane pe SSH

LOOPBACK_INTERFACE="lo" # Interfata pe Loopback

LOOPBACK_NETWORK="127.0.0.0/8" # Adresa Rezervata de Loopback

EXTERNAL_INTERFACE="eth0" # Interfata Nesigura Externa

EXTERNAL_IP="80.86.109.231" # Adresa IP Externa Nesigura

INTERNAL_INTERFACES="eth1 tunel+ ppp+" # Interfete Sigure Interne

INTERNAL_NETWORKS="10.0.0.0/8 192.168.0.0/16"

# Adrese de Retea Interne Sigure

Incarca modulele necesare

modprobe ip_tables

modprobe ip_nat_ftp

modprobe ip_nat_irc

modprobe ip_conntrack_ftp

modprobe ip_conntrack_irc

Cu comanda lsmod se pot vizualiza modulele incarcate

[root@sediu /]# lsmod

Module Size Used by

–––––––––––Module PPP–––––––––––––-

ppp_deflate 41824 1 (autoclean)

bsd_comp 4576 0 (autoclean)

ppp_async 6704 1 (autoclean)

ppp_generic 17136 4 (autoclean) [ppp_deflate bsd_comp ppp_async]

––––––Modulul bancului de modemuri Cyclades––––––

cyclades 151072 4 (autoclean)

–––––––––––Modulul GRE–––––––––––––

ip_gre 8096 3

––––––––Modul pentru placa de retea––––––––––

8139too 16480 2 (autoclean)

–––––––––-Modulele Iptables–––––––––––––

ipt_REDIRECT 1312 2 (autoclean)

ipt_state 1200 2 (autoclean)

ipt_LOG 3888 5 (autoclean)

ipt_limit 1472 6 (autoclean)

ip_conntrack_irc 3040 0 (unused)

ip_conntrack_ftp 2480 0 (unused)

ip_nat_irc 4320 0 (unused)

ip_nat_ftp 3760 0 (unused)

iptable_nat 16160 2 [ipt_REDIRECT ip_nat_irc ip_nat_ftp]

ip_conntrack 15824 4 [ipt_REDIRECT ipt_state ip_conntrack_irc ip_conntrack_ftp ip_nat_irc ip_nat_ftp iptable_nat]

iptable_filter 2304 0 (autoclean) (unused)

ip_tables 11072 8 [ipt_REDIRECT ipt_state ipt_LOG ipt_limit iptable_nat iptable_filter]

Modulul ip_tables le contine pe toate in afara de cele specificate aditional mai sus.

Setam politica cu DROP pe INPUT si FORWARD si ACCEPT pe OUTPUT care nu e periculos.

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

Activam IP Forwarding

Aceasta este o optiune foarte importanta pentru ca permite practic sa fie folosit lantul FORWARD din iptables.

echo 1 > /proc/sys/net/ipv4/ip_forward

Activam protectia la echo (ping) pe adrese de broadcast.

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Dezactivam pachetele cu optiunea de rutare la sursa activata.

Cand am descris antetul IP in campul de Optiuni nu am intrat prea mult in detalii, dar este de precizat ca desi in general protocolul IP lasa deciziile de rutare in seama celorlalte protocoale, prin folosirea campurilor de optiuni din antetul IP un hacker poate forta un pachet sa revina la calculatorul sau folosind o anumita ruta.

Un alt lucru care poate fi facut este introducerea unei adrese IP falsificate din exterio care pare sa fie valida in reteaua interna.

for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do

echo 0 > $f

done

Activam protectia impotriva atacului de tip Inundare SYN.

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

Campul SYN Flag este utilizat pentru a incepe o solicitare de conexiune.

Campul ACK Flag este utilizat pentru a confirma un pachet.

Campul FIN Flag este utilizat pentru a termina o conexiune dupa ce expeditorul a incheiat transmisia.

Inundarea SYN are loc atunci cand calculatorul gazda atacator continua sa trimita mesaje de cerere de conexiune cu o adresa IP sursa care nu poate fi gasita sau care nu exista. Calculatorul gazda care receptioneaza cererea continua sa aloce in memorie structuri de date si sa porneasca cronometre pentru incercarile de conexiune pana cand isi epuizeaza practic resursele si apoi incepe sa refuze alte incercari de conexiune.

Figura 3.5

Nu se accepta mesaje ICMP de redirectionare. Acestea pot fi folosite de catre hackeri pentru a deteriora tabela de rutari si a deturna traficul.

for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do

echo 0 > $f

done

Nu trimite mesaje de redirectionare. Ruterele de la provider nu au nevoie de mesaje pentru a-si reactualiza tabela de rutari pentru ca suntem un punct terminal din punct de vedere al Internetului.

for f in /proc/sys/net/ipv4/conf/*/send_redirects; do

echo 0 > $f

done

Ignora pachetele care sosesc pe o interfata care daca ar primi raspuns, acest raspuns ar iesi pe alta interfata. RP=Reverse Path filtering.

echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter

Logheaza pachetele cu adrese imposibile.

for f in /proc/sys/net/ipv4/conf/*/log_martians; do

echo 1 > $f

done

Permitem orice trafic intern ruterului

iptables -A INPUT -i $LOOPBACK_INTERFACE -j ACCEPT

Acesta este un lant definit care permite logarea pachetelor ignorate.

iptables -N LnD

iptables -A LnD -p tcp -m limit –limit 1/s -j LOG –log-prefix "TCP drop "

iptables -A LnD -p udp -m limit –limit 1/s -j LOG –log-prefix "UDP drop "

iptables -A LnD -p icmp -m limit –limit 1/s -j LOG –log-prefix "ICMP drop "

iptables -A LnD -f -m limit –limit 1/s -j LOG –log-prefix "FRAG drop "

iptables -A LnD -j DROP

Lantul cu pachetelor cu flag-uri care nu sunt valide niciodata

iptables -N badflags

iptables -A badflags -m limit –limit 15/minute -j LOG –log-prefix Badflags

iptables -A badflags -j DROP

Falsificare IP si Adrese Ne-Valide

Refuza pachetele falsificate

Ignora adresele sursa ne-valide.

Refuza pachetele falsificate pretinzand a proveni de la adresa IP a interfetei externe.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $EXTERNAL_IP -j LnD

Refuza pachetele pretinzand a veni de la o clasa A.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_A -j LnD

iptables -A INPUT -i $EXTERNAL_INTERFACE -d $CLASS_A -j LnD

Refuza pachetele pretinzand a veni de la o clasa B.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_B -j LnD

iptables -A INPUT -i $EXTERNAL_INTERFACE -d $CLASS_B -j LnD

Refuza pachetele pretinzand a veni de la o clasa C.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_C -j LnD

iptables -A INPUT -i $EXTERNAL_INTERFACE -d $CLASS_C -j LnD

Refuza adresele de clasa D de multicast.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_D_MULTICAST -j LnD

Refuza adresele din clasa E rezervate.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_E_RESERVED_NET -j LnD

Refuza pachetele pretinzand a fi de la loopback.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $LOOPBACK_NETWORK -j LnD

Refuza pachetele cu sursa sau destinatie o adresa de broadcast.

iptables -A INPUT -i $EXTERNAL_INTERFACE -s $BROADCAST_DEST -j LnD

iptables -A INPUT -i $EXTERNAL_INTERFACE -d $BROADCAST_SRC -j LnD

Nu permite pachetele cu flag-uri ne-valide

iptables -A INPUT -p tcp –tcp-flags ALL ALL -j badflags

iptables -A FORWARD -p tcp –tcp-flags ALL ALL -j badflags

iptables -A INPUT -p tcp –tcp-flags ALL NONE -j badflags

iptables -A FORWARD -p tcp –tcp-flags ALL NONE -j badflags

iptables -A INPUT -p tcp –tcp-flags ALL FIN,URG,PSH -j badflags

iptables -A FORWARD -p tcp –tcp-flags ALL FIN,URG,PSH -j badflags

iptables -A INPUT -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j badflags

iptables -A FORWARD -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j badflags

iptables -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j badflags

iptables -A FORWARD -p tcp –tcp-flags SYN,RST SYN,RST -j badflags

iptables -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j badflags

iptables -A FORWARD -p tcp –tcp-flags SYN,FIN SYN,FIN -j badflags

Profita de identificarea pachetelor care apartin sau sunt legate de o comunicatie testata si validata (care a trecut deja cu bine prin firewall) pentru a face testarea majoritatii pachetelor devreme in parcurgerea lanturilor cu reguli.

iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

Se permit doua IP-uri ale Providerului pentru monitorizare prin SNMP.

iptables -A INPUT -s 193.230.220.1 -j ACCEPT

iptables -A INPUT -s 80.86.96.1 -j ACCEPT

Aici este implementat serviciul de proxy transparent pentru Web. Toate cererile care ajung in PREROUTING cu portul destinatie 80 sunt redirectate fara ca clientul sa stie pe portul 8080 unde ruleaza aplicatia Squid. De notat ca pozitia aceasta a regulii se impune sa fie inainte de acceptarea traficului pe portul 80.

for net in $INTERNAL_NETWORKS ; do

iptables -t nat -A PREROUTING -p tcp -s $net –dport 80 -j REDIRECT –to-ports 8080

done

Permitem tot traficul intern intre gazde care sunt de incredere si folosim deghizarea IP (SNAT) pentru toate acestea la iesirea pe interfata eth0.

for interface in $INTERNAL_INTERFACES ; do

iptables -A INPUT -i $interface -j ACCEPT

done

for net in $INTERNAL_NETWORKS ; do

iptables -t nat -A POSTROUTING -s $net -o $EXTERNAL_INTERFACE -j SNAT –to $EXTERNAL_IP

iptables -A FORWARD -s $net -o $EXTERNAL_INTERFACE -j ACCEPT

for interface in $INTERNAL_INTERFACES ; do

iptables -A FORWARD -i $interface -d $net -j ACCEPT

done

done

ICMP pe interfata externa.

(0 | 8) Permite pingurile sa plece oriunde.

iptables -A INPUT -i $EXTERNAL_INTERFACE -p ICMP –icmp-type 0 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

(0 | 8) Permite 1 ping pe secunda sa vina de oriunde.

iptables -A INPUT -i $EXTERNAL_INTERFACE -p ICMP –icmp-type 8 -s $ANYWHERE -d $EXTERNAL_IP -m limit –limit 1/second -j ACCEPT

(3) Destinatie Inaccesibila, Serviciu Nedisponibil.

Negociere a marimii, nedisponibilitate a destinatiei sau serviciului, raspuns final la traceroute.

iptables -A INPUT -i $EXTERNAL_INTERFACE -p ICMP –icmp-type 3 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

(4) Oprirea Sursei

Cereri de scadere a ratei de transfer (controlul fluxului de date)

iptables -A INPUT -i $EXTERNAL_INTERFACE -p ICMP –icmp-type 4 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

(11) Depasirea Timpului.

Conditii de Expirare, intermedierea raspunsurilor TTL la traceroute.

iptables -A INPUT -i $EXTERNAL_INTERFACE -p ICMP –icmp-type 11 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

(12) Problema legata de parametru

Mesaje de eroare

iptables -A INPUT -i $EXTERNAL_INTERFACE -p ICMP –icmp-type 12 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

Restul pachetelor ICMP sunt inregistrate si apoi ignorate.

iptables -A INPUT -p ICMP -j LnD

iptables -A FORWARD -p ICMP -j LnD

Servere care lucreaza pe TCP.

Se accepta numai porturile selectate pe interfata externa.

5.7.1 Serverul FTP (20, 21) – Permite acces din exterior la serverul FTP local.

Una din chestiunile cele mai frecvente cand se discuta despre firewall-uri si alte probleme de conectivitate Internet este serviciul FTP, si anume distinctia dintre modurile sale de lucru, activ si pasiv. FTP-ul este un serviciu bazat in intregime pe TCP si ce e mai putin uzual la el este ca foloseste doua porturi, un port de date si un port de comenzi (de control). Traditional acestea sunt portul 21 pentru portul de comenzi si portul 20 pentru cel de date. Confuzia incepe, depinzand de mod, cu faptul ca portul de date nu este intotdeauna 20.

FTP Activ:

In FTP-ul activ, clientul se conecteaza de pe un port aleator neprivilegiat (N>1024) la portul de comenzi al serverului, portul 21. Apoi clientul incepe sa asculte pe portul N+1 si trimite comanda PORT N+1 la serverul FTP. Serverul apoi se va conecta la portul de date specificat de client de la portul sau de date care este 20.

Din punct de vedere al firewall-ului de pe server, pentru a suporta modul FTP activ trebuie deschise urmatoarele canale de comunicatie:

Portul 21 de pe server pentru oriunde (Clientul initiaza conexiunea);

Portul 21 de pe server spre porturile > 1024 (Serverul raspunde portului de control al clientului);

Portul 20 de pe server spre porturile > 1024 (Serverul initiaza conexiunea de date cu portul de date al clientului);

Portul 20 de pe server spre porturile > 1024 (Clientul trimite ACK la portul de date al serverului).

Schematic, conectarea apare in felul urmator:

Figura 4.5

Problema principala a FTP-ului activ apare de obicei la client, deoarece el nu face propriu-zis conectarea cu portul de date al serverului, si din punct de vedere al firewall-ului client apare o conexiune externa care de obicei e blocata.

FTP pasiv:

Pentru a rezolva problema initierii conexiunii de catre server spre client a fost dezvoltata o alta metoda de conectare. In modul pasiv, clientul initiaza ambele conexiuni catre server, rezolvand problema firewall-urilor care filtrau conexiunea pe portul de date de la server la client. Cand deschide o conexiune FTP, clientul deschide 2 porturi aleatoare neprivilegiate (N>1024 si N+1). Primul port contacteaza serverul pe portul 21, dar in loc sa porneasca o comanda PORT si sa permita serverului sa se conecteze inapoi pe portul sau de date, clientul va da o comanda PASV. Rezultatul va fi deschiderea unui port aleator neprivilegiat (P>1024) si trimite comanda PORT P inapoi la client. Clientul apoi initiaza conexiunea de la portul N+1 la portul P de pe server pentru transferul de date.

Din punct de vedere al firewall-ului de pe server, pentru a putea suporta modul FTP pasiv, urmatoarele canale de comunicatie trebuie deschise:

Portul 21 de pe server de oriunde (Clientul initiaza conexiunea);

Portul 21 pentru porturile > 1204 (Serverul raspunde portului de comenzi al clientului);

Porturile > 1024 ale serverului pentru oriunde (Clientul initiaza conexiunea de date pe un port aleator specificat de catre server);

Porturile > 1024 pentru porturile > 1204 de oriunde (Serverul trimite ACK si date pe portul de date al clientului.

Schematic, o conexiune FTP pasiva arata astfel:

Figura 5.5

In timp ce modul FTP pasiv rezolva multe din problemele din partea clientului, deschide o gama larga de probleme in partea serverului. Cea mai mare problema este nevoia de a permite orice conexiune de la distanta la porturile > 1024 de pe server. Din fericire multi daemoni de FTP permit administratorului sa specifice un interval de porturi in care va lucra serverul de FTP si care este apoi permis prin firewall.

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 21 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

Raspunsurile de pe canalul de date in FTP-ul activ este deja permis permitand conexiuni stabilite si inrudite…Raspunsuri pe canalul de date in modul pasiv este mai permisiv decat permiterea FTP activ pentru clienti.

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport $UNPRIVPORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

SSH (22) – Permite accesul clientilor de la distanta pe serverul local SSH.

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 22 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $SSH_HI_PORTS –dport 22 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

Trimiterea de mail printr-un server local STMP (25)

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 25 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

HTTP (80) – Permite acces de la distanta la un server local de Web (Apache)

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 80 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

POP3 (110) – Gazduirea unui server de mail POP3 pentru clienti la distanta

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 110 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

IMAP (143) – Gazduirea unui server de mail IMAP pentru clienti la distanta

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 143 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

HTTPS (443) – Permite accesul de la distanta la un server local de Web cu SSL

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 443 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

IMAP cu SSL (993) – Gazduirea unui server IMAP cu suport SSL

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 993 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

POP3 cu SSL (995) – Gazduirea unui server IMAP cu suport SSL

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 995 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

Server Proxy de IRC (6660-6669)

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 6660:6669 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

Server Proxy HTTP (8080) pe interfata externa

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 8080 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

Mod Client TCP – Sunt protocoale speciale (FTP) care au nevoie de atentie speciala

FTP (20, 21) – Permite accesul clientilor interni la servere externe

Canalele de date pentru FTP activ

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport 20 –dport $UNPRIVPORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

for net in $INTERNAL_NETWORKS ; do

iptables -A FORWARD -p TCP -d $net -s $ANYWHERE –sport 20 –dport $UNPRIVPORTS -j ACCEPT

done

UDP – Accepta numai pe porturile selectate.

Modul client pentru DNS (53)

iptables -A INPUT -i $EXTERNAL_INTERFACE -p UDP –sport 53 –dport $UNPRIVPORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

for net in $INTERNAL_NETWORKS ; do

iptables -A FORWARD -p UDP –sport 53 –dport $UNPRIVPORTS -s $ANYWHERE -d $net -j ACCEPT

done

Modul server pentru DNS (53) – Deocamdata nu este nevoie sa servim clienti externi.

# iptables -A INPUT -i $EXTERNAL_INTERFACE -p UDP –sport $UNPRIVPORTS –dport 53 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

Server DNS de cache si de inaintare, tranzactii intre nivele DNS

# iptables -A INPUT -i $EXTERNAL_INTERFACE -p UDP –sport 53 –dport 53 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

# iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP –sport $UNPRIVPORTS –dport 53 -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

TRACEROUTE

(Traceroute in mod normal foloseste -s 32769:65535 -d 33434:33523)

Activeaza cererile TRACEROUTE spre exterior.

for net in $INTERNAL_NETWORKS ; do

iptables -A FORWARD -p UDP -d $net –sport $TRACEROUTE_DEST_PORTS –dport $TRACEROUTE_SRC_PORTS -j ACCEPT

done

Activeaza cererea TRADEROUTE spre ruter

iptables -A INPUT -i $EXTERNAL_INTERFACE -p UDP –sport $TRACEROUTE_SRC_PORTS –dport $TRACEROUTE_DEST_PORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT

for net in $INTERNAL_NETWORKS ; do

iptables -A FORWARD -p UDP -d $net –sport $TRACEROUTE_SRC_PORTS –dport $TRACEROUTE_DEST_PORTS -j ACCEPT

done

Ignora si Inregistreaza restul pe interfata externa

iptables -A INPUT -i $EXTERNAL_INTERFACE -p TCP -s $ANYWHERE -j LnD

iptables -A INPUT -i $EXTERNAL_INTERFACE -p UDP -s $ANYWHERE -j LnD

iptables -A FORWARD -i $EXTERNAL_INTERFACE -p TCP -s $ANYWHERE -j LnD

iptables -A FORWARD -i $EXTERNAL_INTERFACE -p UDP -s $ANYWHERE -j LnD

–––––––––––––––––––––––––––––––––––––-

Figura 6.5 – Harta ruterului unui punct de lucru on-line cu amplasarea firewall-ului.

Scriptul de configurare a firewall-ului unei filiale este /etc/firewall/firewall.sh si are urmatoarea forma:

#!/bin/bash

# Firewall script

#

# by Adrian Ghioc (c) 2002

SEDIU="80.86.109.231"

LOOPBACK_INTERFACE="lo"

INTERNAL_INTERFACES="eth1 tunel"

modprobe iptable_filter

Politica exact ca la sediu.

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

echo "Flushing all current rules "

iptables -F

echo "Applying iptables firewall rules: "

iptables -A INPUT -i $LOOPBACK_INTERFACE -j ACCEPT

iptables -A INPUT -s $SEDIU -j ACCEPT

iptables -A FORWARD -s $SEDIU -j ACCEPT

Acceptam IP-ul sediului pentru lanturile INPUT si FORWARD

iptables -A INPUT -i eth1 -j ACCEPT

iptables -A FORWARD -i eth1 -j ACCEPT;

iptables -A INPUT -i tunel -j ACCEPT

iptables -A FORWARD -i tunel -j ACCEPT;

Acceptam interfetele interne

echo "Firewall enabled …"

touch /var/lock/subsys/iptables

Fisierul de resetare a configuratiei firewall-ului este /etc/firewall/remove.sh :

#!/bin/bash

iptables -F

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

rm -f /var/lock/subsys/iptables

6. Nivelul aplicatie

6.1 Serviciul de nume de domeniu (DNS)

6.1.1 Conceptul de serviciu de nume

Fiecare interfata de retea atasata la o retea TCP/IP este identificata printr-o adresa unica IP pe 32 de biti. Un nume de gazda ("host name") poate fi atribuit oricarui dispozitiv care are o adresa IP. Numele sunt atribuite dispozitivelor deoarece, spre deosebire de adresele IP care sunt numere, numele sunt usor de tinut minte si de scris. Software-ul de retea nu are nevoie de nume, dar acestea au fost introduse pentru a usura oamenilor folosirea retelelor.

Un nume este doar un identificator care consta într-o secventa de caractere alese dintr-un alfabet finit.

Pentru a se realiza un sistem descentralizat de tratare a numelor s-a adoptat un model ierarhic de atribuire a numelor. Sintaxa modelului ierarhic de atribuire a numelor reflecta delegarea ierarhica a autoritatii folosita la atribuirea numelor.

Mecanismul care implementeaza ierarhia de nume pentru Internet se numeste DNS (Domain Name System). Acest mecanism contine doua aspecte:

specificarea sintaxei numelor si regulile de delegare a autoritatii pentru nume;

implementarea unui sistem distribuit care mapeaza eficient numele în adrese IP.

DNS este alcatuit, practic, din trei mari componente:

– Spatiul numelor de domeniu;

– Servere de nume;

– Resolvere.

6.1.2 Spatiul numelor de domenii

Reprezinta informatia continuta în baza de date distribuita din Internet. Putem sa ne imaginam aceasta informatie ca o structura arborescenta:

arpa – este un domeniu Internet special, care transforma adresele IP în nume;

grupul generic sau al organizatiilor – are etichete de domeniu compuse din trei caractere (com, edu, gov, mil);

grupul geografic al tarilor – are etichete de domeniu compuse din 2 caractere (us, ro, fr).

Figura 1.6 – Structura distribuita si ierarhica a DNS-ului.

Radacina arborelui este un server care recunoaste domeniile de la cel mai înalt nivel si stie ce server se ocupa de fiecare din aceste domenii. La nivelul urmator din arbore exista o multime de server-e de nume fiecare furnizand raspunsuri pentru unul dintre aceste domenii superioare. Un server din cadrul acestui nivel stie care sunt server-ele care raspund de fiecare dintre subdomeniile propriului domeniu. Acest arbore continua cu cate unul sau mai multe server-e pentru fiecare subdomeniu al domeiului curent.

În practica însa, arborele de servere are mai putine nivele deoarece un server contine informatii despre mai multe parti din ierarhia de nume (un server poate contine informatiile pentru toate subdomeniile unui domeniu).

6.1.3 Serverele de nume

Modulul soft care realizeaza transpunerea din domenii în notatia dotted-decimal se numeste name server. Practic, pe Internet exista o serie de calculatoare care ruleaza soft-uri de tip name-server. Atunci cand un program doreste sa realizeze conexiunea cu un anumit calculator, prima operatie se concretizeaza prin contactarea unui name-server si emiterea unei cereri catre acesta privind transformarea adresei din nume de domeniu în adresa binara.

Pentru fiecare domeniu din Internet trebuie sa existe un server principal si un server secundar. Serverul DNS principal al domeniului contine o colectie de inregistrari de resurse (resource records), continand maparile la adrese ale numelor de gazde din domeniu. Serverul principal DNS ia deciziile finale in privinta acestor mapari. Severul DNS secundar contine o copie a bazei de date intretinute de serverul principal si poate continua rezolvarea numelor atunci cand serverul principal este deconectat de la retea. Modificarile in baza de date se fac pe serverul DNS principal.

Un transfer pe zone are loc atunci cand un server DNS secundar ia legatura cu sserverul principal al zonei respective si descopera ca trebuie sa obtina modificarile efectuate in baza de date. Aceasta decizie este luata pe baza numelor de serie continute in baza de date. Daca serverul secundar are un numar de serie mai mic, este transferata catre acesta o noua copie a bazei de date.

In multe situatii, un server DNS raspunde la interogari de nume din alte domenii decat cel asupra caruia are autoritate. In acest caz, serverul DNS contacteaza un server DNS aflat pe un nivel superior in ierarhie, pana cand gaseste un server care poate rezolva translatarea numelor sau care poate indica un alt server DNS care are autoritate asupra numelui. Serverul DNS pastreaza un cache de nume rezolvate prin aceasta metoda, astfel incat nu este nevoie sa interogheze continuu alte server pentru nume cautate frecvent.

Un al treilea tip de server DNS este serverul numai pentru cache (caching-only-server). Acest tip de server nu pastreaza o baza de date pentru o anumita zona, nu are autoritate asupra unei zone sau unui domeniu si nu foloseste mecanismul de transfer de zone

Maparea inversa permite unui client sa obtina numele pentru o anumita adresa IP. Desigur ca nu toate cererile inverse au un unic raspuns sau chiar daca au, un server nu este capabil sa-l furnizeze. Acest serviciu nu este însa prea folosit deoarece nu exista alta cale pentru a gasi un server care sa poata raspunde la o anumita cerere de mapare inversa dacat prin interogarea tuturor server-elor de nume.

Abrevierea ofera o metoda de a scurta numele atunci cand server-ul de nume poate furniza automat o parte din nume. Abrevierea este folosita pentru numele masinilor în reteaua locala. Pentru aceasta server-ul de nume mentine o lista de sufixe pentru domeniile implicite ("domain suffix list").

6.1.4 Fisierele din baza de date DNS

Fisierele de baza din baza de date DNS sunt:

fisierul bazei de date – este fisierul in care sunt stocate inregistrarile de resurse pentru zonele care intra in responsabilitatea serverului respectiv DNS;

fisierul de cache – contine informatii referitoare la alte servere de nume ce pot fi folosite pentru rezolvarea interogarilor din afara zonei sau domeniului care intra in responsabilitatea serverului respectiv DNS;

fisierele de cautare inversa – sunt folosite pentru a furniza un nume de gazda unui client care nu cunoaste decat adresa IP. Aceasta optiune este utila pentru asigurarea securitatii. De exemplu un server Web care primeste o cerere de la un clietn poate interoga serverul DNS pentru a verifica daca numele de gazda al clientului asociat cu adrese este corect.

Fisierul bazei de date al serverului principal de la sediu, /var/named/deltadr.ro este doar unul, contine toate maparile de transformare a numelor de gazda in adresa IP si are urmatoarea structura:

$TTL 86400

; durata de viata, perioada in care poate fi pastrata o inregistrare in cache inainte de a fi reimprospatata de la sursa care detine autoritatea in zona respectiva.

;

; The full zone file

;

;inregistrarea SOA (Start of authority) este folosita la inceputul bazei de date pentru descrierea acesteia

@ IN SOA ns.deltadr.ro. hostmaster.deltadr.ro. (

2002061401 ; serial

86400 ; refresh

7200 ; retry

604800 ; expire

86400 ; default_ttl

)

; campurile reprezinta urmatoarele infomatii:

; serial – un numar de serie care specifica numarul de revizuire a fisierului bazei de date. Este incrementat de fiecare data cand se face o modificare in baza de date, astfel incat serverele secundare sa poate detecta aceasta schimbare.

; refresh – frecventa de reimprospatare, dupa ce a trecut perioada aceasta, un server secundar trebuie sa verifice daca exista schimbari in baza de date de pe principal.

; retry – perioada de asteptare intainte de a incerca din nou reimprospatarea datelor, dupa o incercare nereusita.

; expire – durata de expirare, adica intervalul maxim de timp in care un server secundar ar trebui sa incerce reimprospatarea datelor inainte de a inceta sa mai prelucreze datele DNS pentru aceasta zona.

;default_ttl – durata minima de viata a unei inregistrari de resurse.

; NS – inregistrarea serverelor de nume. Aici obesrvam declararea serverului principal si pe a celor secundare

@ IN NS ns.deltadr.ro.

@ IN NS backup.deltadr.ro.

@ IN NS d-s.deltadr.ro.

@ IN NS m-s.deltadr.ro.

@ IN NS n-s.deltadr.ro.

; MX – “Mail exchanger “ pentru domeniu, identifica unde se vor trimite mailurile pentru domeniul in care are autoritate, in cazul de aici deltadr.ro.

@ IN MX 10 mail.deltadr.ro.

; HINFO – Host info, informatie despre gazda

@ IN HINFO "Athlon" "Linux 2.4.2"

;Interne –––––––––––––––

; A – adresa IP a gazdei

localhost IN A 127.0.0.1

ns IN A 80.86.109.231

;Rutabile Internet ––––––––––––

mail IN A 80.86.109.231

www IN A 193.230.220.12

militari IN A 213.157.163.150

depozit IN A 62.231.66.39

nervatraian IN A 80.86.109.235

;Virtuale –––––––––––––––

sediu IN A 10.0.0.1

; nume canonic pentru alias-ul unui nume de statie

webmail IN CNAME sediu

intranet IN CNAME sediu

mrtg IN CNAME sediu

stuff IN CNAME sediu

;Tuneluri–––––––––––––––-

s-d IN A 192.168.2.1

d-s IN A 192.168.2.2

s-m IN A 192.168.3.1

m-s IN A 192.168.3.2

s-n IN A 192.168.4.1

n-s IN A 192.168.4.2

;Modemuri –––––––––––––––

modem1 IN A 10.1.1.1

modem2 IN A 10.1.1.2

modem3 IN A 10.1.1.3

;Lan Sediu ––––––––––––––-

s-in IN A 10.0.1.1

server IN A 10.0.1.2

dodson IN A 10.0.1.3

master IN A 10.0.1.4

hard IN A 10.0.1.5

backup IN A 10.0.1.6

soft1 IN A 10.0.1.7

s.a.m.d ………….

;Lan Militari –––––––––––––-

m-in IN A 10.0.3.1

mserver IN A 10.0.3.2

mstatie1 IN A 10.0.3.3

mstatie2 IN A 10.0.3.4

s.a.m.d ………………………

Fisierele cu mapari ale transformarilor din adresa IP in nume de gazda sunt atatea cate retele distincte sunt descrise. Mai jos avem un exemplu de configurare a unui fisier de cautare inversa. Linia de comanda care ii urmeaza ilustreaza utilitatea evidenta a existentei acestui fisier:

/var/named/militari

$TTL 86400

@ IN SOA ns.deltadr.ro. hostmaster.deltadr.ro. (

2002042701 ; serial

28800 ; refresh

7200 ; retry

604800 ; expire

86400 ; default_ttl

)

@ IN NS ns.deltadr.ro.

;PTR – pointer, mapeaza o adresa intr-un nume

1 IN PTR m-in.deltadr.ro.

2 IN PTR mserver.deltadr.ro.

3 IN PTR mstatie1.deltadr.ro.

4 IN PTR mstatie2.deltadr.ro.

5 IN PTR mstatie3.deltadr.ro.

s.a.m.d …………………………

[root@sediu named]# host 10.0.3.2

2.3.0.10.in-addr.arpa. domain name pointer mserver.deltadr.ro.

6.1.5 Clientii (Resolverele)

Resolverele sunt modulele client DNS care extrag informatiile din serverele de nume. Procedura este urmatoarea: clientul construieste o cerere pentru rezolvarea unui nume care contine: numele care trebuie mapat, declararea unei clase a numelui, tipul de raspuns dorit si un cod prin care se specifica daca se doreste o translatare completa sau una nerecursiva.

Cand un server de nume primeste o cerere verifica daca numele ce trebuie rezolvat nu este printre subdomeniile pentru care are dreptul sa raspunda. Daca da atunci translateaza numele în adresa IP corespunzatoare folosind propria baza de date. Daca server-ul nu poate rezolva complet numele, verifica tipul de interactiune cerut de client. Daca clientul a specificat o cerere completa ("recursive resolution"), atunci server-ul va contacta un server de nume care poate rezolva numele cerut si îi trimite raspunsul acestuia clientului. Daca clientul a specificat o rezolutie nerecursiva ("iterative resolution"), server-ul nu poate furinza un raspuns; el va trimite clientului adresa unui alt server pe care clientul trebuie sa-l contacteze pentru rezolvarea numelui.

Acest tip de rezolvare a numelor nu este de loc eficient deoarece majoritatea apelurilor pentru nume sunt locale si ar însemna ca pentru fiecare cerere de rezolvarea a unui nume este apelat server-ul radacina. Astfel ca în realitate este folosit un folosit un model bottom-up, top-down. Procesul de mapare a numelor începe deci cu server-ul local. Daca acesta nu poate oferi un raspuns, este apelat server-ul de pe nivelul superior si asa mai departe pana la server-ul radacina, daca este necesar. Odata ajunsa cererea la server-ul radacina, acesta va pasa cererea de sus în jos pana la server-ul care poate oferi un raspuns complet.

Pentru optimizarea cautarilor fiecare server de nume mentine insa o baza de date proprie cu cele mai recente nume rezolvate ("name caching").

6.1.6 Implementarea pentru reteaua descrisa a serverului de nume BIND

BIND DNS este una dintre primele implementari ale sistemului DNS si a fost dezvoltata la Berkeley pentru sistemul de operare BSD UNIX. Fiind cea mai cunoscuta versiune de server DNS a fost portata de mult pe Linux si reprezinta in momentul actual standardul de facto pentru servere de nume sub Linux.

Pe Internet singurul nume de gazda vizibil care se rezolva este mail.deltadr.ro mapat pentru IP-ul 80.86.109.231, eventual mai sunt alias-uri pentru fiecare serviciu pe care dorim sa implementam virtual host-uri in Apache pentru accesul din exterior.

Pentru celelalte IP-uri rutabile nu sunt necesare nume de gazda deoarece dupa cum am precizat ele nu pot fi vazute pe Internet deoarece tabela de rutari are ruta implicita setata pe capatul de tunel de la sediu, un IP de clasa privata gen 192.168., deci un eventual raspuns nu ar putea avea cum sa iasa decat prin sediu, deci comunicatia nu ar fi posibila de la nivel de IP.

Nu este necesara deocamdata gazduirea unui server DNS pentru zona deltadr.ro pentru exterior, zona este gazduita la provider.

Intern, este necesara o schema de adresare a gazdelor pe departamente la sediul central si pe statii, servere la filiale, modemuri si gazde virtuale pentru Web.

Am optat pentru setarea unui server de DNS principal la sediu, si a altor 3 servere secundare la capetele de tunel pentru a evita congestia tunelelor stiind ca sunt lan-uri cu calculatoare de ordinul zecilor care simultan pot face ceva trafic chair numai pe portul 53 UDP, cum lucreaza DNS-ul

Configurarea clientilor pentru folosirea serverului de DNS corect se face deja din DHCP de cand isi inchiriaza adresa IP, ceea ce simplifica foarte mult munca unui administrator de retea.

Configurarea serverului de nume de la sediu.

/etc/resolv.conf

nameserver 127.0.0.1

nameserver 193.231.236.17

nameserver 193.231.236.10

Acest fisier este citit de catre resolverul (partea client) de pe ruter. Primul loc in care se incearca obtinerea informatiilor despre adrese este chiar pe gazda locala, apoi pe doua IP-uri externe, rutabile Internet care gazduiesc servere de DNS.

/etc/named.conf

options {

directory "/var/named";

forward first;

forwarders {193.231.236.17; 193.231.236.10;};

;allow-query – permite chestionarea urmatoarelor adrese de retea, adica a retelelor interne direct vizibile la un pas (fara LAN-urile filialelor care au propriile servere)

allow-query {10.0.1/24; 10.1.1/24; 127.0.0/8; 192.168/16;};

; allow-transfer – permite transferul la urmatoarele adrese de retea, adica pentru capetele de tunel si pentru un server DNS secundar din LAN-ul sau;

allow-transfer {192.168/16;10.0.1.6};

transfer-format many-answers;

};

zone "." in {

type hint;

file "root.cache";

};

zone "0.0.127.in-addr.arpa" in {

type master;

file "127.0.0";

};

zone "deltadr.ro" in {

type master;

notify yes;

file "deltadr.ro";

};

zone "1.1.10.in-addr.arpa" in {

type master;

notify yes;

file "modemuri";

};

zone "0.0.10.in-addr.arpa" in {

type master;

notify yes;

file "virtuale";

};

zone "1.0.10.in-addr.arpa" in {

type master;

notify yes;

file "sediu";

};

zone "2.0.10.in-addr.arpa" in {

type master;

notify yes;

file "depozit";

};

zone "3.0.10.in-addr.arpa" in {

type master;

notify yes;

file "militari";

};

zone "4.0.10.in-addr.arpa" in {

type master;

notify yes;

file "nervatraian";

};

zone "168.192.in-addr.arpa" in {

type master;

notify yes;

file "tuneluri";

};

Configurarea serverului secundar de la nervatraian.deltadr.ro:

/etc/resolv.conf

search deltadr.ro

nameserver 127.0.0.1

nameserver 193.231.236.17

Prima data este cautat serverul local secundar de DNS si apoi este deja inaintata cererea la un IP de-al providerului unde este gazduit un server de DNS.

/etc/named.conf

options {

directory "/var/named";

; permite cereri de la LAN-ul intern si de la gazda locala

allow-query { 10.0.4.0/24; 127.0.0/8;};

allow-transfer {192.168.4.1;};

transfer-format many-answers;

};

zone "." in {

type hint;

file "root.cache";

};

zone "0.0.127.in-addr.arpa" in {

type master;

file "127.0.0";

};

zone "deltadr.ro" in {

type slave;

file "deltadr.ro";

masters {192.168.4.1;};

};

zone "1.1.10.in-addr.arpa" in {

; tip secundar (slave), are ca server principal pe 192.168.4.1 din sectiunea masters, practic ruterul de la sediu.

type slave;

file "modemuri";

masters {192.168.4.1;};

};

zone "0.0.10.in-addr.arpa" in {

type slave;

file "virtuale";

masters {192.168.4.1;};

};

zone "168.192.in-addr.arpa" in {

type slave;

file "tuneluri";

masters {192.168.4.1;};

};

zone "1.0.10.in-addr.arpa" in {

type slave;

file "sediu";

masters {192.168.4.1;};

};

zone "2.0.10.in-addr.arpa" in {

type slave;

file "depozit";

masters {192.168.4.1;};

};

zone "3.0.10.in-addr.arpa" in {

type slave;

file "militari";

masters {192.168.4.1;};

};

zone "4.0.10.in-addr.arpa" in {

type slave;

file "nervatraian";

masters {192.168.4.1;};

};

Pentru un server slave este suficient acest fisier de configurare generala a daemon-ului named, si existenta in directorul /var/named a fisierelor de uz general: 127.0.0 si root.cache, restul este automatic transferat de pe serverul principal la pornire.

Restartam serverul de la sediu.deltadr.ro pentru a verifica daca sunt erori in redactarea fisierelor de configurare:

[root@sediu named]# service named restart

Stopping named: [ OK ]

Starting named: [ OK ]

[root@sediu named]# tail -f /var/log/messages

Jun 23 01:49:09 sediu named[8329]: the default for the 'auth-nxdomain' option is now 'no'

Jun 23 01:49:09 sediu named[8329]: no IPv6 interfaces found

Jun 23 01:49:09 sediu named[8329]: listening on IPv4 interface lo, 127.0.0.1#53

Jun 23 01:49:09 sediu named[8329]: listening on IPv4 interface eth0, 80.86.109.231#53

Jun 23 01:49:09 sediu named[8329]: listening on IPv4 interface eth1, 10.0.1.1#53

Jun 23 01:49:09 sediu named[8329]: listening on IPv4 interface eth1:0, 10.0.0.1#53

Jun 23 01:49:09 sediu named[8329]: listening on IPv4 interface tuneld, 192.168.2.1#53

Jun 23 01:49:09 sediu named[8329]: listening on IPv4 interface tunelm, 192.168.3.1#53

Jun 23 01:49:09 sediu named[8329]: listening on IPv4 interface tuneln, 192.168.4.1#53

Jun 23 01:49:09 sediu named[8329]: running

Dupa modificarea numarului serial la zona deltadr.ro si comanda de mai sus de restartare a serverului de nume de la sediu, intram cu ssh pe ruterul nervatraian.deltadr.ro si cercetam fisierul cu loguri:

[root@sediu named]# ssh nervatraian

root@nervatraian's password:

Last login: Mon Jun 17 10:46:16 2002 from 80.86.109.231

Linux 2.4.5.

root@nervatraian:~# w

1:52am up 16 days, 9:15, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 80.86.109.231 1:52am 0.00s 0.09s 0.02s w

root@nervatraian:~# tail -f /var/log/messages

Jun 23 01:52:01 nervatraian sshd[18526]: Accepted password for ROOT from 80.86.109.231 port 3223 ssh2

Jun 23 01:55:18 nervatraian /usr/sbin/named[101]: transfer of 'deltadr.ro' from 192.168.4.1#53: end of transfer

Observam ca a reusit transferul automat de zona la serverul secundar nervatraian.deltadr.ro, deci acesta s-a sincronizat cu serverul principal de la sediu.deltadr.ro.

Testam modul in care rezolva o adresa interna serverul principal de DNS:

[root@sediu /root]# dig mserver.deltadr.ro

; <<>> DiG 9.1.0 <<>> mserver.deltadr.ro

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31011

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:

;mserver.deltadr.ro. IN A

;; ANSWER SECTION:

mserver.deltadr.ro. 86400 IN A 10.0.3.2

;; AUTHORITY SECTION:

deltadr.ro. 86400 IN NS d-s.deltadr.ro.

deltadr.ro. 86400 IN NS m-s.deltadr.ro.

deltadr.ro. 86400 IN NS n-s.deltadr.ro.

deltadr.ro. 86400 IN NS ns.deltadr.ro.

;; ADDITIONAL SECTION:

ns.deltadr.ro. 86400 IN A 80.86.109.231

d-s.deltadr.ro. 86400 IN A 192.168.2.2

m-s.deltadr.ro. 86400 IN A 192.168.3.2

n-s.deltadr.ro. 86400 IN A 192.168.4.2

;; Query time: 3 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Sun Jun 23 11:03:29 2002

;; MSG SIZE rcvd: 187

8 Bibliografie:

Andrew S. Tanenbaum: "Retele de calculatoare", Editia a treia, Editura Agora, Tg. Mures, 1998;

Gil Held, Kent Hundley – “Arhitecturi de securitate Cisco”, Teora 2001;

Terry William Ogletree – “Firewalls, Protectia retelelor conectate la Internet”, Teora 2001;

Cricket Liu & Paul Albitz – “DNS and BIND” Third Edition, September 1998, O’Reilly Books;

Gerhard Mourani – “Securing and Optimizing Linux. RedHat Edition” versiunea 1.3 7 iunie 2000, OpenDocs;

Robert Hart – “PPP Howto” , versiunea 3.0 31 martie 1997;

Curricullum Cisco Network Associate;

Despre suita de protocoale IP (am folosit ARP, IP, GRE, ICMP, TCP, UDP), un site foarte vast si bine documentat:

http://www.networksorcery.com/enp/topic/ipsuite.htm

Despre modul de functionare FTP:

http://slacksite.com/other/ftp.html

Documentatie completa, exemple Iptables:

http://people.unix-fu.org/andreasson/iptables-tutorial/iptables-tutorial.html

Despre facilitati Iptables

http://apollo.cs.pub.ro/~rc/lab5/proxy+filtrare+nat/proxy+filtrare+nat.html

Despre VPN-uri

http://vpn.rdsnet.ro/aboutvpn.htm

http://antohe.tripod.com/webfinrom/VPN.htm

RedHat Linux 7.2 – din distributie, pagini man;

Similar Posts

  • . Retea Virtuala Privata Pentru Corporatii

    CUPRINS INTRODUCERE…………………………………………………………………………………………………….1 SCOPUL LUCRĂRII………………………………………………………………………………………………2 1. Considerații teoretice de bază………………………………………………………………………………..5 1.1. Modelul OSI……………………………………………………………………………………………………….5 1.2. Cum circula informația?……………………………………………………………………………………….8 1.3. Despre TCP/IP, protocoale……………………………………………………………………………….10 1.4. LAN………………………………………………………………………………………………………………..12 1.5. Hubul……………………………………………………………………………………………………………….16 1.6. Switchul……………………………………………………………………………………………………………17 1.7. VLAN………………………………………………………………………………………………………………20 1.8. Routerul……………………………………………………………………………………………………………22 1.9. Rețele WAN……………………………………………………………………………………………………..25 2. VPN-ul………………………………………………………………………………………………………………………28 2.1. Descrierea diferitelor aspecte ale VPN…………………………………………………………………28 2.2. Rețele virtuale private tipice………………………………………………………………………………..29 2.2.1. Intranet VPN………………………………………………………………………………………32 2.2.2. Remote Access VPN……………………………………………………………………………34 2.2.3. Extranet…

  • Localizare Si Google Maps In Android

    CUPRINS INTRODUCERE CAPITOLUL 1. OBIECTIVELE ȘI SPECIFICAȚIILE LUCRĂRII CAPITOLUL 2. TEHNOLOGII SOFTWARE FOLOSITE ÎN REALIZAREA SISTEMULUI INFORMATIC 2.1. SCURTĂ ISTORIE A SISTEMULUI DE OPERARE ANDROID 2.1.1. INTRODUCERE ÎN PLATFORMA ANDROID 2.1.2. ARHITECTURA ANDROID 2.1.3. ARHITECTURA APLICAȚIILOR ANDROID 2.1.4. COMPONENTELE UNEI APLICAȚII 2.2. SDK-UL ANDROID 2.3. ECLIPSE 2.4. EMULATORUL ANDROID 2.5. TRATAREA EXCEPȚIILOR 2.6. UTILIZAREA LAYOUT-URILOR…

  • Proiectarea, Realizarea Si Implementarea Sistemului Informatic

    Capitolul 1 Introducere Acest proiect constă în realizarea unei aplicați WEB, prin intermediul căreia se dorește emularea unei universități virtuale: înscrierea studenților în cadrul universității virtuale la anumite materii; susținerea de examene în cadrul unei materii; consultarea cursurilor puse la dispoziție de către profesori; comunicarea între profesori – studenți și studenți – studenți; gestionarea internă…

  • Site Web Pentru Comert Electronic

    Introducere Odata cu raspandirea web-ului si atingerea unei mase critice de utilizatori, firmele cu activitate de comert, analistii, specialistii in marketing s-au gandit ca merita investit efort in punerea la punct a unor tehnologii care sa transforme surferii web in potentiali clienti. Initial, siturile web ale acestor firme contineau doar informatii de contact, oferte promotionale…

  • Sistemul de Operare Windows 7

    Sistemul de operare Windows 7 Sistemul de operare este un ansamblu de module de programe ale unui sistem și de proceduri manuale,care asigurã o utilizare eficientã a resurselor sistemului de calcul. Windows 7 este una dintre versiunile de Microsoft Windows, reprezentând sistemul de operare ce a fost produs de compania Microsoft, în scopul utilizării acestuia,…