Download - 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
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
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.
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
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
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):
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
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.
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
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.
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
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]