20
Protocolul NAT. Reţelele NetWare 1 PROTOCOLUL NAT 1.1 Sensul protocolului NAT În mod normal, pachetele într-o reţea se deplaseaza de la sursa (cum ar fi computerul nostru) la destinaţia (cum ar fi www.securityorg.net) prin mai multe legaturi de reţea diferite: de exemplu cam 19 de la locaţia în care ne aflăm noi. Nici una din aceste legaturi nu îţi modifică pachetul, pur şi simplu este trimis mai departe. Dacă una din aceste legaturi ar fi făcut NAT, atunci ar modifica sursa sau destinaţia pachetului ce intră. Dupa ne imaginăm nu aşa a fost conceput sistemul să funcţioneze, şi din această cauză NAT este întodeauna ceva în genul unui infirm. De obicei legătura care a făcut NAT va ţine minte cum a modificat pachetul, şi cînd un pachet replicat vine din cealaltă parte, va realiza modificarea inversă a pachetului replicat, aşa că totul va funcţiona. 1.2 Necesitatea utilizării protocolului NAT Într-o lume perfectă nu am avea nevoie. Între timp, principale motive sunt: Conexiunile prin modem la internet Cele mai multe ISP-uri îţi dau doar o singură adresa IP cînd te conectezi la ei. Poţi trimite pachete cu orice

Protocolul NAT

Embed Size (px)

DESCRIPTION

Tema referitoare la subiect pentru PMARC

Citation preview

Page 1: Protocolul NAT

Protocolul NAT. Reţelele NetWare

1 PROTOCOLUL NAT

1.1 Sensul protocolului NAT

În mod normal, pachetele într-o reţea se deplaseaza de la sursa (cum ar fi

computerul nostru) la destinaţia (cum ar fi www.securityorg.net) prin mai multe

legaturi de reţea diferite: de exemplu cam 19 de la locaţia în care ne aflăm noi. Nici

una din aceste legaturi nu îţi modifică pachetul, pur şi simplu este trimis mai departe.

Dacă una din aceste legaturi ar fi făcut NAT, atunci ar modifica sursa sau

destinaţia pachetului ce intră. Dupa ne imaginăm nu aşa a fost conceput sistemul să

funcţioneze, şi din această cauză NAT este întodeauna ceva în genul unui infirm. De

obicei legătura care a făcut NAT va ţine minte cum a modificat pachetul, şi cînd un

pachet replicat vine din cealaltă parte, va realiza modificarea inversă a pachetului

replicat, aşa că totul va funcţiona.

1.2 Necesitatea utilizării protocolului NAT

Într-o lume perfectă nu am avea nevoie. Între timp, principale motive sunt:

Conexiunile prin modem la internet

Cele mai multe ISP-uri îţi dau doar o singură adresa IP cînd te conectezi la ei. Poţi

trimite pachete cu orice adresă sursă pe care o doreşti, dar doar pachetele cu această

adresa IP se vor întoarce la tine. Dacă doresti sa foloseşti mai multe sisteme (cum ar

fi reteaua de acasa) pentru a le conecta la internet prin aceasta singura legatură vei

avea nevoie de NAT. Acesta este de departe cel mai răspandit mod de folosire al

NAT-ului din zilele noastre, cunoscut si sub numele de "masquerading" în lumea

Linuxului.

Servere multiple

Uneori doreşti să modifici direcţia în care să se îndrepte pachetele ce intră în

reţeaua ta. În mod frecvent aceasta este (ca şi mai sus) deoarece ai doar o singură

adresă IP, dar doreşti ca oameni să poată să ajungă la computerele din spatele

sistemului cu adresa IP "reală". Dacă rescrii adresa destinaţie a pachetelor care intră,

poţi realiza acest lucru. Acest tip de NAT a fost numit forwardare (inaintare) de

Page 2: Protocolul NAT

porturi în versiunile anterioare de Linux. O variaţie des întîlnită a acestei aplicaţii al

NAT-ului este load-sharing-ul (încărcare partajată), unde se mapează mai multe

sisteme, permiţînd sistemelor să ajungă la aceste sisteme.

Proxy transparent

Uneori doreşti să pară că fiecare pachet care trece prin sistemul tău Linux este

destinat pentru un program rulînd chiar pe sistemul tău. Acest lucru este folosit

pentru a realiza proxy-uri transparente: un proxy este un program care se interpune

între reţeaua ta şi lumea exterioară, mediînd comunicarea între ele. Se numeşte

transparent deoarece reţeaua ta nici nu va realiza că foloseşte un proxy, doar dacă

bineînţeles, proxy-ul nu funcţionează.

Squid-ul poate fi configurat sţ ruleze în acest mod, şi aceasta era numită redirectare

sau realizare de proxy transparent în versiunile anterioare de linux.

1.3 Tipurile de NAT

Am împărţit NAT-ul în două tipuri: NAT pentru sursă (SNAT) şi NAT pentru

destinaţie (DNAT).

SNAT este realizat atunci cînd modifici adresa sursa al primului pachet: schimbi

sursa de unde porneşte conexiunea. SNAT este întodeauna realizat dupa procesul de

rutare al pachetelor, chiar înainte de a pleca pe conexiune pachetul. Masquerading

este o formă particulară de SNAT.

DNAT este realizat cînd modifici adresa destinaţie al primului pachet: schimbi

destinaţia unde va fi facută conexiunea. DNAT este întodeauna realizat înainte de

rutarea pachetelor, cînd pachetul tocmai a venit prin interfaţă. Forwardare de porturi,

load-sharing-ul, şi proxy-ul transparent sunt toate forme de DNAT.

1.4 Controlul rezultatului efectuării NAT

Ai nevoie să scrii reguli NAT pentru a spune kernelului ce conexiuni să schimbe,

şi cum să le schimbe. Pentru a realiza aceasta folosim comanda iptables, şi precizăm

că dorim a schimba tabela NAT prin specificarea opţiunii "-t nat".

Tabela regulilor NAT cuprinde trei liste numite "chain-uri": fiecare regulă este

examinată în chain pînă cînd una se potriveşte. Două chain-uri sunt numite

PREROUTING (pentru DNAT, pentru pachetele care tocmai au intrat) şi

Page 3: Protocolul NAT

POSTROUTING (pentru SNAT, pentru pachetele care sunt pe cale să iasă). Al treilea

chain (OUTPUT) va fi ignorat în cele ce urmează.

Urmatoarea diagramă ilustrează destul de bine cum stau lucrurile:

La fiecare dintre punctele de mai sus, cînd un pachet trece este determinat cărei

conexiuni îi este asociat. Dacă este o conexiune nouă, este determinat chain-ul

corespunzator în tabela NAT pentru a determina ce să facem cu acel pachet.

Răspunsul determinat va fi aplicat pentru toate pachetele viitoare aparţinînd acelei

conexiuni.

1.5 Aspecte delicate în privinţa selectării pachetelor dorite pentru modificare

Am menţionat mai sus ca se poate preciza o adresă sursă şi destinaţie. Dacă

omitem opţiunea privitoare la adresa sursă, atunci regula se va potrivi pentru orice

adresă sursă. Analog, dacă omitem opţiunea pentru adresa destinaţie, atunci regula se

va potrivi pentru orice adresă destinaţie.

Este posibil deasemenea de a indica un protocol specific ("-p" sau "--protocol"), cum

ar fi TCP sau UDP, doar pachetele de acest tip se vor potrivi cu regula. Principalul

motiv pentru a preciza unul dintre aceste protocoale permite apoi folosirea de noi

opţiuni: în special opţiunile "--source-port" şi "--destination-port" (prescurtate "--

sport" şi "--dport").

Aceste opţiuni permite specificarea că numai pachetele cu anumite porturi

destinaţie sau porturi sursă se vor potrivi cu regulile. Aceste opţiuni sunt folositoare,

de exemplu, pentru redirectarea cererilor web (porturile TCP 80 sau 8080) şi

nemodificarea celorlalte pachete.

Page 4: Protocolul NAT

Aceste opţiuni trebuie să fie puse după opţiunea "-p" (care are ca alt efect

încărcarea opţiunilor extinse pentru acel protocol). Putem folosi pentru porturi

numere, sau nume cum sunt scrise în fişierul /etc/services.

Toate caracteristicile după care se poate selecta un pachet sunt detaliate în pagina

de manual pentru iptables (man iptables).

1.6 Folosirea NAT pentru modificarea adresei sursă

Dacă se doreşte efectuarea SNAT, adică schimbarea adresei sursă a conexiunilor

cu ceva diferit, acesta este realizat în chain-ul POSTROUTING, chiar înainte de a fi

trimis pachetul. Acesta este un detaliu important, deoarece înseamnă că orice altceva

în sistemul Linux (rutare, filtrare de pachete) va vedea doar pachetul neschimbat. Mai

înseamnă deasemenea ca opţiunea "-o" (interfaţă de ieşire) poate fi folosită.

SNAT este specificat folosind opţiunea "-j SNAT"; şi opţiunea "--to-source"

specifică o adresa IP, un şir de adrese IP, şi un port opţional sau un şir de porturi

(doar în cazul protocoalelor UDP şi TCP).

1.7 Masquerading

Există un caz particular de SNAT numit masquerading, ar trebui să fie folosit

numai pentru adrese IP asignate dinamic, cum ar fi în cazul celor ce se conectează

prin dial-up (pentru adrese IP statice, foloseşte SNAT ca mai sus). Nu este necesar

cînd faci masquerading să specifici adresa sursă, deoarece va folosi adresa sursă a

interfeţei prin care va ieşi pachetul. Dar ce este mai importat, dacă legatura cu ISP-ul

cade, conexiunile (care acum sunt pierdute oricum) sunt uitate, acest lucru însemnînd

mai puţine probleme tehnice cînd legatura cu ISP-ul revine cu o nouă adresa IP.

Rezolvarea vine prin folosirea acestui unic IP de ieşire, dar a diferitelor porturi pentru

fiecare conexiune iniţiată. Pachetele sunt transmise prin porturi diferite, deci şi

Page 5: Protocolul NAT

răspunsurile vor veni pe porturi diferite, putînd fi astfel identificat calculatorul (de

către serverul NAT) căruia i se adresează acele pachete.

Masquerading-ul este cea mai ieftină metoda de conectare a unui LAN la Inernet,

avînd în vedere că achiziţionarea unei adrese IP externe (rutabile) se face din ce în ce

mai greu.

1.8 Folosirea NAT pentru modificarea adresei destinaţie (DNAT)

Aceasta se realizează în chain-ul PREROUTING, exact dupa primirea

pachetului, aceasta însemnă că orice în sistemul Linux (rutare, filtrare de pachete) va

vedea pachetul cu noua adresă destinaţie. Mai înseamnă că opţiunea "-i" (interfaţa de

intrare) poate fi folosită.

Se specifica folosirea DNAT cu ajutorul opţiunii "-j DNAT", iar opţiunea "--to-

detination" specifică o adresa IP, un şir de adrese IP, şi un port opţional sau un şir de

porturi (acest lucru fiind valabil doar pentru protocoalele UPD şi TCP).

1.9 Folosirea SNAT şi rutarea

Dacă doreşti să realizezi SNAT, vei dori să fii sigur că fiecare maşină la care

ajung pachete care sunt parte a unei conexiuni SNAT, vor trimite pachetele replică

înapoi la sistemul care realizează SNAT-ul. De exemplu, dacă mapezi nişte pachete

ce ies, cu adresa sursă 1.2.3.4, atunci ruterul extern trebuie să ştie că trebuie să trimită

pachetele replică înapoi (care vor avea adresa destinaţie 1.2.3.4) către acest sistem.

Acest lucru poate fi realizat în următoarele moduri:

1. Dacă realizezi SNAT peste adresa propriului sistem (pentru care rutarea şi

toate celelalte merg deja), nu trebuie să faci nimic.

2. Dacă realizezi SNAT peste o adresă nefolosită din propriul LAN (de exemplu,

mappezi peste 1.2.3.99, o adresa IP nefolosită din reţeaua ta 1.2.3.0/24),

sistemul ce realizeaza NAT va trebui să raspundă la cereri ARP pentru aceea

adresă că şi pentru propria sa adresă: cea mai simplă metodă de a rezolva

Page 6: Protocolul NAT

acest lucru este să creezi un alias pentru adresa IP, de exemplu:

3. Daca realizezi SNAT peste o adresă complet diferită, va trebui să te asiguri că

maşinile la care vor ajunge pachetele SNAT-atîtea vor ruta această adresă înapoi

către sistemul pe care se realizează SNAT-ul. Aceasta este realizată deja dacă

sistemul care realizează SNAT-ul este gateway-ul lor default, în caz contrar va trebui

să adaugi o rută pe fiecare sistem prin care trec pachetele modificate.

1.10 Folosirea DNAT pentru adrese aflate în aceeaşi reţea.

Dacă realizezi forwardare de porturi înapoi în aceeaşi reţea, trebuie să fii sigur că

atît pachetele viitoare cît şi pachetele ce vin în replică vor trece prin sistemul ce

realizează DNAT-ul (pentru ca acestea să fie modificate).

Codul NAT va bloca (înca din ver. 2.4.0-test6) pachetele ICMP de redirectare care

rezultă atunci cînd pachetele NAT-ate se îndreaptă către aceeaşi interfaţă spre care au

venit, dar serverul care primeşte acele pachete va încerca în continuare să raspundă

direct către client (care nu va recunoaşte pachetele replică).

Cazul clasic este cînd un sistem din reţeaua internă încearcă să acceseze serverul

www "public", care este defapt DNAT-at de la adresa publică (1.2.3.4) către un

sistem din reteaua internă (192.168.1.1), astfel:

O cale este să rulezi un server de DNS intern care să ştie adresa IP reală (internă)

al site-ului public de web, şi să înainteze toate celelalte cereri către un server DNS

extern. Aceasta înseamnă că va fi folosită o conexiune directă către server-ul de web,

fară să mai fie nevoie de a trece prin sistemul care realizează NAT.

Cealaltă cale este să realizezi, pe sistemul care face DNAT, maparea adresei sursă

spre propria lui adresă pentru conexiunile venind din reţeaua internă, păcălind

serverul de web să trimită pachetele replică spre maşina ce se ocupă cu NAT-area.

Pentru acest exemplu vom proceda astfel (presupunem că adresa IP al sistemului

care realizează NAT este 192.168.1.250):

Page 7: Protocolul NAT

Deoarece regula din chain-ul PREROUTING este executată prima, pachetele vor

fi deja destinate pentru server-ul de web intern: putem preciza care din pachete sunt

din reţeaua internă dupa adresa IP sursă.

1.11 Aplicaţii ale NAT

Există cateva părţi ale lui NAT care ii vor permite sa reziste si dupa folosirea pe

scara larga a lui IP ver 6. O vom prezenta pe cea mai evidentă şi uşor de înţeles:

Serverele virtuale

O adresa IP specifică practic nu numai un calculator, ci si un serviciu pe care il

doresc. Daca acest serviciu este implementat de catre mai multe calculatoare, atunci

ar fi util ca referirea la acest IP sa insemne de fapt referirea la unul din calculatoarele

care implementeaza serviciul. In functie de modul in care serverul NAT rezolva

aceste probleme, se rezolva diferite aspecte ale incarcarii pe retea/pe servere. Ruterul

NAT poate sa verifice incarcarea fiecarui server care ofera serviciul si sa trimita

pachetul catre serverul cel mai putin incarcat. Algoritmii de decizie sunt aici partea

critica a aplicatiei. Trebuie facut un compromis intre incarcarea retelei cu interogari

de incarcare a fiecarui server si incarcarea inegala a serverelor.

Rute multiple pentru o destinatie

Este posibil ca legatura intre un LAN si Internet sa nu se faca doar printr-un provider

de internet (ISP). In clipa in care se cere o conectare la extrior din LAN, serverul

NAT poate verifica incarcarea rutelor de comunicare intre LAN si Intrente, via cei 2

(sau mai multi provideri) pentru a alege calea cea mai putin congestionata (pe linia

respectiv sa fie cea mai mica coada de asteptare, de ex).

2 REŢELELE NETWARE

Page 8: Protocolul NAT

2.1 NetWare: Sistemul de operare Novell

Orice PC funcţionează pe baza unui program denumit sitem de operare (OS-

Operating System), care gestionează toate resursele sistemului, funcţionînd ca

interfaţă între programele de aplicaţii şi componentele fizice hardware.

SO este instalat pe discul fix (HDD-Hard Disk Drive) al calculatorului, pe aşa

numita partiţie activă, şi este încărcat la fiecare pornire a sistemului (boot) din

memoria ROM de către BIOS după testarea sistemului şi identificarea unităţilor de

disc (HDD, CDROM, floppy), a memoriei RAM (Random Acces Memory)

disponibile şi a monitorului, pe baza informaţiilor conţinute în CMOS.

Un sistem de operare este conceput ca un program care rulează în permanenţa în

calculator, adică posibilitatea execuţiei programelor utilitare fără a fi necesară

cunoaşterea detaliilor privind funcţionarea părţii hardware sau a nivelelor software

inferioare celui de aplicaţie.

Programul utilizat de un calculator pentru a se conecta la o reţea locală se numeşte

program-client (client software) iar staţia respectivă reprezintă un calculator-client

(client -PC). Clientul, software sau hardware este cel care adresează o cerere către o

componentă a sistemului. Raspunsul la cererea clientului este dat de o altă

componentă denumită server, care reprezintă un furnizor de servicii. Natura

serverului poate fi logică sau fizică.

Comunicaţia dintre un PC şi retea este posibilă numai dacă sistemul local este

compatibil, hardware sau software , cu reţeaua. Din acest motiv , clienţii şi serverele

dintr-o reţea trebuie să folosească acelaşi sistem de operare de reţea (NOS- Network

Operating System), cum sunt NetWare, WindowsNT etc. Există versiuni diferite de

NOS, ca preţ şi complexitate, pentru client şi pentru server.

Arhitectura SO poate fi concepută fie în varianta monolitică , ca un sistem închis,

dificil de modificat sau de imbunătăţit, fie ca sistem deschis , cu numeroase subseturi

(microkernel) lucrînd în mod privelegiat (kernel mode), cu alocare necondiţionată de

memorie şi cu alte module care pot lucra în mod de utilizator(user mode),

neprivilegiat.

Page 9: Protocolul NAT

Figura 2.1.1 Arhitectura sistemului de tip client

NetWare este un sistem de operare pentru reţea (NOS-Network Operating

System) creat de firma Novell, care oferă acces de la distanţă transparenta dosarelor

şi numeroase alte servicii de reţea distribuite, inclusiv partajarea imprimantei şi

suport pentru diverse aplicaţii, cum ar fi transferul de poştă electronică şi acces la

baza de date. NetWare este specificat pe cinci straturi superioare ale modelului de

referinţă OSI şi rulează pe orice protocol de acces (Layer 2). În plus, NetWare

rulează practic pe orice fel de sistem computerizat, de la PC-uri la mainframe-uri.

NetWare şi protocoalele sale de sprijin de multe ori coexistă pe acelaşi canal fizic cu

multe alte protocoale populare, inclusiv TCP / IP, DECnet şi AppleTalk.

Novell NetWare, introdus la începutul anilor 1980 pe baza Xerox Network

Systems (XNS), se bazează pe o arhitectura client-server.

Protocoale cele mai populare din suita Novell NetWare sunt: IPX, SPX, PNC

(serviciile furnizate de către PNC sunt: include fişierul de acces, acces la imprimantă,

managementul de nume, de contabilitate, de securitate, şi fişierul de sincronizare) ,

NetBIOS (NetBIOS NetWare emulation permite programelor scrise pentru industria

NetBIOS de a rula în cadrul sistemului NetWare).

2.3 Operaţiunile Netware

Page 10: Protocolul NAT

Serverul de fişiere permite utilizatorilor să împărtăşească servicii de reţea,

dispozitive şi aplicaţii de reţea, care sunt descărcate pentru utilizator (client), înainte

de execuţie. Staţia de lucru a utilizatorului încarcă stiva IPX, care conţine un

conducător auto CNI şi protocolul IPX. Stivele încărcate modifică DOS-ul, întrerupe

tabelul de vectori, adăugă software-ul compatibil Netware în care acţionează ca un

interpret pentru comenzi şi a staţiei de lucru.

2.4 Schema de structură a Sistemului de Operare NetWare

Nucleul SO NetWare se stochează în memoria operativă a serverului de sub DOS

(programa SERVER:EXE). Această programă efectuează următoarele funcţii:

1 Citeşte din catalogul DOS fişierul STARTUP.NCF şi interpretează operatorii

codificaţi în el. Acest fişier textual de obicei conţine următoarele comenzi:

operatorul de încărcare (load) a modulului NLM; acest modul este citit din

catalogul DOS şi asigură protecţia memoriei operative a serverului de fişiere.

operatorul de încărcare a modului NLM a draiverului hard discului, precum

ISADISK.DSK; după aceasta devine accesibil sitemul de fişiere NetWare.

posibil unele comenzi SET, precum determinarea nivelului maximal de

introducere a cataloagelor sistemului de fişiere NetWare.

Page 11: Protocolul NAT

Figura 2.4.1 Schema de structură a Sistemului de Operare NetWare

2 Montează volumul SYS a serverului de fişiere şi deschide catalogul SYSTEM

pe acest volum.

3 Citeşte din catalogul SYSTEM fişierul de configurare AUTOEXEC.NCF şi

interpretează operatorii codificaţi de acolo. Acest fişier textual de obicei conţine

următoarele comenzi:

unele comenzi SET, precum asigurarea trecerii la timpul de vară şi de iarnă.

operatorii care indică numele serverului de fişiere şi numărul interior al reţelei.

operatorul de încărcare a draiverelor adaptorilor de reţea.

În continuare se stabilesc sensurile parametrilor SET, acceptate implicit.

Schimbînd parametrii SET poate fi optimizat lucrul sistemului de operare. Aceşti

parametri trebuie schimbaţi cu ajutorul comenzilor SET, care pot fi conectate în

fişierele de configurare STARTUP:NCF şi AUTOEXEC.NCF sau de introdus de la

serverul de fişiere.

În procesul de funcţionare, nucleul realizează deasemenea rolul de manager a

sarcinilor a sistemului de operare. Fiecare sarcină sau este legată cu un oarecare

modul NLM sau reprezintă o sarcină interioară a sistemului de operare. Modulul

NLM reprezintă fişierul de îndeplinire OS NetWare 3.x şi 4.x .

NetWare susţine posibilitatea descrierii diferitor tipuri de obiecte: a utilizatorilor,

a serverelor de fişiere, a print serverelor, etc. Fiecare din aceste tipuri de obiecte are

Page 12: Protocolul NAT

lista sa de proprietăţi. Spre exemplu obiectul utilizator este caracterizat prin

următoarele: parolă, contul de balanţă, lista grupelor, căreia îi aparţine utilizatorul,

etc.

Concluzii:

Lucrarea de laborator presupune studierea şi analiza principiului de lucru a

protocolului NAT, funcţiile acestuia şi domeniile utilizării practice.În cadrul lucrării

de laborator deasemenea am studiat structura şi rolul reţelelor NetWare în cadrul

reţelei globale Internet.

Un nou portal informaţional!

Dacă deţii informaţie interesantă si doreşti să te imparţi cu noi

atunci scrie la adresa de e-mail : [email protected]