Referat Solutia Linux De Conectare La Internet
Mai jos puteti citi fragmente din
Referat Solutia Linux De Conectare La Internet si de asemenea puteti face
Download Referat Solutia Linux de conectare la InternetCiteste fragmente din Referat Solutia Linux De Conectare La Internet
ÂÂ
ÂÂ
Solutia Linux de conectare la Internet
ÂÂ
ÂÂ
CUPRINS
PARTEA I (Conectarea unui LAN la Internet)
Cazul clasic al conectarii la Internet
Conceptul de Internet
Cum functioneaza Internet-ul ?
Conectarea la Internet printr-un cablu UTP
Cablul UTP
Viteza de transfer
Informatii vitale pentru conectarea la Internet
Adresa IP
Netmask
Adresa de broadcast
Gateway
DNS
Testarea conexiunii
Conectarea mai multor calculatoare la Internet
Instalarea Linux-ului
Cate ceva despre hard-disk-uri
Configurari la Instalarea Linux-ului
Comenzi low-level de configurare retea
Ifconfig
Route
Studiu de caz
Recompilarea kernel-ului
Bootare fortata
De unde se obtin adresele IP routabile
Domenii DNS
Serverul de email
Proxy
Securitate
Firewall-ul in Linux
 PARTEA A DOUA (Reprezentare Firewall) ÂÂ
Introducere
Cum functioneaza un firewall
Pachetul IP
Abstractizare firewall
Limitari cunoscute
Posibile reprezentari
Reprezentarea cu masca
Reprezentare firewall printr-un automat
Automat firewall minimal ÂÂ
PARTEA A TREIA (Protocolul TCP/IP) ÂÂ
Protocolul IP (Internet Protocol)
Adrese IP ÂÂ
Bibliografie
PARTEA INTAI
- Conectarea unui LAN la Internet -
Cazul clasic al conectarii la Internet
Pentru ca un calculator sa fie conectat la Internet trebuie intai sa
existe o legatura fizica intre acesta si un nod al acestei retele
Internet. Legatura poate fi realizata prin fire de cupru (cablu BNC,
UTP), fibra optica, unde radio, etc. De obicei administratorul nodului
deja conectat la Internet (Internet Service Providerul de exemplu)
furnizeaza un IP noului host conectat.
Conceptul de Internet
In momentul in care o firma/institutie a inceput sa acumuleze
dispozitive de calcul, a aparut si problema transmiterii de date intre
acestea si utilizarii unor informatii in comun. Transmiterea prin
manipularea dispozitivelor de stocare (disckete, hard-disk-uri, benzi
magnetice) s-a dovedit ineficienta pentru accesari de date in timp real
sau pentru transmiteri frecvente de fisiere mici (cum ar fi transportul
pe disketa a fisierelor pana la calculatorul la care este conectata
imprimanta). Aceasta nevoie a fost rezolvata interconectand
calculatoarele (si alte dispozitive de calcul care au putut fi
adaptatate precum imprimante de retea, etc) prin legaturi fizice
permanente, prin fire de cupru, fibre optice sau chiar prin infrarosii
si unde radio. In scurt timp insa a aparut si problema comunicarii de
date intre filiale ale aceleiasi firme din zone geografice diferite, asa
ca aceste retele (net-uri) au fost inter-conectate (la inceput prin
linii telefonice inchiriate). Astfel s-au format internet-urile
(inter-retele). La un moment dat (prin anul 1960), Ministerul Apararii
din SUA a dorit sa interconecteze bazele sale militare intr-o
inter-retea care sa fie capabila sa continue sa functioneze chiar in
cazul in care unele puncte ale marii retelei ar fi distruse. Asa a
aparut o inter-retea numita ARPANET (ARPA = "Advanced Research Projects
Agency" se numea institutia guvernamentala care a coordonat si finantat
proiectul). Experimentele facute cu aceasta retea au dus la concluzia ca
trebuie dezvoltat un protocol nou, special conceput pentru o astfel de
arhitectura de retea. Astfel a aparut protocolul TCP/IP, special
conceput pentru a lucra pe o retea de intindere foarte mare, pe o
inter-retea. ARPA a semnat un contract de finantare cu "University of
California din Berkeley" pentru a implementa acest protocol in sistemul
de operare UNIX, ceea ce a dus la dezvoltarea unei interfete flexibile
prin care programele pot comunica intre ele prin retea numita "socket"
(soclu). In cursul dezvoltarii protocolului au fost interconectate
retelele mai multor universitati, rezultand o retea cu aproximativ 200
de noduri. In anul 1980 portiunea militara a fost data in exploatare (si
izolata de restul retelei), dar cele aproximativ 160 de noduri ramase au
functionat in continuare, noi si noi retele fiind interesate sa se
conecteze la acesta mare inter-retea. Cand aceasta inter-retea a devenit
atat de mare incar lumea a constientizat-o ca Inter-reteaua (cu I mare),
a aparut si conceptul de Internet (cu I mare).
Cum functioneaza Internet-ul ?
Internetul este o retea care interconecteaza calculatoare din intreaga
lume, facand posibil schimbul de informatii de orice tip intre oricare
doua calculatoare din aceasta retea. Protocolul de comunicare in aceasta
retea este se numeste IP (Internet Protocol) si asigura transmiterea de
datagrame (numite pachete IP) intre oricare doua puncte ale retelei.
Aceste pachete au lungime limitata (uzual 1500 bytes), mesajele mai mari
transmitandu-se in cadrul mai multor pachete. In fiecare pachet exista
specificate sursa si destinatia mesajului.
Fiecare calculator care participa la Internet are un identificator unic
(un numar pe 32 de biti) prin care el poate fi referit de catre alt
calculator din Internet. Acest numar se numeste "adresa IP", sau mai
simplu "IP" si este reprezentat in general ca 4 grupe de catre 8 biti
scrise in baza zece, mai exact ca 4 numere in intervalul 0-255 separate
cu punct (".") , de exemplu: "193.226.51.54". Un calculator poate avea
mai multe adrese IP dar un calculator fara IP nu poate comunica in
Internet. Alaturi de calculatoare exista si alte echipamente care pot
comunica in Internet (imprimante special concepute, routere dedicate,
switch-uri, etc). Participant la Internet este orice agent care are
asignata o adrese IP si poate schimba mesaje cu ceilalti paticipanti
prin protocolul IP.
Protocolul IP asigura transmiterea de mesaje scurte intre oricare doua
puncte ale Internetului, dar responsabilitatea lui este doar sa
controleze traseul pe care trebuie sa-l urmeze pachetul spre destinatie
prin multiplele noduri ale retelei. In responsabilitatea sa nu intra
controlul pachetelor pierdute si nu garanteaza ca pachetele ajung in
ordinea in care au fost trimise. El nu face decat sa transporte pachete
de informatii de la un host la altul, de la un IP la altul, pachetul
continand doar IP-ul sursa, IP-ul destinatie si cateva informatii de
control cum ar fi versiunea protocolului, daca pentru pachet este mai
important sa ajunga rapid la destinatie sau este mai important sa
ajunga, chiar daca cu intarziere, etc. Pe parcursul drumului de la sursa
la destinatie, pachetul poate trece prin segmente de retea care au un
maxim al lungimii pachetului mai mic decat cel al sursei, ceea ce face
necesara fragmentarea pachetului si atasarea fiecarui fragment un ID si
un numar de ordine, un pachet IP contine deci si aceste campuri.
Pentru unele aplicatii (de exemplu transmiterea frame-uri video) acest
sistem este destul de acceptabil, pierderea unui frame nu este o
problema, retransmiterea ar fi chiar inutila. Pentru transferul de
fisiere insa pierderea unui pachet sau primirea in alta ordine a
pachetelor este chiar o problema. Astfel a aparut necesitatea
diferentierii de clase de servicii, servicii nefiabile, orientate pe
datagrame care nu asigura retransmiterea pachetelor pierdute si
reordonarea lor si servicii fiabile, orientate pe conexiune, in care se
face automat retransmiterea pachetelor piedute, ordonarea la destinatie
si chiar controlul congestiei. Pentru acest scopuri au fost create
protocoale de comunicare "peste" acest protocol, mai exact a fost
rezervat in antetul pachetului IP un camp "tip de pachet" iar in functie
de acest camp informatia din pachetul IP este interpretata in mod
diferit si este tratata de protocoale diferite. Cele mai cunoscute
tipuri de pachete IP sunt pachetele TCP, UDP si ICMP. Protocolul UDP
(User Datagram Protocol) este un protocol simplu dar nesigur,
aplicatiile care il folosesc trebuie sa-si implementeze singure metode
de detectare a pachetelor pierdute si de retransmitere a lor. Protocolul
TCP este un protocol complex, asigurand initierea de conexiuni fiabile,
cu retransmitere de pachete, reordonare si controlul congestiei.
Pachetele ICMP (Internet Control Mesage Protocol) se folosesc pentru
depanarea retelei (ping) si pentru transmiterea de informatii despre
evenimente speciale pe parcursul traseului unui pachet (de ex. pachetul
a trecut prin mai multe routere decat maximul specificat in pachet).
Recapituland: exista pachetele IP care au ca definitorii IP-ul sursa si
IP-ul destinatie. Printre tipurile de pachete IP cele mai cunoscute sunt
UDP, TCP, ICMP si ARP (ultimul mai putin cunoscut pentru ca nu este
folosit de aplicatii ci de catre sistemele de operare).
Pentru a identifica si diferentia hosturile exista adresele IP. Pentru a
diferentia in cadrul aceluias host diversele aplicatii care comunica in
retea exista numarul de port, care este un numar pe 16 biti, deci intre
0 si 65535. Un comunicatie in retea se face intre doua perechi
IPsursa-PORTsursa si IPdestinatie-PORTdestinatie. Comunicatia poate fi
nefiabila (la nivel de pachet prin UDP) sau fiabila (la nivel de
conexiune prin TCP).
Conectarea la Internet printr-un cablu UTP
Situatia tipica de legatura permanenta la Internet este facuta printr-o
conexiune ethernet, pana la un router legat la randul sau la Internet.
Legatura ethernet se poate realiza prin mai multe tipuri de cabluri, cel
mai folosit fiind insa cablul UTP.
Cablul UTP contine 4 perechi de fire de cupru izolate si torsadate
(rasucite), prinse intr-un invelis izolator. In fiecare pereche exista
un fir colorat intr-una din culorile portocaliu, verde, albastru, maro,
perechea lui avand aceeasi culoare, dar intrerupta de portiuni albe. De
fapt pentru ethernet se folosesc doar doua perechi, una "dus" si un
"intors". Cablurile UTP se termina cu mufe care au aspectul mufelor
telefonice, dar sunt mai late, trebuind sa cuprinda 8 fire (fata de 4 la
mufele telefonice). Cablul se prinde in mufe prin "sertizare" cu un
cleste special care infige lamele metalice ale mufei prin invelisul
izolator al fiecarui fir. Privind mufa cu lamela de prindere in spate si
cu lamelele metalice in sus, firele folosite la ethernet sunt 1-2 si
3-6. Pe aceste pozitii trebuiesc sa fie sertizate fire perechi, uzual
portocaliu si verde. Pentru a interconecta doua calculatoare cablul
trebuie sertizat astfel incat perechea de fire care este pe pozitia 1-2
la un capat sa corespunda perechii 3-6 la celalalt capat (ce transmite o
placa de retea sa ajunga la pozitia de receptie ai celeilalte). De
obicei insa se foloseste un "concentrator" la care se aduna cablurile de
la mai multe calculatoare si prin care comunica intre ele (de exemplu
HUB sau SWITCH). Acesta are mufele asemenatoare celor de retea, dar au
inversati conectorii 1<->3 si 2<->6, astfel ca pentru conectarea unui
calculator catre acest "concentrator" se folosesc cabluri care au la
ambele mufe aceeasi ordine a perechilor. Ordinea uzuala este:
w-o,o,w-g,b,w-b,g,w-br,br cu conventia: o=orange (portocaliu),
g=green(verde), b=blue(albastru), br=broun (maro) iar w- semnifica ca
respectiva culoare este intrerupta. In cazul in care cablul este
"inversat" (se mai numeste si twisted sau cross-over) ordinea la una din
mufe este schimbata in w-g,g,w-o,b,w-b,o,w-br,br. Trebuie precizat ca o
greseala frecventa este pozitionarea perechilor in mufa dupa o ordine
oarecare. Daca este respectata in ambele parti, cablul poate functiona
aparent, dar daca perechile 1-2 si 3-6 nu sunt torsadate (rasucite) pot
apare functionari defectuase (pierderi, erori), mai insemnate la 100Mbps
si/sau cabluri lungi.
De obicei langa calculator exista o priza UTP care este legata la
concentrator (HUB, SWITCH). Conectarea consta in legarea unui cablu UTP
"direct" (neinversat) intre priza UTP si placa de retea ethernet din
calculator. In general vom avea la dispozitie o mufa utp "mama" care ne
va lega fizic de un router deja conectat la Internet (acesta poate fi in
aceeasi cladire si legat la acelasi HUB/SWITCH sau poate fi la
providerul INTERNET pana la care legatura se face prin Modem de cablu,
Fibra optica sau Radio. Este de asteptat ca la provider sa exista o
trecere similara de la echipamentul de conectare spre un cablu UTP, deci
daca facem abstractie de viteza putem considera ca exista un cablu UTP
de la calculatorul nostru pana in HUB-ul/SWITCH-ul providerului, la care
este conectat routerul acestuia.
Viteza de transfer. La inceput conexiunea ethernet asigura o viteza de
10Mbps (10 megabiti pe secunda). Legatura se putea realiza printr-un
cablu BNC (coaxial) care trecea pe la toate calculatoarele sau prin
cablu UTP si HUB/SWITCH pentru conectarea mai multor calculatoare. Pe
cablul UTP a fost proiectat apoi un standard care permite atingerea
vitezei de 100Mbps. Majoritatea placilor de retea de 100Mbps suporta si
interconectari la viteza de 10Mbps pentru compatibilitate cu placile
vechi. Un avantaj al conectarii cu UTP fata de BNC este pe langa faptul
ca se pot realiza transmisii full-duplex, adica 100Mbps intr-un sens si
100Mbps in celalat sens simultan. Aceasta facilitate nu este suportata
de toate placile si nu poate fi folosita daca se foloseste un HUB,
necesitand un SWITCH. Aceasta viteza este asigurata intre oricare doua
calculatoarele care sunt in acelasi HUB sau pe acelasi cablu BNC, dar in
cazul in care se face trafic intre mai multe calculatoare suma vitezelor
cu care se transmit datele nu poate depasi aceasta valoare. In cazul
unui SWITCH insa, doua perechi de calculatoare pot comunica ambele cu
100Mbps, viteza nu mai este limitata la suma vitezelor ci pe fiecare
cablu UTP in parte. Trebuie precizat faptul ca unitatea de masura pentru
latimea de banda este bitul (nu byte-ul ca in cazul fisierelor), deci pe
o conexiune de 100Mbps viteza de transfer al unui fisier va fi maxim
100:8Mbps, o aproximare destul de buna fiind 10MB/s (mai exista
informatii de control al transferului). Viteza de transfer in Internet
este data de minimul dintre latimile de banda disponibile pe diferitele
tronsoane traversate de de pachete intre locatii. De obicei viteza in
Internet este mult mai mica decat viteza in reteaua locala, aceasta
fiind de ordinul KB/s (kilobytes pe secunda), deci un upgrade de la
10Mbps la 100Mbps in reteaua locala nu creste decat viteza de
comunicatie in interiorul retelei, nu si viteza de acces Internet.
Viteza de acces Internet este data de canalul de comunicatie pana la
provider (care poate avea limitari fizice de viteza) si de banda pe care
providerul o aloca clientului.
Informatii vitale pentru conectarea la Internet. In momentul conectarii
calculatorului trebuiesc aflate cateva date tehnice vitale pentru a
putea folosi conexiunea. Aceste informatii sunt: Adresa IP, Netmask,
Gateway, Name-server(e). Hostname-ul (numele de host) se poate pune
oricum, dar daca exista o inregistrare DNS cu corespondenta intre un
nume de host si IP-ul pus, este bine sa se seteze acel nume. In lipsa,
se poate pune orice nume, urmat de domeniul organizatiei din care se
face parte calculatorul sau chiar un domeniu fictiv.
Adresa IP este identificatorul unic cu care calculatorul va fi
recunoscut in Internet. Este un numar de 32 de biti cu fiecare grupa de
8 biti scrisa in zecimal si separate prin punct ("."). Ex: 193.226.51.54
Netmask-ul este tot un numar de 32 de biti, dar are proprietatea ca este
format dintr-un sir de biti 1 urmat de un sir de biti 0. Cea mai uzuala
valoare este 255.255.255.0 care este formata din 24 de biti 1 si 8 biti
0. Netmask-ul este folosit pentru a determina daca o destinatie se afla
in aceeasi retea ethernet (de ex. in acelasi HUB sau pe acelasi cablu
BNC) cu calculatorul care vrea sa trimita un pachet de date. Daca IP-ul
destinatie corespunde cu IP-ul propriu pe toate pozitiile pe care
Netmask-ul este 1, atunci calculatorul va "intreba in retea" printr-un
broadcast cine are acel IP, placa care are acel IP va raspunde si se va
trimite un pachet direct catre acea placa de retea. De exemplu un
calculator cu IP-ul 193.226.51.54 cu netmask 255.255.255.0 se considera
in aceeasi retea cu toate calculatoarele care au IP-uri 193.226.51.X cu
X intre 0 si 255. Daca netmask-ul este 255.255.255.128 (inca un bit 1 in
plus), calculatorul se va considera in aceeasi retea doar cu IP-urile
care au pe ultima pozitie un numar X intre 0 si 127. Celelate IP-uri vor
avea bit-ul 25 (primul bit din al 4-ulea octet) egal cu 1 si nu ar mai
corespunde cu bit-ul 0 de pe pozitia 25 al lui 193.226.51.54. In acest
caz, el va trimite pachetul unuia din calculatoarele care este in
aceeasi retea cu el si care are o alta placa de retea care comunica cu
Internet-ul. Adresa acestul calculator este adresa de gateway. Folosirea
mastilor de retea (netmask-urilor) are o utilitate foarte mare in
construirea algoritmilor de routare, prin folosirea operatiilor logice
"bit cu bit", care iau foarte putin timp de procesare. La initializarea
configuratiei de retea calculatorul calculeaza "adresa retelei" facand
si logic bit cu bit intre IP si netmask (practic se obtine adresa de
IP in care s-au modificat in 0 bitii care sunt 0 in netmask). De exemplu
pentru IP=193.226.51.130 netmask=255.255.255.0 adresa de retea este
193.226.51.0 iar pentru IP=193.226.51.130 netmask=255.255.255.192 (64
adrese), adresa de retea este 193.226.51.128. In momentul in care
calculatorul trebuie sa determine daca un ip este in aceeasi retea cu
IP-ul sau, el face si logic bit cu bit intre acel IP si netmask,
calculand adresa de retea a acelui IP daca ar avea acea masca. Daca
rezultatul coincide cu adresa de retea a IP-ului propriu, inseamna ca
acel IP este in aceeasi retea cu el. Se observa ca punand in 2 IP-uri 0
pe bitii pe care netmask-ul ii are 0, rezultatele vor fi egale daca si
numai daca IP-urile corespundeau la inceput pe pozitiile pe care
netmask-ul este 1.Pentru subiectul uman exista exista metode mai mai
simple pentru calculul mental al unei configuratii. Pentru calcul
retelelor sub 256 de adrese (cel mai intalnit caz) calculele afecteaza
doar ultimul din cele 4 numere prin care se reprezinta ip-ul. Netmask-ul
va avea primele 3 numere 255, ultimul obtinandu-se scazand din 256
numarul de IP-uri din subnet. Invers, scazand ultimul numar al
netmask-ului din 256 se obtine numarul de IP-uri din retea (numita si
subnet cand este mai mica de 256 adrese). Deci un netmask
255.255.255.240 corespunde la un subnet de 16 IP-uri si invers. Adresa
de retea corespunde pe primele 3 pozitii cu IP-ul, iar pe ultima pozitie
are primul numar mai mic decat cel al IP-ului si divizibil cu numarul de
IP-uri din subnet. Pentru exemplul de mai sus cu IP=193.226.51.130
netmask=255.255.255.192 (64 ip-uri), vom cauta cel mai mare numar care
este mai mic decat 130 si divizibil cu 64. Acesta este 128, deci adresa
de retea este 193.226.51.128.
Adresa de broadcast este ceruta in unele sisteme si este folosita pentru
a desemna toate calculatoarele dintr-un anumit subnet. Ea se obtine ca
si adresa de retea din IP si netmask si se calculeaza facand sau bit cu
bit intre IP si negatul bit cu bit al netmask-ului. Mai simplu, in IP
se fac 1 bitii care in netmask sunt 0 asa cum pentru adresa de retea ei
sunt pusi pe 0. Adresa de broacast este ultima adresa din retea,
putandu-se calcula pentru subneturi pastrand pe primele 3 pozitii
numerele din IP si pe a patra pozitie punand numarul corespunzator
urmatorului subnet minus 1. Deci pt. IP=193.226.51.130
netmask=255.255.255.192 avem 64 IP-uri, adresa de retea este
193.226.51.128, adunam 64 la ultimul numar si scadem 1, deci obtinem
193.226.51.191. Cele mai multe sisteme calculeaza automat broadcast-ul,
ca si adresa de retea.
Gateway este adresa IP a calculatorului prin care trebuie sa treaca
pachetele in drum spre o grupa de destinatii. De obicei exista un singur
gateway (o singura legatura spre exterior), numit default gateway care
este adresa IP a calculatorului care detine legatura spre Internet.
Standardul cere ca acest IP sa fie in aceeasi clasa de adrese cu ip-ul
calculatorului, uzual folosindu-se a doua adresa din aceasta clasa de
adrese (prima este adresa retelei). De exemplu daca avem IP-ul
193.226.51.54 cu netmask 255.255.255.0 (256 adrese), adresa retelei este
193.226.51.0 si adresa de gateway este 193.226.51.1. Daca
IP=193.226.51.130 netmask=255.255.255.192, adresa de retea este deci
193.226.51.128 si gateway va fi 193.226.51.129. Gateway poate fi de fapt
oricare din IP-urile din subnet (in afara de adresa de retea si
broadcast) dar exceptiile de la regula anterioara se fac doar pentru
situatii speciale (de ex. pentru a schimba iesirea Internet a unora
dintre calculatoare printr-o a doua legatura).
DNS-ul este prescurtarea de la Domain Name System si este o baza de
date distribuita (ierarica) care contine corespondente intre nume de
host (ex: www.yahoo.com) si IP-uri (ex. 216.32.74.52). Aceasta baza de
date contine si informatii despre adresa IP a serverului de email pentru
un domeniu, ca si corespondente intre IP si nume de host. Pentru a putea
accesa aceaste baza de date trebuie sa existe setat cel putin o adresa
de DNS, uzual doua, pentru cazul in care primul nu functioneaza. IP-ul
respectiv este al unuia dintre calculatoarele care are instalat un
server DNS si este bine sa existe o legatura cat mai buna pana la el
(pentru retele mai mari se instaleaza un server DNS chiar in reteaua
locala). Majoritatea serverelor DNS din lume raspund la interogari DNS,
dar timpul de raspuns este direct proportional cu calitatea conexiunii
pana la el, deci este bine sa fie cat mai aproape. Avand setat un server
DNS valid, calculatorul poate sa afle IP-ul asociat oricarui nume de
host din Internet. Serverul web apelant interogheaza recursiv mai multe
servere, incepand cu unul din serverele "root" pe care le are
predefinite. De ex. pentru domeniul www.yahoo.com intreaba un server
"root" care ii spune ca stie nameserverele care se ocupa de domeniile
terminate in ".com". Intreaba unul dintre aceste nameservere (virtual
echivalente) si afla ca www.yahoo.com are un anumit IP (in cazul
www.yahoo.com exista chiar o lista de IP-uri asociate, pentru impartirea
cererilor intre mai multe servere). De obicei un nume de host se rezolva
intr-un singur IP.
Testarea conexiunii: in primul rand trebuie verificata conexiunea pana
la gateway. In primul rand trebuie verificata conexiunea pana la
gateway. Se va da un ping catre adresa de gateway. Indiferent daca
platforma este Linux sau Windows, o functionare a conexiunii este
ilustrata prin afisarea timpului in care pachetul de ping a facut drumul
"dus-intors". In caz contrar se afiseaza "time out" pe Windows sau nu se
afiseaza nimic in cazul Linux-ului. Daca acest test esueaza, in
cvasitotalitatea cazurilor conexiunea este inutilizabila. Exista cazuri
rare in care gateway-ul este configurat (printr-un firewall) sa nu
raspunda la ping (nerecomandabil) si conexiunea sa fie functionala.
Aceste cazuri sunt rare insa. O comanda mai putin standard care exista
pe Linux si cu care se poate verifica indiferent de firewall este
arping. Prin ea se poate verifica conexiunea doar intre host-ul local si
alt host accesbil la nivel ethernet (cum este si gateway-ul). Se bazeaza
pe trimiterea unei cereri de ARP in retea, intrebandu-se ce placa de
retea are acel IP. Protocolul ARP este indispensabil comunicarii, daca
un calculator cu acel IP este accesibil la nivel ethernet, atunci el va
raspunde. O alta metoda de diagnosticare este verificarea tabelei de ARP
dupa ping. Chiar daca exista un firewall, calculatorul spre care se da
ping va raspunde la cererea ARP, deci tabela ARP va contine
corespondenta intre acel IP si adresa fizica ("MAC-address-ul") placii
de retea a calculatorului cu acel IP. Tabela ARP se poate vedea pe Linux
prin comanda "arp –na" iar in Windows cu comanda "arp -a". O
modalitate mai puternica de depanare a retelei este uilitarul de Linux
tcpdump. Rulat cu "tcpdump –i eth0" de exemplu va afisa cateva
informatii (sursa, destinatie, port) despre fiecare pachet care trece
prin prima interfata de retea (eth0). Pentru filtrarea informatiilor se
pot da argumente mai complexe, in care sa se specifice ce tipuri de
pachete sa se afiseze. Ruland tcpdump de pe un calculator pe care nu se
face trafic in retea, dar legat la o retea in care se face trafic, se
vor observa broadcast-urile celorlate calculatoare care sunt legate in
retea, de exemplu cereri ARP. Astfel se poate vedea daca conexiunea
exista (cel putin intr-un sens, spre calcularul de pe care se fac
teste). Astfel se poate si identifica dintre doua interfete care este
eth0 si care este eth1 (se va pune cablul de retea in fiecare, pe rand,
in timp ce se face "tcpdump –i eth0". In cazul in care se incearca un
ping, chiar daca legatura intre interfata si retea nu este functionala,
se vor observa totusi cereri ARP ale calculatorului local, de genul "arp
who has
tell " sau "arp who has
tell ". Acestea nu trebuiesc confundate cu traficul pe care
placa il observa din retea.
In momentul in care legatura pana la gateway este functionala este
foarte probabil ca legatura sa functioneze si in alta parte. Se poate
incerca un ping la IP-urile serverelor DNS. Verificarea nu poate da
informatii despre functionarea serverului DNS, dar poate verifica daca
serverul este pornit si accesibil. Daca si nameserverele raspund, se
poate incerca ping la un nume de host. Este bine sa se inceapa cu un
ping la o adresa apropiata (ping www.ici.ro). Ping-ul ar trebui macar sa
translateze numele de host in IP (iar acesta sa apara pe ecran), chiar
daca hostul este inaccesibil. Daca comanda ping se blocheaza fara sa
afiseze IP-ul desinatie sau spune "invalid host name" inseamna ca
rezolvarea de nume nu functioneaza. Ori serverul (serverele) DNS sunt
nefunctionale, ori este o problema cu configurarea DNS pe calculator. Se
va verifica corectitudinea datelor introduse, in cazul Linux-ului in
fisierul /etc/resolv.conf, in cazul Windows-ului in
"Start/Settings/Control-Panel/Network/TCP-IP/Properties/DNS_configuratio
n". Chiar daca rezolvarea numelor nu functioneaza pentru primul host,
merita incercat si alt host care se stie ca functioneaza in "foc
continuu" (ex: www.yahoo.com). Exista posibilitatea ca rezolvarea de
nume sa nu functioneze si din cauza faptului ca accesul la serverele
"root" nu sunt accesibile de catre nameservere (ex. conexiunea Internet
nu este functionala). Se va incerca daca este posibil si cu un host din
domeniul de care este responsabil acel nameserver (multe nameserver-e nu
sunt numai apelanti ai bazei de date distribuite, ci contin chiar o
portiune din acesta baza de date – gazduiesc un domeniu internet, de
exemplu "unibuc.ro", adica stie toate hosturile care se termina in
"unibuc.ro"). Daca rezolvarea de nume nu functioneaza si se cunoaste un
IP din exterior, se poate incerca ping la acel IP si daca nu
functioneaza se poate da un "traceroute " pe Linux sau "tracert
" pe Windows. Ultimul IP afisat este ultimul IP accesibil de pe
calculatorul local. Este posibil ca legatura intre acel ultim host
(router) atins si urmatorul sa fie nefunctionala, sau hostul urmator
este nefunctional. In functie de numarul de routere prin care a reusit
sa treaca pachetul se poate estima unde este problema. Daca o adresa
raspunde la ping catre numele sau (ex. ping www.yahoo.com) dar nu poate
fi accesata din browser (Netscape, Internet Explorer) cauza este foarte
probabil sa fie o setare de proxy prin care browserul este instruit sa
nu acceseze direct paginile, ci sa le ceara unui server proxy. In
Netscape, setarea de proxy se afla in Edit/Preferences/Advanced/Proxyes,
iar in Internet Explorer in View/Internet Options/Connection.
Conectarea mai multor calculatoare la Internet
Avand un IP si o conexiune valida la Internet, se pune problema legarii
celorlalte calculatoare din apropierea sa la Internet. Probabil exista
deja o retea pentru comunicarea acelor calculatoare intre ele, nu
trebuie decat ca aceasta retea sa fie conectata la Internet. Pentru
aceasta va fi nevoie de un router, cea mai simpla solutie fiind
folosirea unui PC echipat cu doua placi de retea, una spre iesirea
Internet si cealalta spre reteaua locala. O solutie foarte buna este
instalarea pe router a sistemului de operare Linux, el oferind o multime
de oportunitati precum gazduirea email-ului, a unui proxy, gazduirea
unei pagini de web, al unui site ftp si protectia retelei interne fara
absolut nici un cost in afara costurilor hardware. Cu putin mai multa
memorie o masina cat de cat decenta se poate folosi in acelasi timp si
ca statie de lucru, si chiar sa se lucreze remote pe ea de catre mai
multi utilizatori.
Instalarea Linux-ului
Imediat dupa bootarea cu CD-ul de instalare se solicita cateva optiuni
precum interfata de instalare de tip grafic sau text. De obicei
instalarea in interfata grafica consuma mai multe resurse, deci
instalarea in mod text este mai rapida. Alte optiuni precum tipul de
mouse, tastatura, diferenta fata de timpul GMT, etc mai sunt cerute. In
cazul in care se detecteaza o interfata de retea se cere si configuratia
placii de retea (IP, netmask, gateway, nameserver-e, nume de host). Se
mai cere setarea parolei de administrator (root), unele distributii
cerand sa se creeze si un user obisnuit (ne-root). Cel mai important
lucru (si oarecum mai delicat) este insa partitionarea si setarea
punctelor de montare a partitiei. Programul de instalare va intreba daca
se pastreaza partitiile existente sau se face repartitionare. La
partitionare se vor sterge partitiile existente, apoi se vor creea una
cate una partitiile, de obicei cea de swap prima si cea care se monteaza
in "/" a doua. Se poate stabilii ca anumite directoare (ex: /home =
directorul fisierelor personale ale utilizatorilor) sa fie "montate"
intr-o partitie separata. Stergerea unei partitii cu informatii
importante face extrem de dificila refacerea lor, deci este nevoie de
multa atentie. Odata cu stabilirea partitiilor pe care le va folosi
Linux-ul si a locului in care se vor monta ele se va cere permisunea de
formatare a acestora. In cazul in care partitia a fost deja formatata,
se poate trece peste formatare. Formatarea se poate face cu sau fara
verificarea hard-disk-ului. Verificarea dureaza foarte mult (zeci de
minute la hard-disk-uri mari) dar asigura impotriva defectiunilor fizice
care pot compromite la un moment dat sistemul. In cazul in care
hard-disk-ul a fost verificat de curand impotriva "bad-block-urilor
(zone de memorare nefolosibile)", se poate trece peste verificare. In
cazul in care nu se alege formatarea, instalarea va continua normal, nu
se vor sterge eventuale fisiere existente, cel mult se vor suprascrie
cele care coincid ca si nume/localizare cu cele ale sistemului care se
instaleaza. Exista si optiunea de upgrade care modifica doar fisierele
care s-au modificat de la versiunea anterioara, dar nu este recomandata
procedura. In plus nu se poate face decat de la versiunea anterioara din
aceeasi distributie.
Un alt lucru mai dificil este configurarea sistemului de X-windows.
Distributiile noi detecteaza un numar mare de placi video si monitoare,
dar in cazul in care sistemul nu reuseste trebuie date informatii
manual. Cel mai dificil ar fi specificarea frecventelor monitorului, de
obicei neexistand cartea tehnica a acestuia. Se pot incerca toate
posibilitatile la rand, incepand cu "High frecvency monitor 70Hz). Unele
placi video care sunt suportate de serverul SVGA nu au suport decat
pentru 256 culori, chiar daca placa video suporta mai multe culori.
Oricum, pentru un router nu este nevoie de functionarea sistemului
X-windows, modul text este suficient.
Un lucru util este creearea unei disckete de boot pentru sistemul
instalat, acest lucru fiind facut chiar de catre programul de instalare
cu interogarea celui care instaleaza. O astfel de disketa foloseste in
cazul in care sectorul de boot al hard-disk-ului este suprascris din
greseala (de exemplu se instaleaza pe alta partitie Windows). In acest
caz se ba boota cu disketa si se va rula /sbin/lilo, care va reface
sectorul de boot. Sectorul de boot este primul sector al hard-disk-ului,
in cazul in care bios-ul este setat sa boot-eze de pe acest disk el
startand programul pe care il gaseste in acest sector. Acest program se
foloseste pentru a starta mai multe sisteme de operare, sau acelasi
sistem cu optiuni/kernele diferite. Cel mai folosit astfel de program
pentru Linux este "lilo" (linux loader). El poate starta la alegere si
alte sisteme de operare prezente in alte partiti (ex: Windows).
Programul de instalare va intreba unde se doreste instalarea programului
lilo, in MasterBoot (primul sector al hard-disk-ului) sau in primul
sector al partitiei de Linux. Se va alege prima varianta, cea de-a doua
folosind doar daca se foloseste un alt bootload-er global, care
starteaza bootload-erul lilo.
Alte optiuni cerute pot fi de exemplu tipul de encriptare a parolelor
(MD5 este default si este o alegere buna), tipul de securitate ("medium"
este o buna alegere). In general setarile default sunt alegeri
potrivite.
O portiune delicata este si alegerea pachetelor de instalare. Chiar si
in cazul cunoasterii pachetelor importante, uitarea unui pachet poate
cauza neplaceri ulterior, fiind mai dificila instalarea lui manuala. Cel
mai simplu este sa se instaleze "full", bineinteles aceasta alegere
necesita existenta spatiului necesar pe hard-disk. Unele distributii au
pre-configurari pentru diferite utilizari ale viitorului sistem (ex.:
server, statie de lucru, statie grafica, etc). Este recomandat macar sa
se instaleze toate serverele de X-windows (default se instaleaza doar
serverul care suporta placa video care a fost detectata), in cazul unei
schimbari a placii video nefiind necesara instalarea driverului.
Daca totul a decurs bine, dupa instalare sistemul se restarteaza si
porneste bootloader-ul care fara a se apasa nici o tasta porneste dupa
un timeout noul sistem instalat. In cazul configurarii corecte a retelei
se poate trece direct la verificarea conexiunii de retea. In cazul in
care ceva nu functioneaza bine incepe travaliul de depanare. Daca exista
o a doua placa ea trebui configurata si ea. Fiecare distributie are
utilitarul propriu de configurare (ReadHat are "linuxconf/netconf", Suse
are "yast", etc). Toate utilitarele sunt interfete catre programe
low-level care se pot apela din linie de comanda sau dintr-un script
continand astfel de comenzi. In cele ce urmeaza se va discuta doar
folosirea acestor comenzi low-level, ele fiind general valabile in toate
distributiile, spre deosebire de interfetele mai mult sau mai putin
prietenoase.
Comenzi low-level de configurare retea
ifconfig este comanda de configurare a interfetelor de retea. "ifconfig
-a" afiseaza interfetele activate si configurarea lor. In cazul in care
output-ul nu incape intr-o pagina de ecran, se poate folosi comanda
"filtru" "more" care afiseaza output-ul pagina cu pagina (ifconfig
–a|more). Se poate folosi cu cale completa (/sbin/ifconfig) daca
directorul /sbin nu este in lista de directoare in care se cauta
executabilele – variabila se enviroment PATH). Informatiile afisate
contin ip-ul asignat, netmask-ul, adresa broadcast, counteri de pachete
primite/trimise, erori de mai multe tipuri, utile in depanare. O
interfata care a fost recunoscuta de kernel se poate activa cu "ifconfig
eth0 inet netmask broadcast (sau se
inlocuieste eth0 cu eth1, eth2, etc). O interfata virtuala (alias) se
poate face pe o interfata inlocuind eth0 cu eth0:1, eth0:2, etc).
Interfetele virtuale nu folosesc decat in cazuri speciale cand se
simuleaza printr-o placa de retea fizica mai multe placi de retea.
Interfata lo este bine sa existe in toate sistemele (chiar daca nu sunt
legate la retea). Ea este o interfata virtuala, care doar returneaza
pachetele trimise spre ea. Este folosita pentru a simula prin ea
conectarea de tip retea catre propriul calculator (de exemplu se poate
incarca o pagina de web de pe aceeasi masina dand http://localhost sau
http://127.0.0.1).
route este comanda de configurare a routelor (routele controland
directia in care se trimite un pachet spre o oarecare grupa de
destinatii). "route -n" afiseaza routele curente, eventual se poate
folosi "/sbin/route -n|more" cu paginarea output-ului.Routele contin pe
linie adresa retelei, gateway-ul pentru a ajunge la acea retea,
netmask-ul retelei, interfata prin care se ajunge la subnet si alte
informatii mai putin utile depanarii. Ideea ar fi ca pentru fiecare
pachet se parcurge fiecare linie de sus in jos, pana cand destinatia
facuta si bit cu bit cu masca de retea da adresa retelei din stanga.
In acel moment se expediaza pachetul pe interfata scrisa in dreapta,
catre placa de retea care raspunde la cererea de ARP pentru IP-ul de
gateway. Ultima linie contine la netmask si adresa de retea "0.0.0.0",
deci orice IP va face "match" cu aceasta regula, pachetul cu destinatie
spre care nu exista routa explicita va pleca spre "default gateway". O
routa care are trecut la gateway 0.0.0.0 este o routa "directly
connected" adica IP-urile din acel subnet sunt accesibile direct (la
nivel ethernet prin acea interfata). O routa spre un subnet se adauga cu
comanda "route add –net netmask gw ". O
routa catre un host se adauga cu comanda "route add -host gw
dev " sau "direct pe interfata" cu "route add -host dev
". In kernelurile noi routa catre IP-urile din acelasi subnet cu
IP-ul/IP-urile proprii se pune automat la ridicarea interfetei, prin
acea interfata. In general nu trebuie pusa decat routa default prin
"route add default gw ". Spre trebuie sa existe o
routa "direcly connected", daca gateway-ul este standard, un IP din
acelasi subnet cu IP-ul calculatorului, aceasta routa exista. In caz
contrar se poate pune o routa catre acel host pe acea interfata dar o
asemenea necesitate este generata in general de proiectari defectuase
ale retelei sau stari de tranzitie.
Studiu de caz
Presupunem ca exista un cablu UTP pana la un laborator dotat cu 20
calculatoare care au instalat sistemul de operare Windows, legate prin
cablu BNC (coaxial) care trece pe la fiecare calculator. Este asignat un
IP (193.226.51.54) cu netmask 255.255.255.192, gateway 193.226.51.1.
Unul din calculatoare va fi instalat cu Linux, punandu-i-se inca o placa
de retea cu priza UTP (majoritatea placilor BNC au si priza UTP). Placa
dinspre cablul UTP (spre Internet) va avea IP-ul 193.226.51.54. Placa
dinspre BNC (reteaua locala) va avea un IP "neroutabil", dintre cele
special rezervate pentru uz intern (nu sunt folosibile in Internet). De
exemplu va avea adresa 192.168.101.1 (IP=urile care incep cu 192.168. si
cele care incep cu 10. sunt "neroutabile"). Netmask-ul va fi pentru
reteau locala 255.255.255.0 (256 calculatoare maxim). Se putea pune si
255.255.0.0 (65536 calculatoare maxim) dar nu este nevoie. Comenzile de
configurare ar trebui sa fie:
ifconfig eth0 inet 193.226.51.54 netmask 255.255.255.192 broadcast
193.226.51.63
route add default gw 193.226.51.1
ifconfig eth1 inet 192.168.101.1 netmask 255.255.255.0 broadcast
192.168.101.1
Pentru configurarea DNS trebuie editat fisierul /etc/resolv.conf.
Editorul standar UNIX este vi (vi /etc/resolv.conf). Se va muta cursorul
pe linia dorita, se vor sterge caractere cu tasta "x". Se va trece in
modul "insert" apasand tasta "i", se vor face adaugarile si se va salva
si iesi din editor trecand in mod "comanda" cu tasta "Esc" si apasand
ulterior ":wq". Un alt editor (mai intuitiv, semanand cu vechiul
WordStar) este joe (joe /etc/resolv.conf). Se va edita fisierul si se va
iesi cu "Ctrl+K,X" – se apasa simultan Ctrl si K, apoi se elibereaza
si se apasa X. Un help mai amanuntit se obtine cu "Ctrl+K,H". Daca
exista instalat utilitarul "mc" (o interfata text semanand cu norton
commander) atunci se poate folosi editorul sau "mcedit".
Pe statiile Windows se va configura adresa de IP 192.168.101.x (x intre
2 si 254), netmask 255.255.255.0, gateway 192.168.101.1, DNS server
193.226.51.4. Hostul se poate pune dupa dorinta de ex: statie-2,
statie-3, etc, domeniul poate fi cel al institutiei (de exemplu
math.unibuc.ro), poate fi fictiv sau poate lipsi.
Pentru a functiona cele 20 de calculatoare in retea, mai este necesar sa
se activeze routaerea si masquarading-ul. Pentru activarea routarii se
va scrie "1" in fisierul virtual /proc/sys/net/ipv4/ip_forward cu
comanda:
echo "1" > /proc/sys/net/ipv4/ip_forward
Pentru a face masquarade este suficient sa se scrie o singura comanda,
in cazul kernelelor 2.2.x sau celor 2.4.x cu modulul de ipchains activat
comanda este:
ipchains –I forward –s 192.168.101.0/255.255.255.0 –j MASQ
sau
ipchains –I forward –s 192.168.101.0/24 –j MASQ
(/24 reprezinta o notare prescurtata a mastii de retea, prin numarul de
biti "1" pe care ii contine la inceput).
Deja calculatoarele Windows ar trebui sa poate accesa Internet-ul.
Pentru asigurarea unei securitati sporite si pentru unele servicii
suplimentare mai trebuiesc insa facute cateva configurari. Comanda
simpla prezentata mai sus activeaza de fapt un mecanism complicat numit
"masquarading", un caz particular de NAT (Network Address Translation).
Pentru configurare se foloseste acelasi utilitare prin care se
configureaza firewall-ul ("ipchains" sau "iptables" in kernel 2.4.x).
Prin acest mecanism, pachetelor venite de la calculatoarele cu adrese
neroutabile (192.168.101.x) li se modifica adresa sursa cu adresa
dinspre Internet a Linuxului si portul cu un port liber al Linuxului.
Pachetul de raspuns ajunge la adresa sursa, adica la Linux, care tine
intr-o lista cu translatarile facute, si modifica destinatia pachetului
cu sursa si destinatia oficiala. Astfel, un server accesat de un
calculator din "spatele" Linuxului are impresia ca a fost accesat de
catre Linux, iar masina care face accesul are impresia ca ea a discutat
direct cu serverul din Internet. Acest mecanism se preteaza cel mai bine
la conexiuni TCP/IP dar functioneaza fara probleme si cu pachete UDP si
ICMP. Singurele probleme care apar sunt in cazul in care o aplicatie din
spatele Linux-ului negociaza prin legatura stabilita un alt port de
comunicare decat cel de pe care a plecat conexiunea initiala. Linux-ul
nu poate afla despre acest port decat daca cunoaste protocolul folosit
in negocierea portului (ex. FTP). In acest caz serverul din Internet
considera ca trebuie sa se conecteze cu cel cu care a discutat (din
punctul lui de vedere a discutat cu Linuxul). Linuxul nu poate forwarda
cererea de deschidere a conexiunii venita din Internet spre masina din
spatele Linuxului ci o considera o conexiune venita spre sine, si o
respige. Pentru protocoalele foarte folosite (FTP de exemplu) exista
module speciale care urmaresc negocierea intre aplicatii si forwardeaza
conexiunea de feed-back la calculatorul "masquaradat". Este evident ca
pe un calculator care iese in Internet prin masquarade nu se poate pune
un server accesibil din Internet. Pe de alta parte insa, aceasta
reprezinta si o protectie fata de posibilitatea unor atacuri din
exterior spre reteaua locala. De obicei in reteaua locala nu exista
decat statii de lucru, doar initiatori de conexiuni, nu servere accesate
din exterior. Pentru astfel de cazuri serverul se instaleaza pe Linux,
sau daca nu este posibil se folosesc adrese routabile.
Recompilarea kernel-ului
In cazul in care distributia care se instaleaza nu contine support
pentru un anumit device (de exemplu o anumita placa de retea), este
destul de probabil ca problema sa se rezolve prin compilarea unui kernel
cu support pentru acel device. Sursele kernel-ului sunt continute in
distributie sau se pot download-a ca arhiva tar.gz si tar.bz de la un
mirror apropiat de kernel (ex. ftp://ftp.linux.ro/pub/kernel). Arhivele
se numesc linux-2.x.y.tar.gz (sau similar cu tgz=tar.gz sau tar.bz). tar
este extensia prin care se desemneaza o arhiva continand intr-un singur
fisier mai multe fisiere si directoare. Extensia .gz este data in
momentul comprimarii acestei arhive cu gzip, bz fiind extensia in cazul
arhivarii cu bzip2. Arhiva se "desface" prin decomprimare (gunzip
linux-2.x.y.tar.gz) si dezarhivare (tar –xvf linux-2.x.y.tar).
Decomprimarea pentru fisiere .bz se face cu bunzip fisier.bz. Pentru
arhive .tar.gz se poate folosi tar –xvzf linux-2.x.y.tar.gz care face
in acelasi timp si decomprimarea. Optiunea -v este folosita pentru a
activa modul "verbose" in care se afiseaza fiecare fisier extras din
arhiva, -z semnificand faptul ca se face intai decomprimarea iar -x
faptul ca se face extragere din arhiva. Dupa -f s epune numele arhivei.
Arhiva a fost facuta printr-o comanda de genul "tar –cvzf
linux-2.x.y.tar.gz linux". In momentul in care se dezarhiveaza, se
creeaza in directorul in care se face dezarhivarea un director numit
"linux". Pentru compilare se intra in acest director ("cd linux") si se
fac urmatorii pasi:
- make menuconfig – se configureaza ceea ce sa contina viitorul
kernel.Exista o configuratie default de la care se pleaca si care se
modifica in functie de nevoi. Important este ca procesorul ales la
configurare sa nu fie mai puternic decat cel de pe masina pe care se
instaleaza. In plus, daca exista device-ul speciale (scsi, placi
ethernet) trebuiesc incluse in configuratie. Exista cateva facilitati
care se pot include in kernel in plus fata de configuratia default (de
ex. support pentru partitia de Dos/Windows), dar ele nu sunt in general
neaparat necesare pentru functionarea sistemului. Pe de alta parte
majoritatea optiunilor incluse nu fac sistemul nefunctional, cel mult
maresc kernelul nejustificat. Trebuie avut grija sa nu se includa
optiunea "Kernel autoreconfiguration" pentru ca in acel moment viitorul
kernel va incerca sa booteze din retea. O privire prin help-ul fiecarei
optiuni este binevenita. Exista si o versiune grafica a programului de
configurare (make xconfig)
- make dep – se refac dependintele intre module
- make bzImage – se compileaza kernelul. Acesta va fi depus in
arch/i386/boot/bzImage . Kernelul este comprimat cu autoextract pentru
micsorarea dimensiunii, trebuind sa poata fi reprezentat pe disk intr-un
bloc contiguu. Dupa compilare el se muta in alt director (uzual /boot)
si se introduce in /etc/lilo.conf o intrare catre el dupa modelul celor
deja existente. "label" este numele prin care se poate alege acel kernel
din lilo, root reprezinta partitia pe care o va monta ca "/", image
reprezinta kernelul. read-only se specifica pentru ca sistemul trebuie
sa monteze partitia root read only, sa starteze programul /sbin/init,
care verifica integritatea partitiei si abia apoi face "remontarea"
read-write". Mai multe optiuni se pot trimite kernelului la bootare cu
optiunea append. Daca inainte de montarea partitiei este necesara
inserarea unor module care sa recunoasca partitia, se foloseste
"initrd", montandu-se un fisier ca partitie "/", din care se insereaza
modulul si se monteaza apoi partitia de pe disk.
- make modules – se compileaza modulele in cazul in care unele
optiuni au fost incluse ca module. Suportul pentru toate placile de
retea se poate compila astfel fara sa mareasca dimensiunea kernelului,
urmand sa fie incarcat cel de care este nevoie.
- make modules_install – se instaleaza modulele intr-un director si se
realizeaza si o harta a dependintelor intre ele
- make install – face alte setari pentru noul kernel
- lilo – reinstaleaza lilo cuprinzand si noul kernel
Bootare fortata
Lilo este aplicatia care se starteaza de catre bios la pornirea
calculatoruluil. Este un program simplu in care se poate alege una din
mai multe optiuni. Fiecare optiune reprezinta un kernel si anumite
optiuni (in afara cazurilor in care se starteaza sistemul de pe o
partitie non-Linux). Lilo incarca kernelul si ii transmite cateva
optiuni printre care partitia pe care sa o monteze ca root ("/") si
programul pe care sa il lanseze din acea partitie. Pentru un kernel cu
label "lin" se poate da in lilo "lin root=/dev/hda2 init=/bin/bash ro".
In acest caz linuxul va porni de pe partitie programul de shell
(/bin/bash) si va exista o consola de administrator. La bootarea normala
se starteaza programul /sbin/init, care lanseaza toate celelalte
programe precum programul de login, daemonii (serverele), etc. Partitia
astfel montata este read-only, de pe ea se poate rula un program care sa
verifice si sa repare o partitie ajunsa inconsistenta din cauza unei
caderi de curent de exemplul prin "/sbin/e2fsck –y /dev/hda2". Se
poate trece in read-write prin "mount -n –o remount, rw /" pentru a
face anumite modificari (schimba parola de root daca cea veche a fost
uitata) . Inainte de restartare este bine sa se treaca partitia in
read-only prin "mount -n –o remount, ro /". Este indicat sa se ruleze
si comanda sync pentru salvarea din memorie a bufferelor pe disk.
De unde se obtin adresele IP routabile
Adresele routabile 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 masquarade nu se aloca IP-uri routabile. 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 router catre vecinii sai a routelor pe care le
cunoaste. In acest fel, dupa un scurt timp fiecare router afla fiecare
routa din Internet. Routerele de la "periferia" Interetului (care separa
cateva retele de restul Internetului) agrega routele din Internet intr-o
singura routa (routa default sau 0.0.0.0/0), ignorand spatiile libere
(clasele de adrese nefolosite inca). El are uzual o singura conexiune la
Internet, iar routerul 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
routere, pana la un "core" router 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
routa catre acea destinatie.
Domenii DNS
Pentru a putea fi accesat din Internet printr-un anumit nume de host (nu
numai prin IP) trebuie sa existe o "intrare DNS" continand acel nume si
pointand catre IP-ul tau. Aceasta inregistrare se realizeaza pe un
nameserver responsabil cu un anumit domeniu, in care se doreste acel
nume de host. De exemplu daca se doreste numele www.unibuc.ro trebuie
realizata inregistrarea pe nameserverele care sunt responsabile pentru
acest domeniu (standardul cere ca pentru fiecare domeniu sa existe cel
putin doua nameservere, pentru backup in cazul in care unul din ele
devine nefunctional). In cazul in care domeniul nu existe (de exemplu se
doreste numele www.ecuatii.ro) domeniul trebuie creeat pe nameserverul
care se ocupa de domeniile .ro". Autoritatea care creeaza domenii ".ro"
este tot RNC (cea care poate asigna si IP-uri). Pentru un pret modic,
care ii asigura autofinantarea, RNC poate delega catre doua nameservere
un anumit domeniu. In acel moment orice modificare din acel domeniu se
face pe cele doua nameservere, eventual se pot face subdomenii. Daca
unul din nameservere poate fi usor Linux-ul folosit si ca router
instaland un program din distributia standard numit named, celalalt
nameserver nu este intotdeauna disponibil. Se poate folosi un nameserver
al providerului sau chiar ambele nameservere ale providerului (orice
provider care se respecta are macar 2 nameservere). Se pot configura
nameserverele providerului sa incarce informatiile despre domeniu din
nameserverul proprietarului domeniului. Informatiile despre un domeniu
mai sunt numite si "zone" iar nameserverul configurat sa incarce "zona"
de la alt nameserver este numit "slave" fata de cel de pe care se
incarca zona care este numit "master" pe respectiva zona. Aceste
denumiri sunt relative, un server "master" poate fi "slave" la ransul
sau altui nameserver. Rezolvarea unui domeniu se poate verifica cu
comanda host. De exemplu: "host www.yahoo.com" rezolva adresa de host in
IP, "host –t mx yahoo.com" afiseaza serverele de email care deservesc
domaniul yahoo.com, "host –t ns yahoo.com" afiseaza nameserverele care
sunt responsabile cu domeniul "yahoo.com". Aceste raspunsuri sunt cerute
de la nameserverul setat default (in /etc/resolv.conf), in cazul in care
se doresc informatii de la un alt nameserver se adauga nume sau la
sfarsitul comenzii, de exemplu "host –t ns unibuc.ro ns.rnc.ro"
verifica la RNC pe ce nameservere sunt definite informatiile despre
domeniul unibuc.ro. Acest lucru este util deoarece un nameserver in care
este configurat un domeniu si este declarat master pe acesta raspunde
din fisierul propriu de configuratie pentru acest domeniu, chiar daca el
nu este inregistrat in Internet ca responsabil pentru domeniu. Restul
Internetului (cei care nu il folosesc ca nameserver direct) nu il vor
intreba despre domeniu si vor avea o alta viziune asupra domeniului
(data de realele nameservere responsabile).
Serverul de email
In momentul in care exista un domeniu, se pot creea si casute postale de
tip user@domeniu. Pentru a putea folosi aceste adrese de email trebuie
sa exista in zona care se refera la acest domeniu o inregistrare de tip
"IN MX" (inregistrarile despre IP-ul unui host sunt de tip "IN A").
Ip-ul care este trecut in acesta inregistrare va fi accesat pe portul 25
pentru a i se livra emailul pentru acest domeniu. Se pot definii mai
multe intrari MX, pentru cazul in care unul din servere nu este
disponibil. Exista prioritati, numarul mic inseamna prioritate mai mare.
Serverul de email este si el in distributiile standard de Linux, exista
chiar mai multe (sendmail, qmail, postfix). Scopul serverului de email
este sa primeasca si sa trimita mesaje email. Mesajele pot fi catre
domeniul pentru care are definite casutele postale sau pot fi mesaje
trimise de utilizatori (detinatorii casutelor postale) catre alte
servere de email din Internet. Actiunea prin care un server de email
primeste un mesaj care nu ii este adresat pentru a-l forwarda mai
departe se numeste "relay". Serverul de email trebuie sa faca "relay"
doar pentru utilizatorii care au casute postale acolo, altfel cineva
poate trimite email nesolicitat ("spam") prin acel server email, pentru
a-si ascunde identitatea fata de destinatar. Primirea emailului si
trimiterea lor sunt lucruri distincte, pe care le poate face un singur
server de email sau doua separate. Emailul primit se poate citi local de
pe server cu un client de email ("mail", "pine") sau se poate citi
remote cu un client special de email prin POP3 sau IMAP din Netscape
Communicator, Outlook Express, etc. Trimiterea se face din acesti
clienti, specificand-use un server. De remarcat faptul ca daca in cazul
citirii emailului se cere un username si o parola, in cazul trimiterii
nu se cere uzual vreo parola, si chiar se pot trimite emailuri cu orice
sursa, singura cerinta fiind ca domeniul adresei sursa sa se poata
"rezolva" – sa existe pentru el o intrare "MX".
Proxy
De multe ori, mai multi utilizatori acceseaza aceleasi pagini, facand
acelasi transfer de mai multe ori inutil. Pentru a se folosi mai
eficient conexiunea la Internet s-a proiectat un server "proxy" care are
rolul de a prelua cererile de la browser si de a intoarce pagina ceruta,
fie accesand Internet-ul, fie accesand "cache"-ul pe care il face pe
hard-disk cu paginile accesate anterior. Se fac verificari ale datei de
modificare pentru paginile care au termen de expirare. Proxy-ul poate fi
si o varianta la masquarade, dar are dezavantajul ca poate fi folosit
doar pentru anumite protocoale pentru care este proiectat (http, ftp,
etc). Browser-ele au de obicei implementat protocolul de interogare a
proxy-urilor, nu trebuie decat configurat IP-ul masinii proxy si portul
pe care "asculta" serverul de proxy. Unele proxy-uri pot fi setate sa
ceara si o autentificare username/password. Exista si o varianta mai
speciala de proxy numita "transparent proxy" prin care pachetele care au
plecat spre Internet sunt redirectate de catre routerul Linux spre
portul pe care "asculta" proxy-ul, iar acesta raspunde la cererea pe
care browserul crede ca o face serverului web din Internet. Avantajul ar
fi ca nu mai trebuie instruiti utilizatorii sa seteze/deseteze proxy-ul
din browser. Redirectarea catre portul de proxy se face tot cu
utilitarul care configureaza firewall-ul ("ipchains" sau "iptables"), o
linie de redirect ar arata cam asa:
ipchains –I input –s 192.168.101.0/24 –d 0.0.0.0/0 80 –p tcp
–j REDIRECT 3128
unde 3128 este portul pe care asculta proxy-ul, 0.0.0.0/0 reprezinta
reteaua continand orice IP, 80 reprezinta portul de http, tcp
reprezinta tipul de protocol IP.
Securitate
In momentul conectarii la Internet problema securitatii devine mult mai
complexa, posibilitatea conectarii in orice punct al Internet-ului aduce
cu sine si posibilitatea unui atac din Internet. In momentul in care
exista doar o retea locala izolata, numarul celor posibil interesati de
a eluda securitatea sistemului este limitat, atat prin numarul mic de
persoane care au acces la aceasta retea cat si prin faptul ca eventuale
incercari de atac pot fi descoperite si se pot lua masuri impotriva
atacatorului. In cazul atacurilor din Internet, atacatorul poate fi greu
descoperit, si chiar descoperit se poate dovedii greu fapta acestuia. In
plus, atacatorul (numit si hacker) din Internet nu are nici un interes
in comun cu institutia al carui calculator a fost atacat, deci nu vor
manifesta prea multe scrupule. Hacker-ii pot distruge date importante
fara sa aiba un interes direct in aceasta, pot insa si accesa date
confidentiale si pot aduce prejudicii financiare prin "furt electronic".
In cazul unei institutii non-profit nu exista prea multe date secrete,
in afara de parolele de acces in sisteme. Hacker-ii pot folosi aceste
sisteme ca punct de plecare pentru atacul altor sisteme, pentru a fi
mult mai greu localizati. Ei pot distruge si date importante pentru a
isi demonstra puterea sau din neglijenta. Protectia sistemelor conectate
la Internet se face in special la demarcatia intre reteaua locala si
Internet. In momentul in care atacurile din Internet sunt controlate,
securitatea revine la simplitatea administrarii unui retele locale.
Pentru a realiza o astfel de securitate reteaua se proiecteaza astfel
incat iesirea in Intrenet (sau fiecare iesire daca exista mai multe) sa
treaca printr-un firewall (de obicei un router) care sa contina niste
reguli stricte in privinta pachetelor care intra din Internet in retea
locala (uneori si pentru pachetele care pleaca in Internet). Acest
firewall poate fi facut foarte usor pe routerul Linux, care are deci
inca un rol in retea. Trebuie spus ca nu se poate aprecia securitatea
dupa existenta sau nu a firewall-ului. Exista firewall-uri mai bune (mai
restrictive) si mai putin bune (mai permisive). Firewall-urile mai
restrictive pot adauga anumite dificultati pentru utilizatori (de
exemplu accesul la FTP), de aceea chiar avand firewall sistemul poate fi
totusi vulnerabil la anumite atacuri. Exista doua extreme, firewall-ul
care permite orice (echivalent cu lipsa lui) si firewall-ul care nu
permite accesul niciunui pachet (echivalent cu intreruperea cablului
intre reteaua locala si Internet. Acest ultim caz este complet sigur din
punct de vedere al securitatii dar nu permite nici accesul in Internet
dinspre reteaua locala. De aici se poate pleca insa, permitand pe rand
numai pachetele care sunt neaparat necesare.
Cele mai utilizate atacuri sunt de tip Deny of Service (DoS) si de tip
"remote shell". Primul tip de atac urmareste aducerea in stare de
nefunctionare a sistemului, supraincarcand-ul de obicei, cel de-al
doilea urmareste accesul la resursele sistemului, fiind mai destructiv.
Atacul DoS se poate face de exemplu trimitand cereri foarte multe unui
server. De exemplu se se poate face un flood (inundare) cu pachete de
deschidere a conexiunii (SYN). Sistemul aloca resurse pentru fiecare
conexiune, dar conexiunile sunt abandonate deschise. In scurt timp
tabela de conexiuni creste foarte mult, la fiecare pachet trebuind
facute un numar de operatii proportional cu numarul de conexiuni. Daca
algoritmul de cautare nu este optimizat sistemul de operare poate
sucomba in scurt timp. In plus, daca aplicatia-server atacata deschide o
instanta a sa pentru fiecare conexiune, va umple foarte repede memoria
disponibila. In cazul in care numarul de conectari este limitat se poate
proteja incarcarea sistemului, dar il face sa respinga si conexiuni
valide. Daca atacul vine de pe o IP-sursa fix se poate pune o regula in
firewall care sa respinga aceste pachete, dar daca atacul vine de pe mai
multe surse (false) nu se poate face decat restrictionarea accesului de
la un numar de IP-uri prestabilite. In cazul unui server web acest lucru
echivaleaza cu nefunctionarea sa.
De obicei protectiile pentru atacuri DoS sunt dificil de facut, aceste
atacuri umplu de obicei banda catre Internet a celui atacat, facand-o
impracticabila, singura sansa este identificarea atacatorului si
reclamarea sa la providerul sau. De obicei atacul se face de pe un
server care nu ii apartine, pe care a obtinut acces prin mijloace
nelegale, deci proprietarul serverului poate fi atentionat sa ii
ingradeasca accesul. Totusi, atacurile DoS nu sunt extrem de multe,
avand in vedere ca se presupune ca trebuie sa existe o motivatie, o
razbunare (se practica intre utilizatorii de chat in momentul in care se
cearta dintr-un oarecare motiv). Pentru identificarea unui astfel de
atac in Linux se pot spiona pachetele care vin din Internet pe interfata
("tcpdump –i eth0 –n"). Pentru atacurile cu deschidere de conexiuni
se poate verifica si tabele cu conexiuni deschise prin "netstat –na".
Atacurile de tip "remote shell" sunt mai complicate, dar consecintele
lor sunt mai grave. Scopul atacului este obtinerea privilegiului de
administrator pe un calculator, deci accesul deplin la resursele
acestuia. Ca scop intermediar poate fi obtinerea unui cont de utilizator
obisnuit, urmand ca atacul sa continue "din interior". Un astfel de
acces se poate obtine fie prin autentificare cu un username/password
valide, fie "pacalind" un server care contine o greseala de programare.
Primul caz este mai putin probabil, el poate fi evitat instruind
utilizatorii sa nu instraineze parolele lor de acces si sa nu se
conecteze "din Internet" printr-o metoda necriptata. De multe ori pe
parcursul legaturii se afla programe care spioneaza conexiunile si
stocheaza parolele trimise in clar. Este si cazul accesului la email
prin POP3. Daca parola de autentificare la casuta postala este aceeasi
cu a utilizatorului de pe server, parola poate fi folosita pentru
accesul din exterior. O posibilitate de protectie este si limitarea
accesului shell din exteriorul retelei doar cu anumite surse. O
posibilitate mai speciala de interceptare a parolelor chiar daca sunt
cryptate printr-un algoritm cu chei publice este "Man in the midle
attack". Daca nu se realizeaza la prima conectare insa, clientul care se
conecteaza criptat (de ex. ssh) va detecta schimbarea cheii publice a
serverului si va afisa un avertisment. Este posibil ca acest avertisment
sa provina din reinstalarea serverului ssh, caz in care se poate sterge
inregistrarea clientului din .ssh/know_hosts .
Accesul prin pacalirea unui program pare la prima vedere putin probabil,
dar practica a demonstat ca astfel de atacuri sunt cele mai periculoase.
Majoritatea se bazeaza pe "buffer overflow", adica trimiterea unor date
peste capacitatea bufferului definit in program. Daca nu exista o
verificare a datelor care se copiaza in buffer, datele care sunt in plus
sunt scrise in memorie (in stiva program de exemplu) peste o portiune de
program executabil. Cand executia programului ajunge in acel loc,
programul executa acea instructiune (de exemplu deschiderea unei sesiuni
shell). Cum majoritatea serverelor ruleaza cu privilegii de
administrator (root), shell-ul obtinut va avea si el pr