<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog despre resurse educaţionale din IT &#187; Network</title>
	<atom:link href="http://resurse-educationale.uv.ro/?cat=139&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://resurse-educationale.uv.ro</link>
	<description>Cu informatii pentru dezvoltare personala, dar şi pentru studentţi, elevi, profesori, webmasteri, programatori</description>
	<lastBuildDate>Fri, 27 Jan 2012 01:12:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Tehnologia satelitilor. HowTo.</title>
		<link>http://resurse-educationale.uv.ro/?p=175</link>
		<comments>http://resurse-educationale.uv.ro/?p=175#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:53:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[calibrare]]></category>
		<category><![CDATA[configurare]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[isp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netsystem]]></category>
		<category><![CDATA[pppd]]></category>
		<category><![CDATA[satelit]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[thnologie]]></category>
		<category><![CDATA[tv]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=175</guid>
		<description><![CDATA[Sat (Satellite Technology) HOWTO Roberto Arcomano berto@fatamorgana.com, Florindo Santoro flosan@hack-it.net v1.3, 21 July 2001 Traducerea din limba engleza: Victor Plugaru vuk@go.ro Cu scuzele de rigoare pentru eventualele greseli sau inadvertente. Tehnologia satelitilor incepe sa devina o mare resursa pentru utilizatorii &#8230; <a href="http://resurse-educationale.uv.ro/?p=175">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Sat (Satellite Technology) HOWTO<br />
Roberto Arcomano berto@fatamorgana.com, Florindo Santoro<br />
flosan@hack-it.net<br />
v1.3, 21 July 2001<br />
Traducerea din limba engleza: Victor Plugaru vuk@go.ro<br />
Cu scuzele de rigoare pentru eventualele greseli sau inadvertente.</p>
<p>Tehnologia satelitilor incepe sa devina o mare resursa pentru<br />
utilizatorii de Internet, permitand largimi mari de banda pentru download,<br />
precum si pentru multe alte servicii interesante. Acest document tine<br />
de investigheze modalitatile de conectare a mediului Linux prin<br />
satelit, cum sa obtineti viteze superioare si sa partajati aceasta cu alti<br />
clienti. Puteti gasi ultimele versiuni ale acestui document la<br />
http://www.fatamorgana.com/bertolinux/sat/english &lt;http://www.fata-<br />
morgana.com/bertolinux/sat/english&gt; si http://www.hack-it.net/How-<br />
To/Sat-HOWTO.html &lt;http://www.hack-it.net/How-To/Sat-HOWTO.html&gt; .<br />
______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere</p>
<p>1.1 Introducere<br />
1.2 Copyright</p>
<p>2. Cunostinte necesare</p>
<p>2.1 Despre sateliti<br />
2.2 Cum lucreaza?<br />
2.3 Alte tehnologii<br />
2.4 Care este largimea de banda maxima?<br />
2.5 Cat costa?<br />
2.5.1 Costurile hardware<br />
2.5.2 Costurile conturilor<br />
2.6 Ce sateliti sunt folositi?<br />
2.7 Ce ISP-uri ofera servicii de acces prin Internet?<br />
2.8 Altceva?</p>
<p>3. Informatii tehnice</p>
<p>3.1 Functionare generala<br />
3.2 Frecvente<br />
3.3 Carduri receptoare DVB<br />
3.4 Configurarea nivelului legaturii de date DVB<br />
3.5 Functionarea TCP/IP<br />
3.6 Autentificarea<br />
3.7 Servicii pe care le pot folosi cu o conexiune prin satelit</p>
<p>4. Cerinte</p>
<p>4.1 Cerinte privind cunostintele<br />
4.2 Hardware<br />
4.3 Software<br />
4.4 Software TV<br />
4.4.1 Pentru Windows<br />
4.4.2 Pentru Linux</p>
<p>5. Configurarea echipamentului</p>
<p>5.1 Montajul<br />
5.2 Calibrarea<br />
5.3 Double Feed (LNB-uri duble)<br />
5.4 Reglajul nivelului legaturii de date</p>
<p>6. Configurarea  sub Linux</p>
<p>6.1 Instalarea Driverelor<br />
6.2 Configurarea fisierului /etc/dvbd.conf<br />
6.3 Daemonul dvbd<br />
6.4 Cum se configureaza serviciul EON<br />
6.5 Cum se configureaza serviciul Netsystem<br />
6.5.1 conexiuni VPN<br />
6.5.2 Patch pentru pppd<br />
6.5.3 setarea rutarii<br />
6.5.4 Patch pentru dvbd.c<br />
6.5.5 Testarea<br />
6.5.6 Obtinerea unor performante superioare<br />
6.5.7 Partajarea Netsystem cu mai multi clienti<br />
6.6 Cum se utilizeaza serviciul Sat Node</p>
<p>7. Configurarea sub Windows</p>
<p>7.1 EON<br />
7.2 Netsystem</p>
<p>8. Anexa A &#8211; Note<br />
8.1 Translatarea IP dinamic -&gt; Adrese MAC<br />
8.2 Cadrul TCP<br />
8.3 Download accelerator<br />
8.3.1 Sub Linux<br />
8.3.2 Sub Windows</p>
<p>9. Anexa B &#8211; Valori cunoscute pentru ISP-urile ce ofera servicii<br />
prin satelit</p>
<p>9.1 EuropeOnLine<br />
9.1.1 Transponder 113<br />
9.1.2 Transponder 114<br />
9.1.3 Transponder 115<br />
9.1.4 Transponder 103<br />
9.2 Netsystem<br />
9.2.1 Transponder 119<br />
9.3 Sat Node</p>
<p><span id="more-175"></span></p>
<p>______________________________________________________________________</p>
<p>1. Introducere</p>
<p>1.1. Introducere</p>
<p>Acest document intentioneaza sa explice cate ceva despre<br />
tehnologia satelitara, cum functioneaza, de ce aveti nevoie, configuarea<br />
si cum sa partajati accesul pentru mai multi clienti. Conexiunile prin<br />
satelit sunt foarte diferite de cele terestre, cer mai mult atentie la<br />
configuare si mai multa intretinere pentru a le mentine stabile (ninsoarea<br />
sau ploaia intensa va pot impiedica sa aveti un semnal de calitate).</p>
<p>Opiniile Dumneavoastra sunt binevenite, nu ezitati sa<br />
ne contactati: berto@fatamorgana.com &lt;mailto:berto@fatamorgana.com&gt; si<br />
flosan@hack-it.net &lt;mailto:flosan@hack-it.net&gt; .</p>
<p>1.2. Copyright</p>
<p>Copyright (C) 2000,2001 Roberto Arcomano, Florindo Santoro. Acest document<br />
este gratuit; il puteti redistribui sau/si modifica sub<br />
termenii GNU Licenta Publica Generala asa cum a fost publicata de Free<br />
Software Foundation, de asemeni pentru versiunea 2 a licentei sau (conform<br />
optiunii Dumneavoastra) conform oricarei viitoare versiuni. Acest document<br />
este distribuit in speranta ca va fi folositor, dar</p>
<p>FARA NICI O GARANTIE, fara implicarea vreunei garantii<br />
comerciale ori a FIABILITATII INTR-UN SCOP PREDEFINIT.<br />
Consultati Licenta Generala Publica GNU  pentru mai multe detalii.<br />
Puteti obtine o copie a Licentei Generale Publice GNU la adresa<br />
&lt;http://www.gnu.org/copyleft/gpl.html&gt;</p>
<p>2. Cunostinte necesare</p>
<p>2.1. Despre sateliti</p>
<p>In ultimii cativa ani satelitii au inceput sa fie folositi<br />
pentru comunicatia in Internet, in primul rand de catre ISP-uri medii-mari<br />
(ISP= Internet Service Provider), dar am intalnit si utilizatori<br />
individuali. Conexiunile prin satelit sunt un tip diferit de<br />
cele terestre, cu temporizari (timing-uri) diferite, cum ar fi RTT<br />
(Round Trip Time), dar si cu valori diferite ale largimii de banda, pana<br />
la 2 Mb/s sau mai mult.</p>
<p>2.2. Cum functioneaza?</p>
<p>Sa ne imaginam o cale ca aceasta:</p>
<p>||||||    S A T E L I T   ||||||||<br />
/                       /|\<br />
Downl             /                         |      Upload<br />
load             /                          |      de la<br />
la              /(4)                        | (3)  server<br />
client         /                            |<br />
/                             |<br />
SatCard(antena parabolica)                  |<br />
|                              |<br />
\|/                             |<br />
PC &#8212;-adreseaza cerere&#8212;&#8211;&gt; SAT-SERVER&lt;&#8212;extragere&#8212;&gt; INTERNET<br />
(1)                               (2)</p>
<p>In primul rand facem cererea (1) folosind conexiunea noastra<br />
Internet catre Sat-SERVER, acesta va extrage informatiile din Internet (2)<br />
si le va trimite catre satelit (3); in final vom receptiona datele de la<br />
satelit (4) folosind o antena parabolica si cardul DVB pentru satelit.</p>
<p>Tipic exista 2 tipuri de cereri:</p>
<p>- http<br />
- ftp</p>
<p>Ambele au un flux mic de date pentru cerere si un volum mare de date<br />
pentru raspuns, asa ca satelitii lucreaza bine cu acestea, dar cu un<br />
timp mai mare de raspuns. Aceasta este cea mai mare problema a conexiunior<br />
prin satelit (ganditi-va la o distanta tipica la care orbiteaza satelitii<br />
de cca 36000 km, asa incat veti avea un timp de acces de [ 36000<br />
km / 300.000 km/s = 0.120 s = ] 120 ms pe care trebuie sa le adaugati de<br />
la conexiunea clasica la Internet de doua ori pentru ca ISP-ul trimite odata<br />
catre satelit iar clientul descarca de la satelit).</p>
<p>ISP-uri recente permit clientilor utilizarea si a altor servicii, ca:</p>
<p>-chat<br />
-email<br />
-news<br />
si multe altele</p>
<p>Exita asa numitele servicii one-way (monosens), care constau in servicii<br />
de mail, download la cerere (unde faceti rezervari de fisiere)<br />
si site-download; aceste servicii sunt off-line (neconectate), asa incat<br />
le puteti accesa fara modem, sau alt fel de conexiuni.</p>
<p>2.3. Alte tehnologii</p>
<p>Trebuie sa amintim si alte tehnologii satelitare: conexiunuea<br />
dublu-sens (2-way). Acestea folosesc antena parabolica pentru conexiunea<br />
la Internet in ambele sensuri. Costa mult mai mult decat<br />
cele monosens. Asteptam mai multe in aceasta directie in vitorul apropiat,<br />
la momentul actual permit o largime de banda de 4 Mb/s la download si 256k<br />
la upload.</p>
<p>2.4. Care este largimea de banda maxima?</p>
<p>Depinde de multi factori: scopul ISP-ului, parametrul TCP window folosit,<br />
aplicatiile folosite de clienti, si mai important decat toate,<br />
&#8220;Congestia internet&#8221;. Va puteti astepta la o largime de banda maxima<br />
de 1-4Mb/s si o medie de 10-30KBytes/s dar, repet, depinde de multi alti<br />
factori.</p>
<p>Oricum, unele ISP-uri (Furnizori de Servicii Internet) pretind ca<br />
va asigura &#8220;largime de banda maxima&#8221;, in timp ce media largimii de banda<br />
poate fi mult mai mica, datorita congestiilor dintre ISP-uri.</p>
<p>Alte ISP-uri va garanteaza largimea de banda minima, ceea ce are o inteles<br />
decat cea maxima, pentru ca este disponibila tot timpul.</p>
<p>Va rugam consultati Anexa A pentru a afla mai multe despre obtinerea<br />
unor performante mai bune la download.</p>
<p>2.5. Cat costa ?</p>
<p>Noi am distins intre costurile hardware (ale echipamentelor)<br />
si costurile conturilor. Primele sunt cunoscute, in timp ce ultimele<br />
depind de ce servicii alegeti (garantate/negarantate, largime de banda<br />
maxima).</p>
<p>2.5.1. Costurile hardware</p>
<p>Pentru a instala micul nostru sistem satelit avem nevoie de :</p>
<p>1. Cardul de acces<br />
2. Antena parabolica<br />
3. Unul sau mai multe convertoare (LNC-uri, LNB-uri)</p>
<p>trebuie utilizat un convertor digital pentru accesul Internet via satelit</p>
<p>Cardurile DVB costa intre 200$-300$ depinde de marca<br />
Antena parabolica costa 50$<br />
Convertorul LNB costa aproximativ 50$</p>
<p>Deci avem aproape 3-400$ costuri hardware (poate vreti sa adaugati<br />
si costurile instalarii !!)</p>
<p>2.5.2. Costurile conturilor</p>
<p>Aici costurile depind de ce va ofera ISP-ul , care este largimea de banda,<br />
daca exista largimi de banda garantate (care sunt mai importante decat<br />
largimile maxime de banda), ce servicii puteti accesa, si asa mai departe.</p>
<p>Unele ISP-uri va ofera acces gratuit in schimbul vesnicei vizualizari a<br />
unui banner (pe care nu il puteti minimiza), in acest caz veti plati<br />
atunci cand veti cumpara ceva prezentat in banner.</p>
<p>Tipic, costurile conturilor se ridica la 100-150$ pe an pentru servicii<br />
&#8220;negarantate&#8221; si 4-600$ sau mai mult pentru servicii &#8220;garantate&#8221; (va<br />
garanteaza o largime de banda minima pe care o puteti folosi in momente de<br />
congestie, evident congestii intre ISP-uri satelitare), cand ati &#8220;iesit&#8221;<br />
catre Internet, nimeni nu va mai poate garanta nimic.</p>
<p>2.6. Care sunt satelitii utilizati?</p>
<p>Cand discutam de sateliti, ne referim la: Astra (19.2 grade SE), Hotbird<br />
(13.2 grade SE), noul Europestar (45 grade SE), Eutelsat (8 grade<br />
SV), Astra (26 E), Arabsat 3A (26E).</p>
<p>2.7. Ce ISP-uri ofera servicii Internet prin satelit?</p>
<p>In Europa cunoastem circa 8 ISP-uri care ofera acces Internet prin satelit:</p>
<p>1. EuropeOnLine &#8211; EON &lt;http://www.europeonline.net&gt;</p>
<p>2. Netsystem &lt;http://www.netsystem.com&gt;</p>
<p>3. Starspeeder &lt;http://www.starspeeder.com&gt;</p>
<p>4. Sat Node &lt;http://www.satnode.com&gt;</p>
<p>5. Eliosat &lt;http://www.eliosat.com&gt;</p>
<p>6. Falcon Stream  &lt;http://www.falconstream.com&gt;</p>
<p>7. SkyDSL &lt;http://www.skydsl.com&gt;</p>
<p>8. OpenSky &lt;http://www.opensky.it&gt;</p>
<p>9. DirecPC &lt;http://www.direcpc.com&gt; dar acesta foloseste un<br />
card propietar (este unul dintre primele ISP-uri de acest tip)</p>
<p>EON ofera acces pentru aproximativ 150$ pe an fara largime<br />
de banda garantata.</p>
<p>Netsystem ofera servicii la costuri nule, trebuie doar sa ii &#8220;suportati&#8221;<br />
bannerele.</p>
<p>StarSpeeder ofera acces ???</p>
<p>Eliosat costa 350$ pe an cu 128k/s garantat (servicii minime, vedeti<br />
site-ul web pentru mai multe informatii); pe langa aceasta, ofera si<br />
tehnologia dublu-sens pentru a transmite si receptiona flux de date.</p>
<p>SkyDSL ofera acces pentru aproximativ 15$ pe luna cu 128k/s largime de<br />
banda, dar permite largimi de banda mai mari pentru fiecare Mb downloadat<br />
pe care il platiti (puteti selecta de la 256k la 4Mb/s),<br />
pentru mai multe informatii vizitati site-ul web.</p>
<p>IMPORTANT: inainte de a va inregistra la vreunul dintre aceste servicii,<br />
verificati aria de acoperire si diametrul necesar al antenei parabolice.</p>
<p>2.8. Altceva ?</p>
<p>Cu orice fel de card DVB puteti deasemeni receptiona si canale TV<br />
digitale (doar cele gratuite), iar unele carduri au suport<br />
pentru interfata comuna de decriptare a canalelor codate.</p>
<p>Urmeaza schema:</p>
<p>Smart-Card -&gt; CAM -&gt; Interfata Comuna -&gt; Sat Card (cu suport C.I.)</p>
<p>Cardul CAM (sunt multe standarde folosite pentru decriptare: SECA, IRDETO,<br />
VIACCESS si altele) este dispozitivul care permite decriptarea (pentru TV,<br />
RADIO si date), in timp ce Interfata Comuna sau C.I. (ETSI EN<br />
50221) permite conectarea intre CAM si cardul pentru satelit.</p>
<p>3. Informatii tehnice</p>
<p>Acum vom incerca sa intelegem cum functioneaza si in ce conditii, conexiunile<br />
prin satelit.</p>
<p>Ne putem imagina legatura prin satelit ca o legatura fara fir<br />
clasica, radio (wireless), intelegand prin asta o legatura intre<br />
doua sisteme care nu folosesc un cablu pentru a comunica.</p>
<p>Legaturile fara fir sunt foarte diferite de cele cablate pentru ca<br />
exista anumite probleme aditionale de rezolvat cum ar fi sensibilitatea,<br />
problemele legate de securitate, s.a. Pot aparea si alte probleme legate<br />
de vreme, in special in conditii de ploaie sau ninsoare.</p>
<p>Oricum, trebuie sa avem in vedere primul principiul al legaturilor fara<br />
fir: vizibilitate directa libera de obstacole, care este IMPERATIVA si<br />
fara de care nu putem comunica. Pentru mai multe informatii,<br />
consultati documentul Wireless-HOWTO.<br />
&lt;http://www.fatamorgana.com/bertolinux/&gt; .</p>
<p>In conexiunile prin satelit folosim un tip special de antena, o antena<br />
parabolica, care ne confera un castig mare la receptie, necesar pentru a<br />
receptiona semnalul de la satelit. De fapt, satelitul are o orbita<br />
geostationara la 36.000 km si singurul tip de antena pe care<br />
il putem utiliza este antena parabolica.</p>
<p>3.2. Frecvente</p>
<p>Frecventele pe care le receptionam sunt de la 11Ghz la 12.7Ghz (de<br />
la transponderul satelitului, emitatorul care ne trimite<br />
date), o frecventa foarte inalta, dar fedderul (convertorul,<br />
LNB-ul din centrul antenei parabolice) converteste acest semnal la<br />
1-2Ghz asa incat putem trimite semnalul la receptor prin cablu (pana la<br />
40m, depinde de pierderile cablului).</p>
<p>3.3. Cardul receptor DVB</p>
<p>1 GHz Signal &#8211;&gt; |RX|&#8211;&gt; |ADC| &#8211;&gt; |Low Level Network| &#8211;&gt; |O.S.TCP/IP Stack<br />
|____________________________________|<br />
DVB Card</p>
<p>Acum ne putem imagina un receptor clasic la 1Ghz receptionand semnale<br />
analogice de la satelit, convertindu-le in semnale digitale si livrandu-le<br />
catre nivelul de retea (ISO OSI 1,2): aici, codul firmware din<br />
card genereaza pachete pe doua nivele (cam ca ethernet) pentru a<br />
fi trimise catre pc-ul nostru cu linux, windows, sau alt sistem,<br />
in final vom transforma aceste date in pachete TCP/IP.</p>
<p>3.4.Configurarea nivelului legaturii de date DVB</p>
<p>Aici avem de facut cateva setari la chiar la cartela DVB:</p>
<p>1. Frecventa de lucru, trebuie sa setam frecventa satelitului (ca in<br />
reviste): este intre 11.8Ghz si 12.8Ghz de exemplu 12640000 Khz.</p>
<p>2. Rata simbolurilor, masurata in simboluri pe secunda, tipic 22 MS/s<br />
(mega simboluri pe secunda)</p>
<p>3. Polarizarea, care este o setare a antenei, configurabila din software:<br />
valorile posibile sunt H (orizontal) si V (vertical).</p>
<p>4. PID-urile. PID-ul este folosit pentru a selecta o transmisiune dintre<br />
mai multe semnale ale aceleiasi frecvente.</p>
<p>5. Trebuie sa specificam si masca filtrului de biti care ne indica cat<br />
de mare este grupul adreselor MAC destinatie (masca bitfilter este<br />
similara netmaskului TCP/IP, singura diferenta este ca masca bitfilter<br />
este pe 48 de biti, iar netmaskul TCP/IP este pe 32 biti. Intotdeauna,<br />
datele Internet sunt transmise cu PID unicast, in timp<br />
ce iformatiile video sunt transmise folosind PID multicast.</p>
<p>6. Calcularea adresei MAC: aici specificam care va fi adresa MAC a<br />
cardului DVB. Trebuie facut acest lucru pentru ca unele ISP-uri folosesc<br />
un algoritm (vezi anexa A pentru mai multe informatii) care va calculeaza<br />
adresa MAC din adresa IP, alte ISP-uri folosesc propria dumneavoastra<br />
adresa MAC.</p>
<p>3.5 Functionarea TCP/IP</p>
<p>Cum am aratat in sectiunea 2.2, trebuie sa facem o cerere folosind<br />
interfata modem (de exemplu ppp0 sau orice alta interfata pe<br />
care o folosim pentru a comunica cu Internetul), apoi raspunsul se<br />
va intoarce la interfata noastra DVB (dvb0).</p>
<p>Sistemele de operare moderne ne permit sa receptinam datele printr-o<br />
interfata de intrare diferita de cea prin care am facut cererea.<br />
Pentru a face aceasta, e nevoie sa dezactivam controlul fluxului<br />
pentru unele pachete, ca de exemplu cu comanda:</p>
<p>echo &#8221; 0&#8243; &gt; /proc/sys/net/ipv4/conf/dvb0/rp_filter (pentru Linux).</p>
<p>3.6. Autentificarea</p>
<p>Ramane doar un singur lucru de completat in descrierea noastra: metoda de<br />
autentificare.</p>
<p>Unele ISP-uri prin satelit folosesc asa-numita &#8220;autentificare prin proxy&#8221;:<br />
cand folositi proxy-ul lor, trebuie sa indicati un nume de login si o<br />
parola pentru a continua cererea (trebuie initial sa va inregistrati cu un<br />
cont pentru a folosi serviciile lor prin satelit): odata facuta aceasta,<br />
ISP-ul foloseste adresa IP a dumneavoastra pentru a calcula<br />
adresa MAC (vezi anexa A) catre care va trimite raspunsul.</p>
<p>Alte ISP-uri va cer sa configurati o conexiune VPN intai (folosind login-ul<br />
si parola dumneavoastra), apoi vor controla contul cu care sunteti<br />
inregistrat (cand extrag adresa MAC) apoi vor trimite datele catre (si<br />
numai) cardul dvs. DVB (adresa MAC).</p>
<p>Oricum, sa aveti in vedere ca puteti modifica valoarea filtrului DVB<br />
pentru a fi capabil sa receptionati ORICE adresa MAC (raportata la o<br />
frecventa data).</p>
<p>3.7 Servicii pe care le pot folosi cu o conexiune prin satelit</p>
<p>Tipic, serviciile pe care le puteti folosi cu o conexiune prin satelit<br />
depind de tipul de autentificare folosit de ISP.</p>
<p>- cu clasica &#8220;autentificare proxy&#8221; puteti folosi doar serviciile HTTP<br />
si FTP<br />
- cu conexiunea VPN nu aveti (in principiu) nici o restrictie<br />
la serviciile pe care le puteti folosi, singura limita este definita<br />
de RTT (Timpul de acces) la satelit, aproximativ 500-1000ms in medie, asa<br />
ca uitati de &#8220;voce&#8221; sau alte servicii in timp real !! <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> (( Vedeti<br />
documentul VoIP-HOWTO.<br />
&lt;http://www.fatamorgana.com/bertolinux&gt;<br />
pentru mai multe informatii. Oricum, puteti totusi utiliza mail, chat,<br />
telnet, ping, dns, si asa mai departe.</p>
<p>4. Cerinte</p>
<p>4.1 Cerinte privind cunostintele</p>
<p>Pentru aceste incercari aveti nevoie de ceva experienta in comunicatii<br />
Internet si retele (continute in Net-HOWTO &lt;http://www.linuxdoc.org/HOWTO/Net-<br />
HOWTO/index.html&gt; ) si o oarecare experienta practiva privind antenele<br />
parabolice si sistemele pentru satelit (ar trebui sa stiti sa va orientati<br />
antena, unghiurile corecte)</p>
<p>4.2 Hardware</p>
<p>Avem nevoie de:</p>
<p>1. Antena parabolica, de la un sistem analogic</p>
<p>2. Convertorul digital sa fie plasat in centrul antenei (LNB digital)</p>
<p>3. Cardul receptor compatibil DVB</p>
<p>4. Un PC cu care sa va conectati</p>
<p>4.3 Software</p>
<p>Aici aveti nevoie de :</p>
<p>1. Drivere pentru cardul DVB pentru a functiona sub sistemul dvs. de<br />
operare (Linux, Windows sau altele)</p>
<p>2. Setarile corecte</p>
<p>3. Aplicatii externe, in anumite cazuri,ca si client VPN-PPTP pentru<br />
ISP-uri ca Netsystem sau StarSpeeder</p>
<p>Pentru soft de Linux, puteti gasi drivere pentru Siemens DVB la Linux<br />
TV Project &lt;http://www.linuxtv.org&gt; .</p>
<p>4.4. Software TV</p>
<p>Tot astfel, exista software video pentru implementarea receptiei TV:</p>
<p>4.4.1 Sub Windows</p>
<p>1. MultiDec MultiDec 6.6b<br />
&lt;http://www.erkner.com/free/digi/MultiDec66b.zip&gt; (sursa gratuita<br />
si cod)</p>
<p>2. TPREdit TPREdit &lt;http://come.to/uhura&gt; (pentru Technotrend)</p>
<p>3. WinTV DVBs Hauppauge &lt;http://www.hauppauge.de/software.htm&gt; sau<br />
Technotrend &lt;http://www.technotrend.de&gt; (pentru cardurile compatibile<br />
Siemens, Hauppauge, Technotrend, Technisat, etc&#8230; )</p>
<p>4. WinDVB2000 WinDVB2000 &lt;http://www.odsoft.org/english.html&gt; (circa<br />
19$).</p>
<p>4.4.2. Sub Linux</p>
<p>1. gVideo &#8211; aplicatie inclusa in driverul SIemens</p>
<p>2. Vdr Video Recorder (bun si pentru urmarit TV)</p>
<p>5. Configurarea echipamentului</p>
<p>5.1. Montarea</p>
<p>Primul lucru de facut este montarea antenei parabolice;</p>
<p>Dupa care trebuie sa o orientam (cautarea unghurilor corecte din diverse<br />
reviste de specialitate): unghiurile sunt intotdeauna specificate de la sud<br />
la est sau la vest pentru cele orizontale si de la sol catre linia<br />
satelitului pentru cele verticale. Unealta clasica de orientare este<br />
compasul.</p>
<p>5.2. Calibrarea</p>
<p>Cum putem sti daca ne-am orientat corect?</p>
<p>Dupa ce am stabilit plaja corecta de unghiuri, trebuie sa o ajustam masurand<br />
nivelul de putere. Pentru aceasta putem</p>
<p>1. folosi de expemplu un receptor analogic (care este compatibil<br />
cu convertorul digital) si sa trecem la cautarea unghiului corect.<br />
Cand putem vedea imagine, inseamna ca l-am gasit. Va sugerez sa folositi<br />
un convertor analogic pentru ca, poate aveti unul (pe care l-ati folosit<br />
la o instalare anterioara) si pentru ca este mult mai simplu de calibrat<br />
decat unul digital.</p>
<p>2. Folosit un instrument de masurare a puterii (vreo 20$) cu indicator<br />
secvential (la putere maxima, toate ledurile se aprind).</p>
<p>5.3. LNB-uri duble</p>
<p>Puteti de asemeni sa folositi LNB-uri duble (unii comercianti vand<br />
kituri complete cu distante standard de receptie,<br />
de exemplu Astra (19.2 SE) cu Eutelsat (16 SE) sau cu Hotbird (13 SE).</p>
<p>Pentru montaj trebuie sa aveti in vedere, tot odata, ca satelitii sunt<br />
in directii opuse ale convertorilor, ca in figura:</p>
<p>SAT1                 SAT2<br />
\                 /<br />
\               /<br />
\   C1   C2   /<br />
\    \    \ /    /     /<br />
\    \   / \   /     /<br />
\____\ /___\ /_____/</p>
<p>Vedere de sus</p>
<p>C1 receptioneaza de la SAT2<br />
C2 receptioneaza de la SAT1</p>
<p>5.4. Reglajul nivelului legaturii de date</p>
<p>Odata ce am obtinut semnalul analog, trebuie sa ajustam receptorul<br />
nostru pe frecventa, PID-ul, rata de simboluri corecta, samd.</p>
<p>Prezint aici un exemplu de configurare pentru EON (EuropeOnline),<br />
transponderul 114 pe satelitul Astra (19.2 SE)</p>
<p>Frecventa: 12640 MHz</p>
<p>Polarizarea: V (Vertical)</p>
<p>Symbol Rate: 22000 KS/s</p>
<p>PID:</p>
<p>·  Unicast: 512 (decimal), 0&#215;200 (hexadecimal)</p>
<p>·  Multicast: 785, 786, 1041 (decimal), 0&#215;311, 0&#215;312, 0&#215;411<br />
(hexadecimal), dar sa aveti in vedere ca, in multe cazuri, Multicast<br />
PID sunt alocate automat.</p>
<p>Mai avem nevoie de o informatie: ce adresa MAC sa ii alocam cardului DVB</p>
<p>Din nou, pentru EON (EuropeOnline) trebuie sa consultati anexa A<br />
pentru a calcula adresa MAC din adresa IP dinamica.</p>
<p>Evident, aveti nevoie de login si de parola pentru respectivul<br />
serviciu ISP</p>
<p>6. Configurarea sub Linux</p>
<p>In aceasta sectiune vom presupune ca folosim un card Siemens compatibil,<br />
cum ar fi un card Hauppage WinTV DVB, pentru astfel de carduri<br />
gasiti drivere la &lt;http://www.linuxtv.org/download/dvb&gt; sau DVB PCI card<br />
sub Linux &lt;http://www2.arnes.si/~mthale1/index.html &gt; .</p>
<p>6.1.Instalarea driverelor</p>
<p>Odata descarcate driverele, trebuie sa desfacem arhiva tar intr-un<br />
director, intram in director si dam comanda &#8220;make&#8221; si &#8220;make insmod&#8221;.<br />
Pentru aceasta, trebuie sa aveti sursele kernelului curent in directorul<br />
/usr/src/linux (sau le descarcati de la http://www.kernel.org<br />
&lt;http://www.kernel.org&gt; si le recompilati.</p>
<p>Dupa comanda &#8220;make insmod&#8221;, sistemul dumneavoastra ar trebui sa aiba<br />
modulele DVB incarcate. Pentru a le descarca, dati comanda &#8220;make rmmod&#8221;.</p>
<p>6.2. Configurarea fisierului /etc/dvbd.conf</p>
<p>Fisierul /etc/dvbd.conf este folosit pentru a configura<br />
parametrii legaturii de date pentru cardul DVB. Aici sunt setarile<br />
principale:</p>
<p>- &#8220;power&#8221; indica puterea pentru LNB, 1=ON, 0=off. De obicei o veti seta<br />
1, doar daca nu folositi vreun fel de cascadare intre mai multe LNB-uri</p>
<p>- &#8220;symbolrate&#8221;, aceasta este rata simbolurilor pe secunda, de obicei<br />
22.000.000</p>
<p>- &#8220;frequency&#8221; , frecventa la care se receptioneaza datele, cum ar fi<br />
12.640.000</p>
<p>- &#8220;ttk&#8221; , semnalul de 22khz, aproape intotdeauna 1</p>
<p>- &#8220;diseqc&#8221;, folosit pentru controlul discriminarii, doar daca folositi<br />
un discriminator pentru controlul mai multor LNB-uri, 0 daca nu e cazul</p>
<p>- &#8220;AFC&#8221; de obicei 1</p>
<p>- &#8220;polarization&#8221;, 1 pentru orizontal, 0 pentru vertical.</p>
<p>- &#8221; filter_n &lt;PID&gt; &lt;MAC&gt; &lt;BITFILTER&gt;&#8221;, unde n este 0 pentru Unicast si<br />
1-9 pentru Multicast; PID este exprimat in forma decimala, MAC<br />
este adresa MAC valida doar pentru filtrul Multicast, iar BITFILTER este<br />
numarul ai carui biti reprezinta bytes pentru masca ((de exemplu<br />
10 = 2 (bit 1) + 8 (bit 3), asa ca masca va fi 00 00 FF 00 FF 00).</p>
<p>Exemplu:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p># DVB receiver configuration file, (c) 2000 data planet international</p>
<p># standard location in /etc</p>
<p># LNB power on=1/off=0</p>
<p>power 1</p>
<p># symbol rate [symbol/sec]</p>
<p>symbolrate 22000000</p>
<p># ASTRA TR 114</p>
<p>frequency 12640000</p>
<p># 22 kHz signal on=1/off=0</p>
<p>ttk 1</p>
<p># diseqc on=1/off=0</p>
<p>diseqc 0</p>
<p># AFC on=1/off=0</p>
<p>AFC 1</p>
<p># polarisation H=1/V=0</p>
<p>polarisation 1</p>
<p># settings for MPE filter, PID and MAC filtering, valid MAC bytes</p>
<p>filter_0 512</p>
<p>filter_1 785 00:D0:5C:1E:96:01 48</p>
<p>filter_2 786 00:D0:5C:1E:96:01 48</p>
<p>filter_3 1041 00:D0:5C:1E:96:01 48</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>filter_0 nu are valori nici pentru MAC si nici pentru bitfilter pentru<br />
ca adresa MAC potrivita este calculata din adresa IP (anexa A). Vom vedea<br />
ca aceste setari sunt in regula numai pentru anumite ISP-uri,<br />
pentru altele, va trebui sa modificam fisierul dvbd.c</p>
<p>6.3 Daemonul dvbd</p>
<p>Odata ce fisierul /etc/dvbd.conf este OK, puteti lansa aplicatia<br />
dvbd care, executata fara optiunea -d scrie catre stdout nivelul calitatii<br />
semnalului.</p>
<p>- Sync TREBUIE sa fie 127 sau pe-aproape</p>
<p>- Vber TREBUIE sa fie 0</p>
<p>doar daca nu cumva aveti o receptie slaba de la satelit (verificati cablul<br />
si orientarea antenei)</p>
<p>Nota:</p>
<p>S-ar putea sa trebuiasca schimbat in dvbd.h aceasta linie:</p>
<p>#define network_device &#8220;eth0&#8243;</p>
<p>cu</p>
<p>#define network_device &#8220;ppp0&#8243;</p>
<p>functie de ce interfata utilizati pentru a comunica cu Internetul,<br />
eth0 sau ppp0, dati comanda &#8220;make&#8221; pentru a updata fisierul binar si<br />
restartati dvbd.</p>
<p>6.4. Cum se configureaza serviciul EON (Europe Online)</p>
<p>Acum, daca aveti semnal bun, puteti incerca sa folositi un<br />
serviciu Internet prin satelit.</p>
<p>Pentru EuropeOnline mergeti la setarea &#8220;proxy&#8221; din Netscape si setati la<br />
HTTP si FTP:</p>
<p>proxy.xxx.europeonline.net</p>
<p>si, in &#8220;port&#8221; 8080 si FTP proxy cu &#8221; port&#8221; 8090.</p>
<p>unde xxx este numarul transponderului (103,113,114 sau 115) pe care il<br />
folositi (vedeti anexa B pentru mai multe informatii).</p>
<p>Acum va trebui sa puteti naviga cu browserul oriunde doriti&#8230;</p>
<p>Pentru a partaja serviciile EuropeOnline cu mai multi clienti, va trebui<br />
sa folositi proxy-ul Squid &lt;http://www.squid-cache.org&gt;, activand<br />
cascadarea catre proxy-ul EON.</p>
<p>Pentru o mai complexa utilizare EON, cum ar fi o mai complexa cascadare a<br />
proxy-urilor sau partajarea cu clientii, consultati EON Linux Masquerading<br />
FAQ &lt;http://obiwan.hvrlab.org/~faz/eon/eon_masq.html&gt;</p>
<p>6.5. Cum se configureaza serviciul Netsystem</p>
<p>Serviciul NetSystem este ceva mai complicat decat EON sub Linux, caz<br />
in care, mai trebuie configurate:</p>
<p>1. conexiunea VPN</p>
<p>2. patch-ul pentru pppd (doar daca pppd &lt;=2.4.0)</p>
<p>3. setarile de routere cu fisiere exemplu</p>
<p>4. patch-ul pentru dvbd.c</p>
<p>5. testarea</p>
<p>6. imbunatatirea performantelor</p>
<p>7. partajarea conexiunii NetSystem cu mai multi clienti</p>
<p>6.5.1 Conexiunea VPN</p>
<p>In primul rand trebuie sa descarcati aplicatia client VPN PPTP<br />
&lt;http://cag.lcs.mit.edu/~cananian/Projects/PPTP/&gt;</p>
<p>Dupa desfacerea arhivei tar, compilare si instalare, trebuie sa<br />
adaugati o intrare in fisierul /etc/ppp/pap-secrets si /etc/ppp/chap-secrets:</p>
<p>&#8221; login&#8221; * &#8221; password&#8221; *</p>
<p>unde &#8220;login&#8221; si &#8220;password&#8221; sunt cele cu care v-ati inregistrat la NetSystem<br />
&lt;http://css.netsystem.com&gt;</p>
<p>6.5.2 Patch-ul pentru pppd</p>
<p>Asa cum se arata in descrierea PPTP &lt;http://www.sigpipe.org/~me/vpn/pptp.html&gt;<br />
trebuie sa patch-uiti demonul pppd pentru a suporta conexiunile cu serverul<br />
VPN NetSystem (server Linux).</p>
<p>Trebuie sa:</p>
<p>1. Descarcati o versiune recenta de pppd<br />
&lt;ftp://cs.anu.edu.au/pub/software/ppp/&gt;</p>
<p>2. Descarcati si dezarhivati patch-ul corespondent pentru pppd<br />
&lt;ftp://ftp.binarix.com/pub/ppp-mppe/&gt;</p>
<p>3. dezarhivati pppd intr-un director</p>
<p>4. dati comanda &#8220;patch -p0 &lt; nume_patch</p>
<p>5. intrati in directorul pppd</p>
<p>6. dati comanda &#8220;make&#8221; si &#8220;make install&#8221;</p>
<p>6.5.3. Setarile de routare</p>
<p>Acum pppd va fi capabil sa lucreze cu VPN-ul NetSystem. Puteti incerca cu</p>
<p>&#8221; pptp vpn.netsystem.com debug user &lt;login&gt;&#8221;</p>
<p>unde &#8220;login&#8221; este numele de login al contului dvs de la NetSystem;<br />
veti vedea in /var/log/messages informatii de depanare de la interfata ppp1</p>
<p>Daca totul e OK ar trebui sa vedeti interfata ppp1 cu comanda &#8220;ifconfig&#8221;</p>
<p>Daca totusi aveti probleme cu atentificarea, adaugati &#8220;noauth&#8221; in fisierul<br />
/etc/ppp/options</p>
<p>Odata ce interfata ppp1 a pornit, va trebui sa treceti la urmatoarele:</p>
<p>1. dati comanda &#8220;ifconfig ppp1&#8243; si cautati adresa IP din dreapta<br />
sirului &#8220;P-t-P:&#8221; (o voi numi in continuare IP)</p>
<p>2. stergeti-o din tabela de routare cu &#8220;route de IP&#8221;</p>
<p>3. adaugati-o la interfata ppp0 cu &#8220;route add IP dev ppp0&#8243;</p>
<p>4. stergeti gateway-ul implicit din ppp0 cu &#8220;route del default&#8221;</p>
<p>5. adaugati gateway implicit pentru ppp1 cu &#8220;route add default dev ppp1&#8243;</p>
<p>Punctele 1-3 sunt necesare pentru ca interfetele punct-la-punct sunt<br />
administrate sub linux, adaugand gateway-ul la noua interfata (ceea ce<br />
nu e o idee buna in cazul de fata, doar daca nu vreti sa<br />
obtineti o bucla infinita, caz in care pachetul va circula la infinit,<br />
icapsulandu-se in sine insusi <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ))</p>
<p>Punctele 4-5 sunt necesare pentru a face toate cererile de<br />
date catre ppp1, adica vom avea contact cu lumea folosind conexiunea<br />
VPN, aceasta nefiind solutia optima in anumite conditii, de exemplu pentru<br />
interogarile DNS care ar putea fi trimise direct, pentru a evita<br />
intarzierile prin satelit inutile.</p>
<p>In loc sa configurati manual rutarea, puteti incerca acest script:</p>
<p>&#8221; netsystem.on&#8221; script</p>
<p>______________________________________________________________________<br />
route add IP_DNS1 dev ppp0<br />
route add IP_DNS2 dev ppp0<br />
route add -net 212.31.242.0 netmask 255.255.255.0 dev ppp0<br />
pptp vpn.netsystem.com user &lt;login&gt;<br />
/bin/sleep 5<br />
route add default dev ppp1<br />
______________________________________________________________________</p>
<p>&#8221; netsystem.off&#8221; script</p>
<p>______________________________________________________________________<br />
route del IP_DNS1 dev ppp0<br />
route del IP_DNS2 dev ppp0<br />
route del -net 212.31.242.0 netmask 255.255.255.0 dev ppp0<br />
kill -9 &#8216;s x|grep &#8220;pppd&#8221;|grep &#8220;&lt;login&gt;&#8221;|grep -v &#8220;ps&#8221;|tr &#8221; &#8221; &#8220;\n&#8221;|head -n<br />
rm &#8211;force /var/lock/LCK..tty*<br />
rm &#8211;force /var/run/pptp/*<br />
route del -net 212.31.242.0 netmask 255.255.255.0 dev ppp0<br />
kill -9 &#8216;s x|grep &#8220;pppd&#8221;|grep &#8220;&lt;login&gt;&#8221;|grep -v &#8220;ps&#8221;|tr &#8221; &#8221; &#8220;\n&#8221;|head -n<br />
rm &#8211;force /var/lock/LCK..tty*<br />
rm &#8211;force /var/run/pptp/*<br />
rm &#8211;force /var/run/ppp1.pid<br />
killall -9 pptp<br />
______________________________________________________________________</p>
<p>IP_DNS1 si IP_DNS2 sunt adresele IP ale serverelor dumneavoastra DNS<br />
(primar si secundar), &lt;login&gt; este numele de login al contului<br />
dvs. Netsystem. L-am incercat sub kernelul 2.4.6 Redhat 7.1 si<br />
functioneaza foarte bine (fara nici un fel de probleme legate de bucla<br />
infinita ppp1 sau altele asemenea).</p>
<p>Aceasta linie ;</p>
<p>kill -9 &#8216;s x|grep &#8220;pppd&#8221;|grep &#8220;&lt;login&gt;&#8221;|grep -v &#8220;ps&#8221;|tr &#8221; &#8221; &#8220;\n&#8221;|head<br />
-n 2&#8242;</p>
<p>este folosita pentru a identifica PID procesului pppd care &#8220;discuta&#8221;<br />
cu serverul VPN (interfata ppp1); notati ca nu puteti da comanda<br />
&#8220;killall pppd&#8221;  pentru ca ati inchide si interfata ppp0</p>
<p>6.5.4 Patch-ul pentru dvbd.c</p>
<p>Dupa rezolvarea problemelor legate de PPTP trebuie sa modificati<br />
cateva linii in dvbd.c , in apropiere de finalul fisierului:</p>
<p>if (strcmp (v, &#8220;filter_0&#8243;) == 0) { if (s != NULL) { unsigned char ip[4];<br />
dvbcfg[0].status = ON ;<br />
dvbcfg[0].filter.data[0] = 0x3eff ;<br />
dvbcfg[0].filter.pid = (__u16) atoi (s) ;<br />
dvbcfg[0].filter.mode = 0x0c ;<br />
if (ipget (ip, network_device)) { fprintf(stderr,&#8221;Can&#8217;t get local ip address.<br />
syslog (LOG_NOTICE, &#8220;Local ip is %u:%u:%u:%u\n&#8221;, ip[0], ip[1],ip[2], ip[3]);<br />
dvbcfg[0].filter.data[1] = (ip[3] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[2] = (ip[2] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[6] = (ip[1] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[7] = (ip[0] &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[8] = (0&#215;02 &lt;&lt; 8) | 0x00ff ;<br />
dvbcfg[0].filter.data[9] = (0&#215;00 &lt;&lt; 8) | 0x00ff ;<br />
setmac (ip) ; }<br />
else { dvbcfg[1].status = OFF ; } }</p>
<p>Urmatoarele linii:</p>
<p>dvbcfg[0].filter.data[1] = (ip[3] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[2] = (ip[2] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[6] = (ip[1] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[7] = (ip[0] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[8] = (0&#215;02 &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[9] = (0&#215;00 &lt;&lt; 8) | 0x00ff ;</p>
<p>vor fi inlocuite cu:</p>
<p>dvbcfg[0].filter.data[1] = (MAC[5] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[2] = (MAC[4] &lt;&lt; 8) | 0x00ff;</p>
<p>dvbcfg[0].filter.data[6] = (MAC[3] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[7] = (MAC[2] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[8] = (MAC[1] &lt;&lt; 8) | 0x00ff ;</p>
<p>dvbcfg[0].filter.data[9] = (MAC[0] &lt;&lt; 8) | 0x00ff ;</p>
<p>Unde MAC[0]:MAC[1]:MAC[2]:MAC[3]:MAC[4]:MAC[5] sunt adresele noastre MAC<br />
(conform contului Netsystem).</p>
<p>Dupa aceasta va trebui sa dati comanda &#8220;make&#8221; si noul dvbd va di creat.</p>
<p>NOTA: pentru a corecta cu succes dvbd.c trebuie sa folositi un driver dvb<br />
versiune &gt;=0.8.2 pentru ca versiunile mai vechi au probleme de<br />
instabiliate</p>
<p>6.5.5 Testarea</p>
<p>In final, putem testa Netsystem de sub Linux. Putem da o comanda<br />
&#8220;ping www.oricehostpingabil.com&#8221; si sa verificam timpul de raspuns. Ar<br />
trebui sa fie intre 400 si 2000 ms.</p>
<p>Daca mai aveti probleme, va trebui sa verificati daca e totul OK<br />
cu interfata VPN.</p>
<p>1. deschideti snifferul de retea preferat (de exemplu, Ethereal<br />
&lt;www.ethereal.net&gt; si incepeti sa analizati interfata ppp0 (nu ppp1 !!!)</p>
<p>2. dati un ping</p>
<p>Daca VPN-ul e ok, ar trebui sa vedeti 2 (poate 1) pachete incapsulate-GRE<br />
pe secunda. Daca nu vedeti nimic, VPN-ul nu merge corect. Opriti-l<br />
si porniti-l din nou.</p>
<p>6.5.6. Imbunatatirea performantelor</p>
<p>Odata ce ati pus la punct lucrurile, TREBUIE sa folositi (in special cu<br />
Netsystem) un download accelerator pentru a imbunatati performantele.<br />
Vedeti anexa A pentru mai multe informatii.</p>
<p>6.5.7 Partajarea Netsystem cu mai multi clienti</p>
<p>Pentru aceasta puteti activa IP Masquerading-ul, permitand clientilor sa<br />
foloseasca VPN ca o interfata Internet normala; principala problema<br />
este ca, conexiunea noastra prin satelit este foarte buna pentru<br />
download dar are performante slabe la navigarea in paginile web (sau<br />
alte servicii mai interactive decat download-ul).</p>
<p>Va puteti gandi la utilizarea proxy-ului Squid<br />
&lt;http://www.squid-cache.org&gt; sau Socks &lt;http://www.socks.nec.com/&gt;, dar nu<br />
veti rezolva problema pentru ca si acum toate cererile for fi trimise catre<br />
aceiasi interfata VPN.</p>
<p>Solutia este sa folositi 2 tabele de rutare, una folosind interfata directa<br />
de linie si cealalta interfata VPN. Asa ca puteti face cum urmeaza:</p>
<p>1. asigurati-va ca ati instalat comenzile &#8220;iproute2&#8243; (de pilda<br />
dati comanda &#8220;ip&#8221; in shell si verificati daca va spune ceva.<br />
Pentru mai multe informatii, consultati Linux 2.4 Advanced Routing HOWTO<br />
&lt;http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html&gt; .</p>
<p>2. asigurati-va ca ati pornit serviciile NetSystem si notati-va adresa<br />
IP a interfetei ppp1, pe care o vom numi acum LOCALIP.</p>
<p>3. tastati: &#8221; echo &#8221; 210 sat&#8221; &gt;&gt; /etc/iproute2/rt_tables&#8221; pentru a apela<br />
cat mai confortabil regula 210 pentru satelit</p>
<p>4. tastati: &#8221; ip rule add from LOCALIP table sat&#8221; , pentru a crea tabela<br />
&#8220;sat&#8221;</p>
<p>raportata la toate cererile venind de la adresa IP LOCALIP</p>
<p>5. tastati: &#8221; ip route add default dev ppp1 table sat&#8221;<br />
pentru a trimite toate cererile &#8220;sat&#8221; (vezi mai sus) catre interfata ppp1</p>
<p>6. daca folositi proxy-ul Socks &lt;http://www.socks.nec.com&gt; fiti siguri<br />
ca ati setat in sockd.conf &#8220;external&#8221; pentru LOCALIP</p>
<p>7. daca folositi proxy-ul Squid &lt;http://www.squid-cache.org&gt; fiti siguri<br />
ca ati setat in squid.conf &#8221; tcp_outgoing_address&#8221; ca LOCALIP</p>
<p>Odata ce ati facut toate acestea, veti observa ca aveti doua moduri de<br />
lucru: fara proxy, clientii for adresa cereri catre linia directa, iar<br />
in prezenta unui proxy (squid sau sockd) cererile vor fi inaintate<br />
interfetei VPN si, in final, catre satelit.</p>
<p>Observati ca s-ar putea sa aveti nevoie de sockd in loc de squid pentru<br />
ca cererile catre satelit sunt folosite in special pentru download, in<br />
timp ce squid-ul este tipic folosit pentru browsing.</p>
<p>6.6. Cum se utilizeaza serviciul Sat Node</p>
<p>Trebuie sa urmati toate instructiunile de la NetSYstem.</p>
<p>Inainte de a activa conexiunea VPN , trebuie sa :</p>
<p>.<br />
.<br />
.<br />
.  pentru a va conecta la serverul vpn doar prin ppp0<br />
?????? lipsesc parti din howto-ul in limba engleza?????????</p>
<p>Ce se schimba fata de Netsystem este ca nu fortam gateway-ul VPN<br />
(212.56.224.34, IP-ul de la drepta lui &#8221;P-t-P&#8221; in interfata ppp1) in<br />
interfata ppp0, dar fortam un alt IP (212.56.224.36). Restul nu se schimba.</p>
<p>Multumiri lui Ricardo Santiago Mozos si Norberto Garcia Prieto.</p>
<p>7. Configurarea sub Windows</p>
<p>7.1. EON</p>
<p>Hauppage WinTV are aplicatii DVB-DATA  care permit speficiarea setarilor<br />
legaturii de date.</p>
<p>7.2 Netsystem</p>
<p>In primul rand e nevoie sa instalati resursele VPN. Aditional, e nevoie sa<br />
descarcati software-ul Netsystem (intotdeauna cu banner) si sa il lansati.<br />
Il puteti descarca de aici:<br />
&lt;http://bertolinux2000.interfree.it/Netsystem/Netsystem.zip&gt;</p>
<p>8. Anexa A &#8211; NOTE</p>
<p>8.1. Translatarea IP dinamic &gt; adrese MAC</p>
<p>Translatarea folosita de unele ISP-uri pentru a calcula adresa MAC (pe<br />
care cardul DVB trebuie sa o aiba pentru a receptiona pachete) este:</p>
<p>00 : 01 : IP[0] : IP[1] : IP[2] : IP[3]</p>
<p>unde</p>
<p>IP[0].IP[1].IP[2].IP[3] este adresa IP dinamica.</p>
<p>Aceasta caracteristica este folosita de exemplu de EON.</p>
<p>8.2 Cadrul TCP</p>
<p>Conexiunile prin satelit sunt un interesant exemplu de foarte mari RTT<br />
(round trip time, timp de acces): un alt exemplu<br />
este comunicatia Marte-Pamant sau Pamant-Luna.</p>
<p>Aceste conexiuni au o trasatura foarte proasta: foarte scazuta<br />
interactivitate.</p>
<p>Conexiunile de retea tipice (sau digitale, in general) folosesc asa numita<br />
transmisie in &#8220;cadre&#8221;, ceea ce inseamna ca bufferul de date poate fi<br />
trimis inainte de a astepta un raspuns. In stiva<br />
protocolului TCP/IP, &#8220;cadrul&#8221; TCP arata cam asa:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| &#8211; - &#8211; - &#8211; - &#8211; &gt; poate continua |-|-|-|&#8212;-&gt;<br />
|               &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
|             Buffer transmisibil inaintea confirmarii<br />
|<br />
| &#8211; - &#8211; - &#8211; - &#8211; &lt;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Confirmare</p>
<p>Acum, daca in comunicatia noastra avem un timp mare de acces si daca am<br />
avea un cadru TCP mic, am pierde mult timp doar asteptand confirmarea<br />
(ACK), asa incat largimea de banda reala ar scadea (de exemplu, daca avem<br />
un cadru TCP de 16kb, tipic pentru sistemele Windows, si RTT de 400ms, nu<br />
se pate depasi 16KB/0.4 = 40 KB/s)</p>
<p>Solutia este utilizarea unor cadre TCP foarte mari (ca 256kb sau cativa MB)</p>
<p>Din pacate, sub multe sisteme nu este posibil sa avem<br />
un cadru TCP mare, asa ca in ultimii ani au aparut multe<br />
aplicatii, asa numitele &#8220;download acceleratoare&#8221; care impart<br />
in multe fragmente un fisier si le descarca pe toate simultan. Aceasta<br />
este echivalent cu a descarca un singur fisier dintr-o singura bucata,<br />
evitand problemele RTT-ului.</p>
<p>8.3 Download accelerator</p>
<p>Va indicat cateva link-uri catre asa numitele &#8220;download acceleratoare&#8221;,<br />
aplicatii care fac doua lucruri:</p>
<p>1. managementul resuming-ului sesiunilor; permit oprirea download-ului<br />
si continuarea lui (aceasta poate fi facuta multumita posibilitatii de<br />
&#8220;resume&#8221; introdusa in serverele http si ftp, care permite specificarea la<br />
ce numar de bit sa inceapa download-ul);</p>
<p>2. impartirea fisierului in multe fragmente si posibilitatea lor<br />
de a &#8220;pleca&#8221; in maniera multithread;</p>
<p>Asa cum am vazut in sectiunea precedenta, download acceleratorul permite<br />
cresterea largimii de banda</p>
<p>8.3.1 Sub Linux</p>
<p>·  Aria &lt;http://aria.rednoah.com/&gt;</p>
<p>8.3.2 Sub Windows</p>
<p>·  FlashGet &lt;http://www.amazesoft.com&gt;</p>
<p>·  GetRight &lt;http://www.getright.com&gt;</p>
<p>·  Mass Downloader &lt;http://www.metaproducts.com&gt;</p>
<p>9 Anexa B &#8211; Valori cunoscute pentru ISP-urile prin satelit</p>
<p>9.1 Europe Online</p>
<p>EON trimite date prin satelitul Astra (19.2 SE)</p>
<p>Adresa MAC este calculata din adresa IP (anexa A)</p>
<p>Foloseste autentificarea proxy</p>
<p>urmeaza setarile pentru cei 4 transponderi:</p>
<p>9.1.1.  Transponder 113</p>
<p>·  Frequency: 12633.250 MHz,</p>
<p>·  SRate : 22 MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.1.2.  Transponder 114</p>
<p>·  Frequency: 12640 MHz,</p>
<p>·  SRate : 22 MS/s</p>
<p>·  Polarization: Vertical</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.1.3.  Transponder 115</p>
<p>·  Frequency: 12662.750 MHz,</p>
<p>·  SRate : 22 MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.1.4.  Transponder 103</p>
<p>·  Frequency: 12461 MHz,</p>
<p>·  SRate : 27.5 MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 512 (decimal)</p>
<p>9.2 Netsystem</p>
<p>Foloseste satelitul Astra (19.2 SE) pentru a trimite date.</p>
<p>Adresa MAC este adresa reala a cardului DVB.</p>
<p>Foloseste conexiune VPN.</p>
<p>urmeaza datele setarilor:</p>
<p>9.2.1.  Transponder 119</p>
<p>·  Frequency: 12721 MHz</p>
<p>·  SRate: 22MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 451 (decimal)</p>
<p>9.3.  Sat Node</p>
<p>Sat Node foloseste satelitul Astra (19.2 SE).</p>
<p>·  Frequency: 12603.750 MHz</p>
<p>·  SRate: 22MS/s</p>
<p>·  Polarization: Horizontal</p>
<p>·  Unicast PID: 302</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=175</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum sa realizezi masquerading, transparent proxy,  forwardare de porturi, si alte forme de NAT pentru kernelurile Linux ver 2.4.</title>
		<link>http://resurse-educationale.uv.ro/?p=173</link>
		<comments>http://resurse-educationale.uv.ro/?p=173#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:50:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[dnat]]></category>
		<category><![CDATA[forward]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[mapare]]></category>
		<category><![CDATA[masquerading]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[porturi]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[redirectare]]></category>
		<category><![CDATA[snat]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=173</guid>
		<description><![CDATA[traducere ver. 0.2 de catre Riddl Multumiri tuturor celor care m-au ajutat, in special lui Gushterul. Observatie f importanta: probabil ca exista unele greseli in acest document. Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de &#8230; <a href="http://resurse-educationale.uv.ro/?p=173">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>traducere ver. 0.2 de catre Riddl</p>
<p>Multumiri tuturor celor care m-au ajutat,  in special lui Gushterul.<br />
Observatie f importanta: probabil ca exista unele greseli in acest document.<br />
Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de<br />
traducere si pentru observatii pertinente trimiteti-mi mail pentru Riddl la<br />
&#8220;discutzii at gmx dot net&#8221;. Nu uitati sa precizati numele documentului.<br />
Multumesc anticipat.<br />
Aceasta versiune este  putin modificata fata de original, deorece unii termeni<br />
sunau foarte ciudat in ro.<br />
Pentru ultima versiune a acestui document verifica<br />
&lt;http://www.securityorg.net/docs/&gt;.</p>
<p>Lecturare placuta!<br />
______________________________________________________________________<br />
Linux 2.4 NAT HOWTO<br />
Rusty Russell, lista de discutii netfilter@lists.samba.org<br />
$Revision: 1.3 $ $Date: 2002/06/05 13:21:56 $</p>
<p>Acest document descrie cum sa realizezi masquerading, transparent proxy,<br />
forwardare de porturi, si alte forme de NAT pentru kernelurile Linux ver 2.4.</p>
<p>______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere<br />
2. Care este site-ul oficial si care sunt listele de discutii?<br />
2.1. Ce inseamna NAT?<br />
2.2. De ce as dori sa realizez NAT?<br />
3. Doua tipuri de NAT<br />
4. Trecere rapida de la kernelurile 2.0 si 2.2<br />
4.1. Doresc sa realizez doar masquerading! Help!<br />
4.2. Dar despre ipmasqadm?<br />
5. Controlul a ceea ce dorim sa facem cu NAT?<br />
5.1 Selectare simpla folosind iptables<br />
5.2 Aspecte delicate in privinta selectarii pachetelor ce le dorim<br />
modificate<br />
6. Cum sa modificam pachetele<br />
6.1 Folosirea NAT pentru modificarea adresei sursa (SNAT)<br />
6.1.1 Masquerading<br />
6.2 Folosirea NAT pentru modificarea adresei destinatie (DNAT)<br />
6.2.2 Redirectare<br />
6.3 Mapare complexa<br />
6.3.1. Selectarea de adrese multiple dintr-un sir<br />
6.3.2. Realizarea de mapare NAT nula<br />
6.3.3. Comportamentul NAT standard<br />
6.3.4. Mapare implicita a porturilor sursa<br />
6.3.5. Ce se intampla cand NAT-area nu reuseste<br />
6.3.6. Mapari multiple, Suprapuneri si Conflicte<br />
6.3.7. Schimbarea destinatiei conexiunilor generate local<br />
7. Protocoale speciale<br />
8. Avertizmente privind folosirea NAT<br />
9. Folosirea SNAT si rutarea<br />
10. Folosirea DNAT pentru adrese aflate in aceeasi retea.<br />
11. Multumiri</p>
<p><span id="more-173"></span></p>
<p>______________________________________________________________________</p>
<p>1. Introducere</p>
<p>Bine ai venit!</p>
<p>Esti pe cale sa incepi sa inveti fascinanta (si uneori inspaimantatoare)<br />
lume a NAT-ului: traducerea adreselor de retea. Acest Howto iti va fi<br />
oarecum un ghid precis pentru kernelurile din linux ver. 2.4 si peste.</p>
<p>In kernelul de linux ver. 2.4, a fost introdus suport pentru modificarea<br />
pachetelor, numit &#8220;netfilter&#8221;. Un nivel deasupra acestuia pune la dispozitie<br />
NAT (translatarea adreselor de retea), complet rescris fata de versiunile din<br />
kernelurile anterioare.</p>
<p>(C) 2000 Paul &#8220;Rusty&#8221; Russell.  Sub licenta GNU GPL.</p>
<p>2. Care este site-ul oficial si care sunt listele de discutii?</p>
<p>Sunt trei site-uri oficiale:</p>
<p>o       Multumiri lui Filewatcher &lt;http://netfilter.filewatcher.org/&gt;.<br />
o       Multumiri Echipei Samba si SGI &lt;http://netfilter.samba.org/&gt;.<br />
o       Multumiri lui Harald Welte &lt;http://netfilter.gnumonks.org/&gt;.</p>
<p>Le poti accesa pe toate folosind round-robin DNS la:<br />
&lt;http://www.netfilter.org/&gt; si  &lt;http://www.iptables.org/&gt;</p>
<p>Pentru lista de discutii oficiala de la netfilter, vezi:<br />
&lt;http://www.netfilter.org/contact.html#list&gt;.</p>
<p>2.1. Ce inseamna NAT?</p>
<p>In mod normal, pachetele intr-o retea se deplaseaza de la sursa  (cum ar fi<br />
computerul tau) la destinatia  (cum ar fi www.securityorg.net) prin mai<br />
multe legaturi de retea diferite: de exemplu cam 19 de la locatia in care ma<br />
aflu eu. Nici una din aceste legaturi nu iti modifica pachetul, pur si simplu<br />
este trimis mai departe.</p>
<p>Daca una din aceste legaturi ar fi facut NAT, atunci ar fi modificat sursa sau<br />
destinatia pachetului ce intra. Dupa cum iti imaginezi nu asa a fost conceput<br />
sistemul sa functioneze, si din aceasta cauza NAT este intodeauna ceva<br />
in genul unui infirm. Deobicei legatura care a facut NAT va tine minte cum a<br />
modificat pachetul, si cand un pachet replica vine din cealalta parte, va<br />
realiza modificarea inversa a pachetului replica, asa ca totul va functiona.</p>
<p>2.2. De ce as dori sa realizez NAT?</p>
<p>Intr-o lume perfecta nu ai avea nevoie. Intre timp, principale motive sunt:</p>
<p>Conexiunile prin modem la internet<br />
Cele mai multe ISP-uri iti dau doar o singura adresa IP cand te<br />
conectezi la ei. Poti trimite pachete cu orice adresa sursa pe care o<br />
doresti, dar doar pachetele cu aceasta adresa IP se vor intoarce la<br />
tine. Daca doresti sa folosesti mai multe sisteme (cum ar fi reteaua<br />
de acasa) pentru a le conecta la internet prin aceasta singura<br />
legatura vei avea nevoie de NAT.<br />
Aceasta este de departe cel mai raspandit mod de folosire al NAT-ului<br />
din zilele noastre, cunoscut si sub numele de &#8220;masquerading&#8221; in lumea<br />
Linuxului. Eu numesc aceasta SNAT, deoarece modifici adresa sursa a<br />
primului pachet.</p>
<p>Servere multiple<br />
Uneori doresti sa modifici directia in care sa se indrepte pachetele<br />
ce intra in reteaua ta. In mod frecvent aceasta este (ca si mai sus)<br />
deoarece ai doar o singura adresa IP, dar doresti ca oameni sa poata<br />
sa ajunga la computerele din spatele sistemului cu adresa IP &#8220;reala&#8221;.<br />
Daca rescrii adresa destinatie a pachetelor care intra, poti realiza<br />
acest lucru. Acest tip de NAT a fost numit forwardare (inaintare) de<br />
porturi in versiunile anterioare de Linux.<br />
O variatie des intalnita a acestei aplicatii al NAT-ului este<br />
load-sharing-ul (incarcare partajata), unde se mapeaza mai multe<br />
sisteme, permitand sistemelor sa ajung la aceste sisteme. Daca<br />
realizezi acest lucru la o scara mare, ar fi bine sa te uiti pe<br />
Linux Virtual Server &lt;http://linuxvirtualserver.org/&gt;.</p>
<p>Proxy transparent<br />
Uneori doresti sa para ca fiecare pachet care trece prin sistemul tau<br />
Linux este destinat pentru un program ruland chiar pe sistemul tau.<br />
Acest lucru este folosit pentru a realiza proxy-uri transparente: un<br />
proxy este un program care se interpune intre reteaua ta si lumea<br />
exterioara, mediand comunicarea intre ele. Se numeste transparent<br />
deoarece reteaua ta nici nu va realiza ca foloseste un proxy, doar daca<br />
bineinteles, proxy-ul nu functioneaza.<br />
Squid-ul poate fi configurat sa ruleze in acest mod, si aceasta era<br />
numita redirectare sau realizare de proxy transparent in versiunile<br />
anterioare de linux.</p>
<p>3. Doua tipuri de NAT</p>
<p>Am impartit NAT-ul in doua tipuri: NAT pentru sursa (SNAT) si NAT pentru<br />
destinatie (DNAT).</p>
<p>SNAT este realizat atunci cand modifici adresa sursa al primului pachet:<br />
schimbi sursa de unde porneste conexiunea. SNAT este intodeauna realizat dupa<br />
procesul de rutare al pachetelor, chiar inainte de a pleca pe conexiune<br />
pachetul. Masquerading este o forma particulara de SNAT.</p>
<p>DNAT este realizat cand modifici adresa destinatie al primului pachet: schimbi<br />
destinatia unde va fi facuta conexiunea. DNAT este intodeauna realizat<br />
inainte de rutarea pachetelor, cand pachetul tocmai a venit prin interfata.<br />
Forwardare de porturi, load-sharing-ul, si proxy-ul transparent sunt toate<br />
forme de DNAT.</p>
<p>4. Trecere rapida de la kernelurile 2.0 si 2.2</p>
<p>Imi pare rau pentru aceia dintre dumneavastra socati de trecerea de la<br />
versiunea 2.0 (ipfwadm) la 2.2 (ipchains). Exista vesti bune si vesti proaste.</p>
<p>In primul rand, poti in mod simplu sa folosesti ipchains si ipfwadm ca mai<br />
inainte. Pentru aceasta trebuie sa incarci (insmod) modulele pentru kernel<br />
&#8220;ipchains.o&#8221; sau &#8220;ipfwadm.o&#8221; ce se gasesc in ultima distributie netfilter.<br />
Acestea se exclud reciproc (ai fost avertizat), si nu ar trebui folosite cu<br />
nici un alt modul din netfilter.</p>
<p>Odata ce unul din aceste module a fost incarcat, vei putea folos ipchains si<br />
ipfwadm in mod normal, insa cu unele diferente:</p>
<p>- Setarea de timeout-uri pentru masquerading cu ipchains  -M -S, sau ipfwadm<br />
-M -s nu rezolva nimic. Cum timeout-urile sunt mai mari pentru noua<br />
infrastructura NAT, acest lucru nu ar trebui sa conteze.</p>
<p>- Campurile init_seq, delta si previous_delta in listarea detaliata a<br />
masqueradarii sunt intodeauna zero.</p>
<p>- Resetarea si listarea counter-elor simultana &#8220;-Z -L&#8221; nu mai este posibila:<br />
countere-le nu vor fi resetate.</p>
<p>- Nivelul de compatibilitate nu este foarte bun pentru un numar de conexiuni<br />
foarte mare: nu il folosi pentru gateway-ul corporatiei.</p>
<p>Hackerii pot deasemenea sa observe:</p>
<p>- Acum te poti lega si pe porturile 61000-65095 chiar daca realizezi<br />
masquerading. Codul pentru masqueradare obisnuia sa considere ca nimic in<br />
aceasta raza ar fi fost ceva corect, asa ca programele nu puteau sa o<br />
foloseasca.</p>
<p>- &#8220;Hack-ul&#8221; (nedocumentat) &#8220;getsockname&#8221;, pe care programele ce realizau proxy<br />
transparent il puteau folosi pentru a afla adresa reala a conexiunilor nu<br />
mai este disponibil.</p>
<p>- &#8220;Hack-ul&#8221; (nedocumentat) bind-to-foreign-address (atasare pe o adresa<br />
straina) nu mai este deasemnea implementat; acesta era folosit pentru a<br />
completa iluzia de proxy transparent.</p>
<p>4.1. Doresc sa realizez doar masquerading! Help!</p>
<p>Aceasta este ce vor majoritatea oamenilor. Daca ai o adresa PPP IP dinamica,<br />
vrei in mod simplu sa spui sistemului tau ca toate pachetele ce vin din<br />
reteaua interna ar trebui sa fie modificate astfel incat sa para ca vin de la<br />
sistemul tau.</p>
<p># Incarca modulul NAT (acesta introduce toate modulele necesare)<br />
modprobe iptable_nat</p>
<p># In tabela NAT (-t nat) in chain-ul POSTROUTING adauga o regula<br />
# pentru toate pachetele care ies prin ppp0 (-p ppp0) care precizeaza<br />
# sa masqueradeze conexiunea (-j MASQUERADE).<br />
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</p>
<p># Da drumul la forwardarea IP<br />
echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<p>Observatie: aici nu faci nici un fel de filtrare a pachetelor: pentru aceasta<br />
citeste Packet Filtering HOWTO: capitolul &#8220;Folosirea impreuna a NAT-ului si a<br />
filtrarii de pachete&#8221;.</p>
<p>4.2. Dar despre ipmasqadm?</p>
<p>Nu este cazul sa ne facem probleme prea mari pentru compatibilitate. Poti<br />
folosi in mod simplu  &#8220;iptables -t nat&#8221; pentru a realiza forwardare de<br />
porturi. De exemplu, in Linux 2.2 ai fi facut:</p>
<p># Linux 2.2<br />
# Forwardeaza pachetele TCP catre portul 8080, adresa 1.2.3.4, spre<br />
# portul 80, adresa 192.168.1.1<br />
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80</p>
<p>Acum ar trebui sa faci:</p>
<p># Linux 2.4<br />
# Adauga o regula inainte de procesul rutarii in chain-ul PREROUTING<br />
# (-A PREROUTING) in tabela NAT (-t nat) pentru ca pachetele TCP<br />
# (-p tcp) care vin spre adresa 1.2.3.4 (-d 1.2.3.4), portul 8080<br />
# (&#8211;dport 8080) sa aiba destinatia mapata (-j DNAT) catre<br />
# 192.168.1.1, portul 80 (&#8211;to 192.168.1.1:80)<br />
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 &#8211;dport 8080 \<br />
-j DNAT &#8211;to 192.168.1.1:80</p>
<p>5. Controlul a ceea ce dorim sa facem cu NAT?</p>
<p>Ai nevoie sa scrii reguli NAT pentru a spune kernelului ce conexiuni sa<br />
schimbe, si cum sa le schimbe. Pentru a realiza aceasta folosim comanda<br />
iptables, si precizam ca dorim a schimba tabela NAT prin specificarea optiunii<br />
&#8220;-t nat&#8221;.</p>
<p>Tabela regulilor NAT cuprinde trei liste numite &#8220;chain-uri&#8221;: fiecare regula<br />
este examinata in chain pana cand una se potriveste. Doua chain-uri sunt<br />
numite PREROUTING (pentru DNAT, pentru pachetele care tocmai au intrat) si<br />
POSTROUTING (pentru SNAT, pentru pachetele care sunt pe cale sa iasa). Al<br />
treilea chain (OUTPUT) va fi ignorat in cele ce urmeaza.</p>
<p>Urmatoarea diagrama ilustreaza destul de bine cum stau lucrurile:</p>
<p>_____                                     _____<br />
/     \                                   /     \<br />
PREROUTING &#8211;&gt;[Routing ]&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&gt;POSTROUTING&#8212;&#8211;&gt;<br />
\D-NAT/     [Decision]                    \S-NAT/<br />
|                            ^<br />
|                            |<br />
|                            |<br />
|                            |<br />
|                            |<br />
|                            |<br />
|                            |<br />
&#8212;&#8212;&#8211;&gt; Local Process &#8212;&#8212;</p>
<p>La fiecare dintre punctele de mai sus, cand un pachet trece este determinat<br />
carei conexiuni ii este asociat. Daca este o conexiune noua, este determinat<br />
chain-ul corespunzator in tabela NAT pentru a determina ce sa facem cu acel<br />
pachet. Raspunsul determinat va fi aplicat pentru toate pachetele viitoare<br />
apartinand acelei conexiuni.</p>
<p>5.1 Selectare simpla folosind iptables</p>
<p>iptables admite un numar de optiuni standard dupa cum sunt listate mai jos.<br />
Toate optiunile care incep cu &#8220;&#8211;&#8221; pot fi prescurtate, atat timp cat iptables<br />
poate sa le deosebeasca de alte optiuni. Daca kernelul tau are iptables<br />
compilat ca modul, este necesar sa incarci intai modulul iptables: &#8220;insmod<br />
ip_tables&#8221;.</p>
<p>Cea mai importanta optiune in acest caz este optiunea de selectare a tabelei,<br />
&#8220;-t&#8221;. Pentru toate actiune NAT, vei dori sa folosesti &#8220;-t nat&#8221; pentru tabela<br />
NAT. A doua cea mai importanta optiune este &#8220;-A&#8221; pentru a adauga o noua regula<br />
la sfarsitul unui chain (&#8220;-A POSTROUTING&#8221;), sau &#8220;-I&#8221; pentru a insera o regula<br />
la inceputul unui chain (&#8220;-I PREROUTING&#8221;).</p>
<p>Poti specifia sursa (&#8220;-s&#8221; sau &#8220;&#8211;source&#8221;) si destinatia (&#8220;-d&#8221; sau<br />
&#8220;&#8211;destination&#8221;) pachetelor pe care le doresti sa le prelucrezi prin NAT.<br />
Aceste optiuni pot fi urmate de o singura adresa IP (192.168.1.1), un nume<br />
(www.securityorg.net), sau o adresa de retea (192.168.1.0/24 sau<br />
192.168.1.0/255.255.255.0).</p>
<p>Poti specifica interfata cu care sa se potriveasca regula, de intrare (&#8220;-i&#8221;<br />
sau &#8220;&#8211;in-interface&#8221;) sau de iesire (&#8220;-o&#8221; sau &#8220;&#8211;out-interface&#8221;), dar ceea ce<br />
poti specifica depinde si de chain-ul in care introduci regula: pentru<br />
chain-ul PREROUTING poti selecta numai interfete prin care intra pachetele,<br />
si in chain-ul POSTROUTING poti selecta numai interfete de iesire. Daca<br />
folosesti o interfata gresita iptables iti va da eroare.</p>
<p>5.2 Aspecte delicate in privinta selectarii pachetelor ce le dorim modificate</p>
<p>Am spus mai sus ca poti preciza o adresa sursa si destinatie. Daca vei omite<br />
optiunea privitoare la adresa sursa, atunci regula se va potrivi pentru<br />
orice adresa sursa. Analog, daca omiti optiunea pentru adresa destinatie, atunci<br />
regula se va potrivi pentru orice adresa destinatie.</p>
<p>Poti deasemenea indica un protocol specific (&#8220;-p&#8221; sau &#8220;&#8211;protocol&#8221;), cum ar fi<br />
TCP sau UDP; doar pachetele de acest tip se vor potrivi cu regula. Principalul<br />
motiv pentru a preciza unul dintre aceste protocoale permite apoi folosirea de<br />
noi optiuni: in special optiunile &#8220;&#8211;source-port&#8221; si &#8220;&#8211;destination-port&#8221;<br />
(prescurtate &#8220;&#8211;sport&#8221; si &#8220;&#8211;dport&#8221;).</p>
<p>Aceste optiuni iti permite sa specifici ca numai pachetele cu anumite porturi<br />
destinatie sau porturi sursa se vor potrivi cu regulii. Aceste optiuni sunt<br />
folositoare, de exemplu, pentru redirectarea cererilor web (porturile TCP 80<br />
sau 8080) si nemodificarea celorlalte pachete.</p>
<p>Aceste optiuni trebuie sa fie puse dupa optiunea &#8220;-p&#8221; (care are ca alt efect<br />
incarcarea optiunilor extinse pentru acel protocol). Poti folosi pentru<br />
porturi numere, sau nume cum sunt scrise in fisierul /etc/services.</p>
<p>Toate caracteristicile dupa care poti selecta un pachet sunt detaliate in<br />
pagina de manual pentru iptables (man iptables).</p>
<p>6. Cum sa modificam pachetele</p>
<p>In concluzie, acum stim cum sa selectam pachetele pe care le dorim modificate.<br />
Pentru a scrie regulile complete trebuie sa spunem kernelului cu exactitate<br />
ceea ce dorim sa facem pachetelor.</p>
<p>6.1 Folosirea NAT pentru modificarea adresei sursa</p>
<p>Doresti sa faci SNAT; sa schimbi adresa sursa a conexiunilor cu ceva diferit.<br />
Acesta este realizat in chain-ul POSTROUTING, chiar inainte de a fi trimis<br />
pachetul; acesta este un detaliu important, deoarece inseamna ca orice alceva<br />
in sistemul Linux (rutare, filtrare de pachete) va vedea doar pachetul<br />
neschimbat. Mai inseamna deasemenea ca optiunea &#8220;-o&#8221; (interfata de iesire)<br />
poate fi folosita.</p>
<p>SNAT este specificat folosind optiunea &#8220;-j SNAT&#8221;; si optiunea &#8220;&#8211;to-source&#8221;<br />
specifica o adresa IP, un sir de adrese IP, si un port optional sau un sir de<br />
porturi (doar in cazul protocoalelor UDP si TCP).</p>
<p>## Schimba adresa sursa cu 1.2.3.4<br />
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT &#8211;to 1.2.3.4</p>
<p>## Schimba adresa sursa cu 1.2.3.4, 1.2.3.5 sau 1.2.3.6<br />
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT &#8211;to 1.2.3.4-1.2.3.6</p>
<p>## Schimba adresa sursa cu 1.2.3.4, si porturile intre 1-1023<br />
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT &#8211;to 1.2.3.4:1-1023</p>
<p>6.1.1 Masquerading</p>
<p>Exista un caz particular de SNAT numit masquerading: ar trebui sa fie folosit<br />
numai pentru adrese IP asignate dinamic, cum ar fi in cazul celor ce se<br />
conecteaza prin dial-up (pentru adrese IP statice, foloseste SNAT ca mai sus).</p>
<p>Nu este necesar cand faci masquerading sa specifici adresa sursa: deoarece va<br />
folosi adresa sursa a interfetei prin care va iesi pachetul. Dar ce este mai<br />
importat, daca legatura cu ISP-ul cade, conexiunile (care acum sunt pierdute<br />
oricum) sunt uitate, acest lucru inseamnand mai putine probleme tehnice cand<br />
legatura cu ISP-ul revine cu o noua adresa IP.</p>
<p>## masqueradare pentru ppp0<br />
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</p>
<p>6.2 Folosirea NAT pentru modificarea adresei destinatie (DNAT)</p>
<p>Aceasta se realizeaza  in chain-ul PREROUTING, exact  dupa primirea<br />
pachetului, aceasta insemna ca orice in sistemul Linux (rutare, filtrare de<br />
pachete) va vedea pachetul cu noua adresa destinatie. Mai inseamna ca optiunea<br />
&#8220;-i&#8221; (interfata de intrare) poate fi folosita.</p>
<p>Se specifica folosirea DNAT cu ajutorul optiunii &#8220;-j DNAT&#8221;, iar optiunea<br />
&#8220;&#8211;to-detination&#8221; specifica o adresa IP, un sir de adrese IP, si un port<br />
optional sau un sir de porturi (acest lucru fiind valabil doar pentru<br />
protocoalele UPD si TCP).</p>
<p>## Schimba adresa destinatie cu 5.6.7.8<br />
# iptables -t nat -A PREROUTING -i eth0 -j DNAT &#8211;to 5.6.7.8</p>
<p>## Schimba adresa destinatie cu  5.6.7.8, 5.6.7.9 sau 5.6.7.10.<br />
# iptables -t nat -A PREROUTING -i eth0 -j DNAT &#8211;to 5.6.7.8-5.6.7.10</p>
<p>##Schimba adresa destinatie a traficului spre portul 80 cu 5.6.7.8, port 8080.<br />
# iptables -t nat -A PREROUTING -p tcp &#8211;dport 80 -i eth0 \<br />
-j DNAT &#8211;to 5.6.7.8:8080</p>
<p>6.2.2 Redirectare</p>
<p>Exista un caz particular de DNAT numita redirectare: este o simpla conventie<br />
care este echivalenta cu a realiza DNAT catre adresa interfetei prin care<br />
intra pachetele.</p>
<p>## Trimite traficul care vine pe portul 80 catre squid (proxy-ul<br />
transparent<br />
# iptables -t nat -A PREROUTING -i eth1 -p tcp &#8211;dport 80 \<br />
-j REDIRECT &#8211;to-port 3128</p>
<p>Observatie: squid-ul trebuie sa fie configurat pentru a putea fi folosit ca<br />
proxy transparent!</p>
<p>6.3 Mapare complexa</p>
<p>Sunt cateva lucruri rafinate in folosirea NAT pe care majoritatea oamenilor nu<br />
vor avea nevoie sa le foloseasca. Aceste lucruri sunt documentate mai jos<br />
pentru curiosi.</p>
<p>6.3.1. Selectarea de adrese multiple dintr-un sir</p>
<p>Daca un sir de adrese IP este specificat, adresa IP care va fi folosita este<br />
bazata pe cea mai putin folosita la conexiuni adresa IP de care sistemul stie.<br />
Acest comportament furnizeaza load-balancing primar.</p>
<p>6.3.2. Realizarea de mapare NAT nula</p>
<p>Poti folosi tinta &#8220;-j ACCEPT&#8221; pentru a permite realizarea conexiunii fara sa<br />
fie realizat deloc NAT.</p>
<p>6.3.3. Comportamentul NAT standard</p>
<p>Comportamentul obisnuit este sa modifice conexiunea cat mai putin posibil, cu<br />
exceptia regulilor date de catre utilizator. Aceasta inseamna ca nu vor fi<br />
remapate porturile decat daca suntem obligati sa realizam acest lucru.</p>
<p>6.3.4. Mapare implicita a porturilor sursa</p>
<p>Chiar daca folosirea NAT nu este ceruta pentru o conexiune, translatarea<br />
portului sursa poate fi facut automat, daca o alta conexiune a fost mapata<br />
peste una noua. De exemplu considerati un caz care este comun in masquerading:</p>
<p>1. O conexiune web este realizata de la un sistem cu IP-ul 192.1.1.1 cu portul<br />
sursa 1024 catre www.securityorg.net portul 80.</p>
<p>2. Aceasta conexiune este masqueradata de un sistem care se ocupa cu acest<br />
lucru, pentru a folosi IP-ul sursa al sistemului ce realizeaza masqueradarea<br />
(1.2.3.4)</p>
<p>3. Insusi sistemul ce realizeaza masquerading initiaza o conexiune catre<br />
www.securityorg.net, portul 80, de la 1.2.3.4 (adresa interfetei externe)<br />
portul 1024</p>
<p>4. Codul NAT va modifica portul sursa al celei de-a doua conexiuni cu 1025,<br />
astfel ca sa nu existe conflict intre cele doua conexiuni.</p>
<p>Cand se realizeaza aceasta mapare automata a sursei, porturile sunt impartite<br />
in trei clase:</p>
<p>o Porturile sub 512<br />
o Porturile intre 512 si 1023<br />
o Porturile de la 1024, inclusiv, in sus</p>
<p>Un port nu va fi niciodata mapat automat intr-o clasa diferita.</p>
<p>6.3.5. Ce se intampla cand NAT-area nu reuseste</p>
<p>Daca nu mai este disponibil nici un mod in care sa se relizeze maparea unica a<br />
conexiunii cerute de catre utilizator, conexiunea va fi abandonata. Acest<br />
comportament se aplica ai in cazurile in care pachetele nu au putut fi<br />
clasificate ca parte a unei conexiuni, deoarece sunt malformate, sau sistemul<br />
nu mai are memorie libera, etc.</p>
<p>6.3.6. Mapari multiple, Suprapuneri si Conflicte</p>
<p>Daca ai reguli care folosesc NAT pentru mapare de porturi aflate intr-o raza<br />
comuna; codul NAT este destul de inteligent pentru a evita conflicte. Aceasta<br />
pentru ca, avand doua reguli, este corecta maparea adresei sursa pentru<br />
192.168.1.1 si respectiv 192.168.1.2 in adresa 1.2.3.4.</p>
<p>Mai mult, poti face mapare peste adrese IP reale folosite, atat timp cat<br />
aceste adrese trec deasemenea prin masina care realizeaza maparea. Asa ca daca<br />
ai o retea asignata (1.2.3.0/24), dar ai o retea interna care foloseste<br />
aceasta clasa de IP-uri si inca o retea care foloseste o clasa de adrese IP<br />
private 192.168.1.0/24, poti sa realizezi SNAT pentru adresele cu sursa IP<br />
192.168.1.0/24 peste adresele din reteaua 1.2.3.0, fara sa iti fie teama de<br />
conflicte:</p>
<p># iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \<br />
-j SNAT &#8211;to 1.2.3.0/24</p>
<p>Aceeasi logica se aplica adreselor folosite de insusi sistemul ce realizeaza<br />
NAT: in acest fel functioneaza si masquerading-ul (prin folosirea impreuna a<br />
adresei interfatei de catre pachetele masqueradate si pachetele &#8220;reale&#8221;<br />
venite de la insusi sistemul ca realizeaza masquerading-ul).</p>
<p>De altfel, poti mapa aceleasi pachete pe mai multe sisteme diferite, si<br />
acestea vor fi folosite in comun. De exemplu, daca nu doresti sa mappezi nimic<br />
peste adresa 1.2.3.5, ai putea sa dai urmatoarea comanda:</p>
<p># iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \<br />
-j SNAT &#8211;to 1.2.3.0-1.2.3.4 &#8211;to 1.2.3.6-1.2.3.254</p>
<p>6.3.7. Schimbarea destinatiei conexiunilor generate local</p>
<p>Codul NAT iti permite sa introduce reguli in chainul OUTPUT avand ca tinta<br />
DNAT, dar acest lucru nu este in intregime suportat in kernelurile 2.4 (poate<br />
fi programat dar are nevoie de noi optiuni, testari, si putina programare,<br />
asa ca daca nimeni nu il contacteaza pe Rusty pentru al scrie, nu o sa fie<br />
disponibil prea devreme).</p>
<p>Limitarea curenta este faptul ca poti sa schimbi destinatia pachetelor doar<br />
catre sistemul local ( &#8220;-j DNAT &#8211;to 127.0.0.1&#8243;), nu si catre alte sisteme, in<br />
caz contrar replicile nu vor fi primite in mod corect inapoi.</p>
<p>7. Protocoale speciale</p>
<p>Unele protocoale nu accepta sa fie NAT-uite. Pentru fiecare dintre aceste<br />
protocoale, doua module speciale trebuiesc scrie; unul pentru urmarirea<br />
conexiunilor si al doilea pentru operatia de NAT-are propriu-zisa.</p>
<p>In cadrul distributiei netfilter, exista module pentru ftp: ip_conntrack_ftp.o<br />
si ip_nat_ftp.o. Daca le inserezi in kernel (insmod) sau le compilezi in<br />
kernel, atunci realizarea oricarui tip de NAT pentru conexiuni ftp ar trebui<br />
sa functioneze. Daca nu, atunci poti folosi ftp pasiv, si chiar si atunci s-ar<br />
putea sa nu functioneze foarte sigur daca vrei sa realizezi alceva decat SNAT.</p>
<p>8. Avertizmente privind folosirea NAT</p>
<p>Daca realizezi NAT pentru o conexiune, pachetele venind din ambele sensuri<br />
(din afara si din inauntrul retelei) trebuie sa treaca prin sistemul care<br />
realizeaza NAT-area, in caz contrar lucrurile nu vor functiona sigur. In<br />
special, codul urmarii conexiunilor reansambleaza fragmentele, care inseamna<br />
ca nu numai depistarea conexiunilor nu va fi sigura, dar chiar si pachetele<br />
s-ar putea sa nu treaca deloc, ca fragmente fiind retinute.</p>
<p>9. Folosirea SNAT si rutarea</p>
<p>Daca doresti sa realizezi SNAT, vei dori sa fii sigur ca fiecare masina la<br />
care ajung pachete care sunt parte a unei conexiuni SNAT, vor trimite<br />
pachetele replica inapoi la sistemul care realizeaza SNAT-ul.<br />
De exemplu, daca mapezi niste pachete ce ies, cu adresa sursa 1.2.3.4, atunci<br />
ruterul extern trebuie sa stie ca trebuie sa trimita pachetele replica inapoi<br />
(care vor avea adresa destinatie 1.2.3.4) catre acest sistem.<br />
Acest lucru poate fi realizat in urmatoarele moduri:</p>
<p>1. Daca realizezi SNAT peste adresa propriului sistem (pentru care rutarea si<br />
toate celelalte merg deja), nu trebuie sa faci nimic</p>
<p>2. Daca realizezi SNAT peste o adresa nefolosita din propriul LAN (de exemplu,<br />
mappezi peste 1.2.3.99, o adresa IP nefolosita din reteaua ta  1.2.3.0/24),<br />
sistemul ce realizeaza NAT va trebui sa raspunda la cereri ARP pentru aceea<br />
adresa ca si pentru propria sa adresa: cea mai simpla metoda de a rezolva<br />
acest lucru este sa creezi un alias pentru adresa IP, de exemplu:</p>
<p># ip address add 1.2.3.99 dev eth0</p>
<p>3. Daca realizezi SNAT peste o adresa complet diferita, va trebui sa te asiguri<br />
ca masinile la care vor ajunge pachetele SNAT-atate vor ruta aceasta adresa<br />
inapoi catre sistemul pe care se realizeaza SNAT-ul. Aceasta este realizata<br />
deja daca sistemul care realizeaza SNAT-ul este gateway-ul lor default, in caz<br />
contrar va trebui sa adaugi o ruta pe fiecare sistem prin care trec pachetele<br />
modificate.</p>
<p>10. Folosirea DNAT pentru adrese aflate in aceeasi retea.</p>
<p>Daca realizezi forwardare de porturi inapoi in aceeasi retea, trebuie sa fii<br />
sigur ca atat pachetele viitoare cat si pachetele ce vin in replica vor trece<br />
prin sistemul ce realizeaza DNAT-ul (pentru ca acestea sa fie modificate).<br />
Codul NAT va bloca (inca din ver. 2.4.0-test6) pachetele ICMP de redirectare<br />
care rezulta atunci cand pachetele NAT-ate se indreapta catre aceeasi interfata<br />
spre care au venit, dar serverul care primeste acele pachete va incerca in<br />
continuare sa raspunda direct catre client (care nu va recunoaste pachetele<br />
replica).</p>
<p>Cazul clasic este cand un sistem din reteaua interna incearca sa acceseze<br />
serverul www &#8220;public&#8221;, care este defapt DNAT-at de la adresa publica (1.2.3.4)<br />
catre un sistem din reteaua interna (192.168.1.1), astfel:</p>
<p># iptables -t nat -A PREROUTING -d 1.2.3.4 \<br />
-p tcp &#8211;dport 80 -j DNAT &#8211;to 192.168.1.1</p>
<p>O cale este sa rulezi un server de DNS intern care sa stie adresa IP reala<br />
(interna) al site-ului public de web, si sa inainteze toate celelate cereri<br />
catre un server DNS extern. Aceasta inseamna ca va fi folosita o conexiune<br />
directa catre server-ul de web, fara sa mai fie nevoie de a trece prin<br />
sistemul care realizeaza NAT.</p>
<p>Cealalta cale este sa realizezi, pe sistemul care face DNAT, mapparea adresei<br />
sursa spre propria lui adresa pentru conexiunile venind din reteaua interna,<br />
pacalind serverul de web sa trimita pachetele replica spre masina ce se ocupa<br />
cu NAT-area. Pentru acest exemplu vom proceda astfel (presupunem ca adresa IP<br />
al sistemului care realizeaza NAT este 192.168.1.250):</p>
<p># iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \<br />
-p tcp &#8211;dport 80 -j SNAT &#8211;to 192.168.1.250</p>
<p>Deoarece regula din chain-ul PREROUTING este executata prima, pachetele vor fi<br />
deja destinate pentru server-ul de web intern: putem preciza care din pachete<br />
sunt din reteaua interna dupa adresa IP sursa.</p>
<p>11. Multumiri</p>
<p>Multumirile sunt in primul rand pentru WatchGuard, si David Bonn, care a<br />
crezut in ideea netfilter destul pentru a ma sustine sa o tranform in<br />
realitate. Si pentru toti ceilalti, care m-au suportat cand faceam pe grozavul<br />
cand am invatat despre uratenia NAT-ului, in special celor ce mi-au citit<br />
jurnalul.</p>
<p>Rusty.</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=173</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Folosirea lui iptables pentru filtrarea pachetelor in kernelurile versiunea 2.4</title>
		<link>http://resurse-educationale.uv.ro/?p=171</link>
		<comments>http://resurse-educationale.uv.ro/?p=171#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:47:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[filtru de pachete]]></category>
		<category><![CDATA[icmp]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[ipchains]]></category>
		<category><![CDATA[ipfwadm]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[protocol]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[udp]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=171</guid>
		<description><![CDATA[traducere ver. 0.6 de catre Riddl Multumiri tuturor celor care m-au ajutat. Lui Gushterul in special. Deasemenea multumiri si lui Little Dragon. Observatie f importanta: probabil ca exista unele greseli in acest document. Am tradus si eu cum m-am priceput &#8230; <a href="http://resurse-educationale.uv.ro/?p=171">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>traducere ver. 0.6 de catre Riddl</p>
<p>Multumiri tuturor celor care m-au ajutat. Lui Gushterul in special.<br />
Deasemenea multumiri si lui Little Dragon.<br />
Observatie f importanta: probabil ca exista unele greseli in acest document.<br />
Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de<br />
traducere si pentru observatii pertinente mail me (Riddl) at<br />
&#8220;discutzii at gmx dot net&#8221;. Nu uitati sa precizati numele documentului.<br />
Multumesc anticipat.<br />
Aceasta versiune este putin modificata fata de original, deorece unii termeni<br />
sunau foarte aiurea in ro.<br />
Pentru ultima versiune a acestui document verifica<br />
&lt;http://www.securityorg.net/docs/&gt;.</p>
<p>Lecturare placuta!</p>
<p>______________________________________________________________________</p>
<p>Linux 2.4 Packet Filtering HOWTO<br />
Rusty Russel, lista de discutii netfilter@lists.samba.org<br />
$Revision: 1.2 $ $Date: 2002/02/19 11:33:43 $</p>
<p>Acest document descrie folosirea lui iptables pentru filtrarea pachetelor in<br />
kernelurile versiunea 2.4.<br />
______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere<br />
2. Care este site-ul oficial? Exista vreo lista de discutii?<br />
3. Deci, ce inseamna filtru de pachete?<br />
3.1 De ce as vrea sa filtrez pachetele?<br />
3.2 Cum filtrez pachetele sub linux?<br />
3.2.1 iptables<br />
3.2.2 Crearea regulilor permanente<br />
4. Cine dracu esti tu, si de ce te joci cu kernelul meu?<br />
5. Ghidul intr-adevar rapid al lui Rusty pentru filtrarea de pachete<br />
6. Cum traverseaza pachetele filtrele?<br />
7. Folosirea iptables<br />
7.1 Ce vei vedea cand porneste calculatorul<br />
7.2 Operatii pentru o singura regula<br />
7.3 Optiuni de filtrare<br />
7.3.1 Specificarea IP-ului sursa si destinatie<br />
7.3.2 Specificarea inversa<br />
7.3.3 Specificarea protocolului<br />
7.3.4 Specificarea unei interfete<br />
7.3.5 Specificarea fragmentelor<br />
7.3.6 Optiuni extinse la iptables: Noi potriviri<br />
7.3.6.1 Optiuni extinse TCP<br />
7.3.6.1.1 O explicatie pentru flag-urile TCP<br />
7.3.6.2 Optiuni extinse UDP<br />
7.3.6.3 Optiuni extinse ICMP<br />
7.3.6.4 Alte optiuni extinse pentru potrivire<br />
7.3.6.5 Potrivirea dupa stare<br />
7.4 Argumente asupra tintei<br />
7.4.1 Chain-uri definite de utilizator<br />
7.4.2 Optiuni extinse la iptables: Noi tinte<br />
7.4.3 Tinte speciale construite default<br />
7.5 Operatii asupra unui intreg chain<br />
7.5.1 Creearea unui nou chain<br />
7.5.2 Stergerea unui chain<br />
7.5.3 Stergerea tuturor regulilor unui chain<br />
7.5.4 Listarea unui chain<br />
7.5.5 Resetarea counter-elor<br />
7.5.6 Setarea policy-ului</p>
<p>8. Folosirea ipchains si ipfwadm<br />
9. Folosirea impreuna a NAT-ului si a filtrarii de pachete<br />
10. Diferente intre iptables si ipchains<br />
11. Sfaturi asupra designului filtrului de pachete</p>
<p><span id="more-171"></span></p>
<p>______________________________________________________________________</p>
<p>1. Introducere</p>
<p>Bine ai venit, cititorule. (:))</p>
<p>Se presupune ca stii ce este aceea o adresa IP, adresa de retea, netmask,<br />
routare si DNS. Daca nu, se recomanda sa citesti Network Concepts Howto.<br />
Acest HOWTO loveste intre o introducere draguta (care te poate lasa<br />
increzator pentru moment, dar neprotejat in lumea reala) si o dezvaluire<br />
total neprelucrata (care ii vor lasa pe toti, mai putin caracterele tari,<br />
in confuzie, paranoici si in cautarea de arme grele).</p>
<p>Reteaua ta nu este sigura. Problema permiterii comunicarii rapide si<br />
comode, in acelasi timp cu restrictia acesteia numai pentru bine si nu in<br />
mod malefic, este asemanatoare cu alte probleme opuse  cum ar fi permiterea<br />
vorbirii libere in acelasi timp cu refuzarea unui strigat de &#8220;FOC!!&#8221; intr-un<br />
teatru aglomerat. Nu va fi rezolvata aceasta problema in spatiul acestui<br />
HOWTO.</p>
<p>Asa ca doar tu poti sa decizi unde va fi compromisul. Voi incerca sa te<br />
instruiesc in folosirea unor comenzi disponibile si a unor vulnerabilitati<br />
de care sa fii constient, in speranta ca vei folosi aceasta in mod pozitiv<br />
si nu in scopuri malefice. Aceasta este o alta problema asemanatoare.</p>
<p>(C) 2000 Paul &#8220;Rusty&#8221; Russell.  Cu licenta sub  GNU GPL.</p>
<p>2. Care este site-ul oficial? Exista vreo lista de discutii?</p>
<p>Sunt trei site-uri oficiale:</p>
<p>o 	Multumiri lui Filewatcher &lt;http://netfilter.filewatcher.org/&gt;.<br />
o 	Multumiri Echipei Samba si SGI &lt;http://netfilter.samba.org/&gt;.<br />
o 	Multumiri lui Harald Welte &lt;http://netfilter.gnumonks.org/&gt;.</p>
<p>Le poti accesa pe toate folosind round-robin DNS la:<br />
&lt;http://www.netfilter.org/&gt; si  &lt;http://www.iptables.org/&gt;</p>
<p>Pentru lista de discutii oficiala de la netfilter, vezi:<br />
&lt;http://www.netfilter.org/contact.html#list&gt;.</p>
<p>3. Deci, ce inseamna filtru de pachete?</p>
<p>Un filtru de pachete este o bucatica de software care se uita la header-ul<br />
pachetelor pe masura ce ele intra, si decid soarta intregului pachet. Acest<br />
filtru poate decide sa ignore pachetul (DROP) (respinge pachetul ca si cum<br />
nu l-ar fi primit niciodata), accepta (ACCEPT) pachetul (lasa pachetul sa<br />
intre), sau alte decizii mai complicate.</p>
<p>Sub linux, filtrarea de pachete este construita in kernel (ca modul sau<br />
construita in el), si sunt cateva lucruri complicate pe care le putem face cu<br />
pachetele, dar principiul general de examinare al header-ului pachetului si<br />
decidere asupra sortii pachetului este inca acolo.</p>
<p>3.1 De ce as vrea sa filtrez pachetele?</p>
<p>Control. Securitate. Vigilenta.</p>
<p>Control:<br />
cand folosesti un sistem Linux pentru a-ti conecta reteaua interna<br />
la o alta retea (sa spunem, Internet) ai posibilitatea de a permite<br />
un anumit tip de trafic, si sa refuzi pe altele. De exemplu,<br />
header-ul contine adresa destinatie a unui pachet, asa ca poti<br />
preveni pachetele sa se duca spre o anumita parte a retelei<br />
exterioare. Ca un alt exemplu, folosesc Netscape pentru accesarea<br />
arhivelor Dilbert. Sunt reclame pe pagina de la doubleclick.net, si<br />
Netscape imi pierde timpul incarcandu-le. Spunand filtrului de pachete<br />
sa nu permita pachete de la sau spre nici una din adresele detinute<br />
de catre doubleclick.net, rezolva aceasta problema (cu toate acestea<br />
sunt modalitati mai bune pentru aceasta: vezi Junkbuster).</p>
<p>Securitate:<br />
cand sistemul tau Linux este singurul intre haosul Internetului<br />
si reteaua ta ordonata si delicata, este placut sa stii ca poti<br />
sa restrictionezi ceea ce vine tropaind la usa. De exemplu, poti sa<br />
permiti la tot sa iasa din retea, dar ai putea fi ingrijorat de<br />
binecunoscutul &#8220;Ping al Mortii&#8221; venind de la persoanele din afara rau<br />
intentionate. Ca un alt exemplu, s-ar putea sa nu doresti ca<br />
persoanele din afara sa se telnet-uiasca pe sistemul tau Linux, chiar<br />
daca toate conturile tale au parole. Poate doresti (ca multi oameni)<br />
sa fii un observator  al Internet-ului, si nu server (de voie, sau in<br />
alt mod). Pur si simplu nu lasa pe nimeni sa se conecteze, punand<br />
fitrul de pachete sa respinga pachetele folosite la initierea de<br />
conexiuni.</p>
<p>Vigilenta:<br />
uneori o masina prost configurata in reteaua locala va decide sa<br />
arunce pachete spre lumea din afara. Este dragut sa-i spui filtrului de<br />
pachete sa te anunte daca se intampla ceva anormal; poate poti face<br />
ceva cu privire la acel lucru, sau poate esti doar curios.</p>
<p>3.2 Cum filtrez pachetele sub linux?</p>
<p>Kernelurile Linux au avut filtrare de pachete inca de la versiunile 1.1.<br />
Prima generatie, bazata pe ipfw de la BSD, a fost portata de catre Alan Cox<br />
spre sfarsitului anului 1994. Aceasta a fost dezvoltata de catre Jos Vos si<br />
altii pentru Linux 2.0; comanda pentru utilizatori &#8220;ipfwadm&#8221; controla<br />
regulile de filtrare ale kernelului. La mijlocului anului 1998, pentru Linux<br />
2.2, am rescris puternic kernelul cu ajutorul lui Michael Neuling, si am<br />
introdus comanda pentru utilizatori &#8220;ipchains&#8221;. In sfarsit, a patra generatie<br />
de comenzi, &#8220;iptables&#8221;, si o noua rescriere a kernelului s-a intamplat la<br />
mijlocul anului 1999 pentru Linux 2.4. Acest HOWTO este centrat pe iptables.</p>
<p>Ai nevoie de un kernel care are infrastructura netfilter in el: netfilter este<br />
un cadru in interiorul kernelului Linux in care alte lucruri (cum ar fi<br />
modulul de iptables) se pot introduce. Asta inseamna ca ai nevoie de kernel<br />
versiune 2.3.15 sau peste, si sa raspunzi &#8220;Y&#8221; la CONFIG_NETFILTER in<br />
configurarea kernelului.</p>
<p>Comanda iptables comunica kernelului si ii spune ce pachete sa filtreze.</p>
<p>3.2.1 iptables</p>
<p>Comanda iptables insereaza si sterge reguli din tabela de filtrare a<br />
pachetelor din kernel. Asta inseamna ca orice vei seta, va fi pierdut dupa<br />
rebootare; vezi &#8220;Crearea regulilor permanente&#8221; pentru cum sa fii sigur ca vor<br />
fi restaurate data urmatoare cand va boota Linuxul.</p>
<p>iptables este un inlocuitor pentru ipfwadm si ipchains: vezi &#8220;Folosirea<br />
ipchains si ipfwadm&#8221; pentru a afla cum poti evita fara probleme folosirea<br />
iptables daca folosesti una din aceste comenzi.</p>
<p>3.2.2 Crearea regulilor permanente</p>
<p>Setarile firewall-ului tau curent sunt pastrate in kernel, si de aceea vor fi<br />
pierdute la rebootare. Poti folosi scripturile iptables-save si<br />
iptables-restore sa le salvezi, sau restaurezi dintr-un fisier.</p>
<p>O alte cale este sa pui comenzile cerute sa iti setezi regulile intr-un<br />
script de initializare. Ai grija sa faci ceva inteligent in caz ca una din<br />
comenzi nu ar reusi (de obicei &#8220;exec /sbin/sulogin&#8221;).</p>
<p>4. Cine dracu esti tu, si de ce te joci cu kernelul meu?</p>
<p>Sunt Rusty Russel; cel ce mentine Linux IP Firewall si doar un alt<br />
programator care s-a intamplat sa fie in locul potrivit la momentul potrivit.<br />
Am scris ipchains (vezi mai sus &#8220;Cum filtrez pachetele sub linux?&#8221; pentru a da<br />
credit celor care au facut de fapt munca), si am invatat suficient sa fac<br />
cum trebuie de data asta filtrarea de pachete. Sper.</p>
<p>WatchGuard &lt;http://www.watchguard.com&gt;, o compania excelenta de firewall-uri<br />
care vinde chiar simpaticul plug-in Firebox, s-a oferit sa ma plateasca sa nu<br />
fac nimic, pentru a-mi petrece tot timpul meu sa scriu asta, si sa imi<br />
mentin munca anterioara. Am preconizat 6 luni, si mi-au luat 12, dar la<br />
sfarsit am simtit ca l-am facut cum trebuie. Multe rescrieri, o cedare a<br />
unui hardisk, un laptop furat, doua sisteme de fisiere corupte si un<br />
monitor spart mai tarziu, asta este.</p>
<p>Cat sunt aici, vreau sa indrept niste idei gresite ale unor oameni: nu sunt<br />
un guru al kernelului. Stiu asta, pentru ca munca mea pe partea din kernel<br />
m-a adus in contact cu unii din acestia: David S. Miller, Alexey Kuznetsov,<br />
Andi Kleen, Alan Cox. Oricum, sunt cu totii ocupati sa faca magia din<br />
interior,  lasandu-ma sa avansez cu greu prin superficialitate unde este<br />
sigur.</p>
<p>5. Ghidul intr-adevar rapid al lui Rusty pentru filtrarea de pachete</p>
<p>Cei mai multi oameni au o singura conexiune PPP spre Internet, si nu vor ca<br />
cineva sa intre inapoi in reteaua lor, iata firewall-ul:</p>
<p>## Se insereaza modulele pentru connection-tracking (nu este necesar<br />
## daca sunt compilate in kernel)<br />
# insmod ip_conntrack<br />
# insmod ip_conntrack_ftp</p>
<p>## Se creeaza chain-ul care blocheaza conexiunile noi, cu exceptia celor<br />
## venite din interior.</p>
<p># iptables -N block<br />
# iptables -A block -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br />
# iptables -A block -m state &#8211;state NEW -i ! ppp0 -j ACCEPT<br />
# iptables -A block -j DROP</p>
<p>## Se sare la acest chain din chain-urile INPUT si FORWARD<br />
# iptables -A INPUT -j block<br />
# iptables -A FORWARD -j block</p>
<p>6. Cum traverseaza pachetele filtrele?</p>
<p>Kernelul porneste cu trei liste de reguli in tabela de &#8220;filtrare&#8221;; aceste<br />
liste sunt numite chain-uri ale firewall-ului sau pur si simplu chain-uri<br />
(lanturi). Cele trei chain-uri se numesc INPUT, OUTPUT si FORWARD.</p>
<p>Pentru fanii ASCII, chain-urile sunt aranjate cam in felul urmator: (Nota:<br />
acesta este un aranjament foarte diferit fata de cel din kernelurile ver.<br />
2.0 si 2.2 !)</p>
<p>_____<br />
Incoming                 /     \         Outgoing<br />
&#8211;&gt;[Routing ]&#8212;&gt;|FORWARD|&#8212;&#8212;-&gt;<br />
[Decision]     \_____/        ^<br />
|                        |<br />
v                       ____<br />
___                     /    \<br />
/   \                   |OUTPUT|<br />
|INPUT|                   \____/<br />
\___/                       ^<br />
|                        |<br />
&#8212;-&gt; Local Process &#8212;-</p>
<p>Cele trei cercuri reprezinta cele trei chain-uri despre care am vorbit<br />
anterior. Cand un pachet ajunge la un cerc din diagrama, acel chain este<br />
examinat pentru a decide soarta pachetului. In cazul in care chain-ul spune sa<br />
ignore pachetul (DROP), este taiat acolo, daca insa chain-ul spune sa accepte<br />
pachetul (ACCEPT), atunci pachetul continua sa parcurga diagrama.</p>
<p>Un chain este o lista de verificare cu reguli. Fiecare regula spune &#8220;daca<br />
headerul pachetului arata asa, atunci iata ce sa faci cu pachetul&#8221;. Daca<br />
regula nu se potriveste cu pachetul, atunci urmatoarea regula din chain<br />
(lant) este examinata. In final, daca nu mai exista reguli de examinat,<br />
kernelul se uita la politica acelui chain-ului pentru a decide soarta pachetului.<br />
Intr-un sistem sigur, politica in chain-uri este de obicei sa taie pachetul<br />
(DROP).</p>
<p>1. Cand un pachet vine (sa zicem, prin placa de retea) kernelul se<br />
uita intai la destinatia pachetului: aceasta se numeste &#8220;routing&#8221;<br />
(rutare).</p>
<p>2. Daca pachetul este destinat pentru aceasta masina, pachetul trece pe<br />
diagrama in chain-ul INPUT. Daca trece de acest chain, orice proces care<br />
asteapta acel pachet il va primi.</p>
<p>3. In caz contrar, daca kernelul nu are forwarding-ul pus, sau nu stie<br />
cum sa forward-eze pachetul, acesta este ignorat. Daca este pus<br />
forwarding-ul, si pachetul are ca destinatie o alta interfata de<br />
retea (daca mai ai inca una), atunci pachetul se duce in diagrama<br />
noastra direct catre chain-ul FORWARD. Daca este acceptat pachetul va<br />
fi transmis.</p>
<p>4. In final, un program ce ruleaza pe sistem poate trimite pachete.<br />
Aceste pachete trec direct in chain-ul OUTPUT: daca este acceptat<br />
pachetul isi continua drumul fara sa conteze interfata spre care este<br />
destinat.</p>
<p>7. Folosirea iptables</p>
<p>iptables are o pagina de manual destul de detaliata (man iptables), si daca<br />
ai nevoie de detalii mai in amanunt. Aceia dintre voi familiarizati cu<br />
ipchains vor dori poate sa se uite la &#8220;Diferente intre iptables si<br />
ipchains&#8221;; sunt comenzi foarte similare.</p>
<p>Sunt mai multe lucruri pe care le poti face cu iptables. Pornesti la drum cu<br />
trei chainu-ri default care nu pot fi sterse INPUT, OUTPUT si FORWARD. Sa<br />
privim operatiile care se pot aplica pentru un intreg chain:</p>
<p>1. Creearea unui chain nou (-N).<br />
2. Stergerea unui chain gol (care nu contine reguli) (-X).<br />
3. Schimbarea politicii pentru un chain default (-P).<br />
4. Listarea regulilor dintr-un chain (-L).<br />
5. Stergerea tuturor regulilor dintr-un chain (-F).<br />
6. Resetarea counter-elor de pachete si bytes pentru toate regulile<br />
dintr-un chain (-Z).</p>
<p>Sunt mai multe moduri in care se pot manipula regulile intr-un chain:</p>
<p>1. Adaugarea in coada chain-ului a unei noi reguli (-A).<br />
2. Insereaza o regula noua la o anumita pozitie in chain (-I). Daca<br />
nu este precizata pozitia printr-un numar atunci regula este adaugata<br />
la inceputul chain-ului.<br />
3. Inlocuieste o regula la o anumita pozitie in chain (-R).<br />
4. Sterge o regula la o anumita pozitie in chain, sau prima care se<br />
potriveste (-D).</p>
<p>7.1 Ce vei vedea cand porneste calculatorul</p>
<p>Iptables poate fi un modul, numit (&#8220;iptable_filter.o&#8221;), care ar trebui sa fie<br />
incarcat in mod automat cand rulezi prima oara iptables. Poate fi deasemenea<br />
compilat in kernel in mod permament.</p>
<p>Inainte de rularea oricarei comenzi iptables (ai grija: unele distributii vor<br />
rula iptables in scripturile lor de initializare), nu vor fi reguli in nici<br />
una din chain-urile default (&#8220;INPUT&#8221;, &#8220;OUTPUT&#8221; si &#8220;FORWARD&#8221;), toate<br />
chain-urile vor avea politica de acceptare a pachetelor (ACCEPT). Poti schimba<br />
politica default al chain-ului FORWARD prin stipularea optiunii &#8220;forward=0&#8243;<br />
modulului iptable_filter. (n.t. sau &#8220;echo 0 &gt; /proc/sys/net/ipv4/ip_forward&#8221;,<br />
depinde insa si de distributie, pe redhat default inseamna ca forward-ul<br />
este 0)</p>
<p>7.2 Operatii pentru o singura regula</p>
<p>Aceasta este paine-si-untul, sarea si piperul, si ce mai vreti voi, a filtrarii<br />
de pachete; manipularea regulilor. Cel mai obisnuit, vei folosi probabil<br />
comenzile de adaugare (-A) si stergere (-D). Celelalte (-I pentru inserare<br />
si -R pentru inlocuire) sunt doar extensii ale acestor concepte.</p>
<p>Fiecare regula specifica o multime de conditii pe care un pachet trebuie sa le<br />
indeplineasca si ce sa faca daca acestea sunt indeplinite (o &#8220;tinta&#8221;<br />
(target)). De exemplu, s-ar putea sa doresti sa ignori toate pachetele de<br />
tip ICMP care vin de la adresa 127.0.0.1. Deci, in acest caz conditiile<br />
noastre sunt ca protocolul sa fie ICMP si ca adresa sursa sa fie 127.0.0.1.<br />
&#8220;tinta&#8221; noastra este DROP. 127.0.0.1 este interfata &#8220;loopback&#8221;, pe care o ai<br />
chiar daca nu ai conexiune reala de retea. Poti folosi programul &#8220;ping&#8221;<br />
pentru a genera acest tip de pachete (pur si simplu trimite pachete ICMP de<br />
tip 8 (echo request) la care toate host-urile ar trebui sa raspunda cu<br />
pachete ICMP de tip 0 (echo replay)). Aceast program este foarte folositor<br />
pentru teste.</p>
<p># ping -c 1 127.0.0.1<br />
PING 127.0.0.1 (127.0.0.1): 56 data bytes<br />
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms</p>
<p>&#8212; 127.0.0.1 ping statistics &#8212;<br />
1 packets transmitted, 1 packets received, 0% packet loss<br />
round-trip min/avg/max = 0.2/0.2/0.2 ms<br />
# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP<br />
# ping -c 1 127.0.0.1<br />
PING 127.0.0.1 (127.0.0.1): 56 data bytes</p>
<p>&#8212; 127.0.0.1 ping statistics &#8212;<br />
1 packets transmitted, 0 packets received, 100% packet loss<br />
#</p>
<p>Poti vedea aici ca primul ping reuseste (&#8220;-c 1&#8243; spune sa sa trimita doar un<br />
singur pachet).</p>
<p>Apoi adaugam in coada (-A) chain-ului &#8220;INPUT&#8221;, o regula ce spune ca<br />
pentru pachetele de la 127.0.0.1 (&#8220;-s 127.0.0.1&#8243;) de tip ICMP (&#8220;-p icmp&#8221;)<br />
trebuie sa sarim la &#8220;DROP&#8221; (&#8220;-j DROP&#8221;).</p>
<p>Apoi testam regula noastra, folosind al doilea ping. Va fi o pauza pana cand<br />
programul se da batut sa astepte un raspuns care nu va veni niciodata. (:)),<br />
cat de DRAMATIC)</p>
<p>Am putea sa stergem regula in  doua moduri. Intai, deoarece stim ca este<br />
singura regula din chain-ul INPUT, putem folosi o stergere numarata, ca<br />
in:</p>
<p># iptables -D INPUT 1<br />
#</p>
<p>Pentru a sterge regula cu numarul 1 in chain-ul de INPUT.</p>
<p>Al doilea mod este sa scriem comanda prin care am introdus regula -A, dar sa<br />
inlocuim -A cu -D. Aceasta este folositor cand ai un chain complex de reguli<br />
si nu doresti sa le numeri ca sa iti dai seama ca este a 37-a regula de<br />
care vrei sa scapi. In aces caz, vom folosi:</p>
<p># iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP<br />
#</p>
<p>Sintaxa comenzii -D trebuie sa aiba exact aceleasi optiuni cum are comanda -A<br />
(sau -I, sau -R). Daca sunt reguli identice in acelasi chain, numai prima<br />
regula va fi stearsa.</p>
<p>7.3 Optiuni de filtrare</p>
<p>Am vazut folosirea optiunii &#8220;-p&#8221; pentru a specifica protocolul, si optiunii<br />
&#8220;-s&#8221; pentru a specifica adresa sursa, dar sunt alte optiuni pe care le putem<br />
folosi pentru a preciza caracteristici ale pachetului. Ceea ce urmeaza este<br />
un compedium complet.</p>
<p>7.3.1 Specificarea IP-ului sursa si destinatie</p>
<p>Adresele IP ale sursei (&#8220;-s&#8221;, &#8220;&#8211;source&#8221; sau &#8220;&#8211;src&#8221;) si destinatiei (&#8220;-d&#8221;,<br />
&#8220;&#8211;destination&#8221; sau &#8220;&#8211;dst&#8221;) pot fi specificate in patru moduri. Cea mai<br />
obisnuita forma este sa folosesti numele complet, cum ar fi &#8220;localhost&#8221; sau<br />
&#8220;www.securityorg.net&#8221;. Cea de-a doua cale este sa specifici adresa IP cum ar fi<br />
&#8220;127.0.0.1&#8243;.</p>
<p>Cea de a treia si a patra cale permite specificarea unui grup de adrese IP,<br />
cum ar fi &#8220;199.95.207.0/24&#8243; sau &#8220;199.95.207.0/255.255.255.0&#8243;. Amandoua<br />
specifica orice adresa IP de la 199.95.207.0 pana la 199.95.207.255 inclusiv;<br />
cifrele dupa &#8220;/&#8221; spun care parti din adresa IP sunt semnificative. &#8220;/32&#8243; sau<br />
&#8220;/255.255.255.255&#8243; este default (se potriveste cu toata adresa IP). Pentru a<br />
specifica oricare adresa IP &#8220;/0&#8243; poate fi folosit, astfel:</p>
<p>[ NOTA: "-s 0/0" este redundant aici. ]<br />
# iptables -A INPUT -s 0/0 -j DROP<br />
#</p>
<p>Aceasta este folosit in mod rar, deoarece efectul de mai sus este asemanator<br />
cu nespecificare deloc a optiunii &#8220;-s&#8221;.</p>
<p>7.3.2 Specificarea inversa</p>
<p>Multe optiuni, inclusiv optiunile &#8220;-s&#8221; (sau &#8220;&#8211;source&#8221;) si &#8220;-d&#8221;<br />
(&#8220;&#8211;destination&#8221;) pot avea argumentele precedate de &#8220;!&#8221; (pronuntat &#8220;nu&#8221;)<br />
pentru a corespunde adreselor care NU sunt egale cu adresele date. De exemplu,<br />
&#8220;-s ! localhost&#8221; corespunde oricarui pachet care nu vine de la localhost.</p>
<p>7.3.3 Specificarea protocolului</p>
<p>Protocolul poate fi specificat prin optiunea &#8220;-p&#8221; (sau &#8220;&#8211;protocol&#8221;).<br />
Protocolul poate fi un numar ( daca stii valorile numerice de protocol pentru<br />
IP) sau un nume pentru cazurile speciale de &#8220;TCP&#8221;, &#8220;UDP&#8221; sau &#8220;ICMP&#8221;. Nu<br />
conteaza daca se foloseste sau nu CAPS, asa ca &#8220;tcp&#8221; merge la fel ca si<br />
&#8220;TCP&#8221;.</p>
<p>Numele protocolului poate fi precedat de &#8220;!&#8221;, pentru a inversa, ca si &#8220;-p !<br />
tcp&#8221; pentru a specifica pachetele care nu sunt TCP.</p>
<p>7.3.4 Specificarea unei interfete</p>
<p>Optiunea &#8220;-i&#8221; (sau &#8220;&#8211;in-interface&#8221;) si &#8220;-o&#8221; (sau &#8220;&#8211;out-interface&#8221;)<br />
specifica numele interfatei cu care sa corespunda. O interfata este<br />
dispozitivul fizic prin care intra pachetul (&#8220;-i&#8221;) sau prin care iese<br />
pachetul (&#8220;-o&#8221;). Poti folosi comanda ifconfig pentru a lista interfetele<br />
care sunt &#8220;sus&#8221; (i.e., in stare de functionare in acel moment).</p>
<p>Pachetele care traverseaza chain-ul &#8220;INPUT&#8221; nu au o interfata de iesire, asa<br />
ca orice regula care foloseste &#8220;-o&#8221; in acest chain nu se va potrivi<br />
niciodata. In mod similar pachetele care travereseaza chain-ul OUTPUT nu au o<br />
interfata de intrare, asa ca orice regula care foloseste &#8220;-i&#8221; in acest<br />
chain nu se va potrivi niciodata.</p>
<p>Doar pachetele care travereseaza chain-ul FORWARD au o interata de intrare si<br />
de iesire. Este perfect valabil sa specifici o interfata care nu exista;<br />
regula nu se va potrivi cu nici un pachet pana cand interfata nu este sus.<br />
Aceasta este extrem de folositor pentru legaturi PPP de dial-up (de obicei<br />
interfete ppp0) si asemanatoare.</p>
<p>Ca un caz special, un nume de interfata terminandu-se cu &#8220;+&#8221; se va potrivi cu<br />
toate interfetele (fie ca exista sau nu) care incep cu acel sir de caractere.<br />
De exemplu pentru a specifica o regula care sa se potriveasca tuturor<br />
interfetelor PPP, optiunea -i ppp+ ar fi folosita.</p>
<p>Numele interfetei poate fi precedata de &#8220;!&#8221; cu spatii in jur, pentru a<br />
corespunde cu pachetul care nu se potriveste cu intefata specificata, de<br />
exemplu: -i ! ppp+.</p>
<p>7.3.5 Specificarea fragmentelor</p>
<p>Uneori un pachet este prea mare pentru a incape cu totul pe conexiune. Cand<br />
aceasta se intampla, pachetul este divizat in fragmente, si trimis ca pachete<br />
multiple. Celalalt capat reansambleaza aceste fragmente pentru a construi<br />
intregul pachet.</p>
<p>Problema cu fragmentele este ca primul fragment are campurile complete in<br />
header (IP + TCP, UDP si ICMP) pentru a le examina, dar cele care urmeaza au<br />
doar o submultime a header-elor (IP fara campurile protocolului aditional).<br />
De aceea privirea in header-e dupa protocol in pachetelor care urmeaza (cum se<br />
face in cazul  TCP, UDP si ICMP)  nu este posibila.</p>
<p>Daca faci connection tracking sau NAT, atunci toate fragmentele vor fi reunite<br />
inainte de a ajunge la codul filtrului de pachete, asa ca nu trebuie sa te<br />
ingrijorezi vreodata pentru fragmente.</p>
<p>Te rog sa retii de asemenea: chain-ul INPUT al tabelei de filtrare (sau a<br />
oricarei alte tabele care depinde de NF_IP_LOCAL_IN) este traversat dupa<br />
defragmentarea stivei principale IP.</p>
<p>In caz contrar, este important sa stii cum sunt tratate fragmentele de catre<br />
regulile de filtrare. Orice regula de filtrare care cere informatii pe care<br />
nu le avem nu se va potrivi. Aceasta inseamna ca primul fragment este tratat<br />
ca orice alt pachet. Al doilea si urmatoarele nu vor mai fi. De aceea o<br />
regula  -p tcp &#8211;sport www (specificand un port sursa &#8220;www&#8221;) nu se vor potrivi<br />
cu un fragment (altul decat primul). Nici regula opusa nu va face acest lucru<br />
-p tcp &#8211;sport ! www.</p>
<p>Oricum, poti sa specifici o regula special pentru fragmentul al doilea si<br />
urmatoarele, folosind optiunea &#8220;-f&#8221; (sau &#8220;&#8211;fragment&#8221;). Este de asemenea<br />
legal sa specifici ca o regula nu se aplica la al doilea si urmatoarele<br />
fragmente, prin precedarea lui &#8220;-f&#8221; cu &#8220;!&#8221;.</p>
<p>De obicei este considerat sigur sa lasi sa treaca al doilea si urmatoarele<br />
fragmente, deoarece filtrarea va afecta primul fragment, si de aceea previne<br />
reansamblarea pe calculatorul destinatie; cu toate acestea, sunt cunoscute<br />
bug-uri care permit caderea sistemului doar prin simpla trasnmitere de<br />
fragmente. Este decizia ta.</p>
<p>Nota pentru network-heads: pachetele cu malformatii (pachete TCP, UDP si<br />
ICMP prea scurte codului de firewall ca sa citeasca tipul portului sau codul<br />
ICMP si tipul) sunt ignorate cand asemenea examinarii sunt incercate.<br />
Astfel sunt si fragmentele TCP care pornesc de la pozitia 8.</p>
<p>Ca un exemplu, urmatoarea regula va ignora fragmentele care se duc spre<br />
192.168.1.1:</p>
<p># iptables -A OUTPUT -f -d 192.168.1.1 -j DROP<br />
#</p>
<p>7.3.6 Optiuni extinse la iptables: Noi potriviri</p>
<p>iptables este extensibil, asta inseamna ca amandoua, iptables si kernelul pot<br />
fi extinse pentru a suporta noi optiuni.</p>
<p>Unele dintre aceste optiuni sunt standard, altele sunt mai exotice. Aceste<br />
optiuni pot fi facute de catre alti oameni si distribuite.</p>
<p>Extensiile kernelului sunt gasite deobicei in subdirectorul de module ale<br />
kernelului cum ar fi /lib/modules/2.4.0-test10/kernel/net/ipv4/netfilter. Ele<br />
se incarca automat daca kernelul tau a fost compilat cu optiunea CONFIG_KMOD,<br />
asa ca nu o sa fie necesar sa le incarci manual.</p>
<p>Extensiile la programul iptables sunt librarii shared care de obicei se gasesc<br />
in /usr/local/lib/iptables/, deseamenea o distributie poate sa le puna in<br />
directorul /lib/iptables sau /usr/lib/iptables.</p>
<p>Optiuniile vin in doua feluri: noi tinte si noi potriviri (vom vorbi despre<br />
tinte ceva mai tarziu). Unele protocoale automat ofera noi teste pentru<br />
pachete: in mod curent acestea sunt TCP, UDP si ICMP, cum sunt aratate mai jos.</p>
<p>Pentru acestea vei putea sa specifici noile teste in linia de comanda dupa<br />
optiunea &#8220;-p&#8221;, care va pune la dispozitie automat optiunile extinse. Pentru<br />
a preciza teste noi, foloseste optiunea &#8220;-m&#8221; pentru a incarca extensia, dupa<br />
care optiunile extinse vor putea fi folosite.</p>
<p>Pentru a vedea help-ul pentru  optiunile extinse foloseste optiunea de<br />
incarcare (&#8220;-p&#8221;, &#8220;-j&#8221; sau &#8220;-m&#8221;) urmat de &#8220;-h&#8221; sau &#8220;&#8211;help&#8221;, de exemplu:</p>
<p># iptables -p tcp &#8211;help<br />
#</p>
<p>7.3.6.1 Optiuni extinse TCP</p>
<p>Optiunile extinse TCP sunt disponibile in mod automat daca se specifica<br />
optiunea &#8220;-p tcp&#8221;. Aceste optiuni sunt urmatoarele (nici una dintre ele nu<br />
se vor potrivi cu fragmente):</p>
<p>&#8211;tcp-flags<br />
poate fi urmat de semnul optional &#8220;!&#8221;, apoi de doua siruri de<br />
flag-uri, care permite filtrarea dupa anumite flag-uri. Primul sir de<br />
flag reprezinta mask-ul, flag-urile pe care doresti a le examina. Al<br />
doilea sir reprezinta care dintre acestea ar trebui sa fie prezente.<br />
De exemplu:</p>
<p># iptables -A INPUT &#8211;protocol tcp &#8211;tcp-flags ALL SYN,ACK -j DROP</p>
<p>Aceasta comanda spune ca toate flag-urile trebuiesc examinate (&#8220;ALL&#8221;<br />
este sinonim cu &#8220;SYN,ACK,FIN,RST,URG,PSH&#8221;), dar doar SYN si ACK<br />
trebuie sa fie setate. Exista de asemnea un argumente &#8220;NONE&#8221; similar<br />
pentru nici unul dintre acestea.</p>
<p>&#8211;syn<br />
In mod optional precedata de semnul &#8220;!&#8221;, este o prescurtare pentru<br />
&#8220;&#8211;tcp-flags  SYN,RST,ACK SYN&#8221;</p>
<p>&#8211;source-port<br />
poate fi urmat de un optional &#8220;!&#8221;, si fie de un singur port, fie<br />
de o sir de porturi. Porturile pot fi specificate fie folosind numere<br />
fie folosind nume, asa cum sunt specificate in /etc/services.<br />
sirurile se specifica prin doua porturi despartite de &#8220;:&#8221;, sau<br />
(pentru a specifica o sir de porturi mai mare sau egal cu un port<br />
dat) un port urmat de &#8220;:&#8221;, sau (pentru a specifica o lista de porturi<br />
mai mica sau egala decat un port dat) un port precedat de &#8220;:&#8221;.</p>
<p>&#8211;sport este sinonim cu &#8211;source-port</p>
<p>&#8211;destination-port<br />
si<br />
&#8211;dport<br />
sunt similare cu modul in care se specifica portul sursa numai ca in<br />
loc de portul sursa se face potrivirea dupa portul destinatie.</p>
<p>&#8211;tcp-option<br />
urmat de un optional &#8220;!&#8221; si un numar, se potriveste pentru un<br />
pachet cu optiunea TCP egala cu acel numar. Un pachet care nu are un<br />
header complet TCP este ignorat automat daca este facuta incercarea<br />
de a se examina headerele TCP.</p>
<p>7.3.6.1.1 O explicatie pentru flag-urile TCP</p>
<p>Uneori este folositor sa permiti conexiunile TCP intr-o singura directie, nu<br />
si in cealalta. De exemplu, ai putea sa permiti conexiuni catre un server<br />
extern WWW, dar nici o conexiune de la acel server.</p>
<p>Naiv ar fi sa blochezi pachetele TCP dinspre server. Din pacate, conexiunile<br />
TCP cer pachetele sa circule in ambele directii.</p>
<p>Solutia ar fi sa blochezi numai pachetele folosite pentru a initia<br />
conexiuni. Aceste pachete sunt numite pachete SYN (ok, tehnic sunt pachete cu<br />
flag SYN pus si cu flagurile RST si ACK nepuse, dar le numim pe scurt<br />
pachete SYN). Prin ignorarea acestor pachete, putem sa oprim aceste<br />
conexiuni.</p>
<p>Optiunea &#8220;&#8211;syn&#8221; este folosita pentru aceasta; este valida numai pentru<br />
regulile in care specificam tcp ca protocol. De exemplu, pentru a specifica<br />
incercarile de conexiune de la 192.168.1.1:</p>
<p>-p TCP -s 192.168.1.1 &#8211;syn</p>
<p>Aceasta optiune poate fi inversat prin precedarea &#8220;&#8211;syn&#8221; cu semnul &#8220;!&#8221;.</p>
<p>7.3.6.2 Optiuni extinse UDP</p>
<p>Aceste optiuni sunt automat disponibile cand se specifica &#8220;-p udp&#8221;. Acestea<br />
sunt: &#8220;&#8211;source-port&#8221;, &#8220;&#8211;sport&#8221;,&#8221;&#8211;destination-port&#8221; si &#8220;&#8211;dport&#8221; care au<br />
fost detaliate mai sus.</p>
<p>7.3.6.3 Optiuni extinse ICMP</p>
<p>Aceste optiuni sunt automat disponibile cand se specifica &#8220;-p icmp&#8221;. Este<br />
doar o singura optiune noua:</p>
<p>&#8211;icmp-type<br />
urmat de un semnul optional &#8220;!&#8221;, apoi de numele tipului icmp (ex.<br />
&#8220;host-unreachable&#8221;), sau tipul numeric (ex. &#8220;3&#8243;), sau tipul numeric<br />
si codul separate de &#8220;/&#8221; (ex. &#8220;3/3&#8243;). O lista a numelor de tipuri de<br />
pachete icmp este data folosind &#8220;-p icmp &#8211;help&#8221;.</p>
<p>7.3.6.4 Alte optiuni extinse pentru potrivire</p>
<p>Alte optiuni extinse in pachtetul de filtrare sunt optiuni demonstrative,<br />
care (daca sunt instalate) pot fi invocate cu optiunea &#8220;-m&#8221;.</p>
<p>mac</p>
<p>Acest modul trebuie in mod explicit specificat prin optiunea &#8220;-m mac&#8221;<br />
sau &#8220;&#8211;match mac&#8221;. Este folosit pentru a se potrivi cu pachetele ce au o<br />
anumita adresa ethernet MAC, si de aceea este folositoare numai<br />
pentru pachetele care traverseaza chain-urile PREROUTING si INPUT.<br />
Este disponibila o singura optiune noua:</p>
<p>&#8211;mac-source<br />
urmat de semnul optional &#8220;!&#8221;, apoi de o adresa ethernet in notatie<br />
hexa separata prin &#8220;:&#8221;, ex. &#8220;&#8211;mac-source 00:60:08:91:CC:B7&#8243;.</p>
<p>limit</p>
<p>Acest modul trebuie in mod explicit specificat prin optiunea &#8220;-m limit&#8221;<br />
sau cu &#8220;&#8211;match limit&#8221;. Este folosit pentru a restrange rata de<br />
potriviri, ca de exemplu pentru reprimarea mesajelor in log-uri<br />
(log-urile sunt fisierele in care sistemul scrie anumite date<br />
considerate importante, in ideea de a putea fi accesate mai tarziu). Se<br />
vor potrivi numai un numar dat de pachete pe secunda (default 3<br />
potriviri pe ora, la un numar maxim de 5 potriviri). Sunt disponibile<br />
doua optiuni:</p>
<p>&#8211;limit<br />
urmat de un numar; specifica numarul maxim de potriviri permise pe<br />
secunda. Numarul poate fi specificat pe unitati de timp explicite,<br />
folosind &#8220;/second&#8221;, &#8220;/minute&#8221;, &#8220;/hour&#8221; or &#8220;/day&#8221;, sau parti din ele<br />
(ex. &#8220;5/second&#8221; este la fel cu &#8220;5/s&#8221;).</p>
<p>&#8211;limit-burst<br />
urmat de un numar, indica numarul maxim de potriviri dupa care limita<br />
de mai sus intra in actiune.</p>
<p>Aceasta potrvire poate adesea fi folosita cu tinta LOG pentru a face<br />
logare limitata dupa o rata. Pentru a intelege cum functioneaza sa ne<br />
uitam la urmatoarea regula care logheaza cu parametri de limita default:</p>
<p># iptables -A FORWARD -m limit -j LOG</p>
<p>Prima data cand se ajunge la aceasta regula, pachetul va fi scris in<br />
log-uri, de fapt, deorece numarul limita este 5, primele 5 pachete vor<br />
ajunge in log-uri. Dupa aceasta vor trece 20 de minute pana cand alt<br />
pachet sa ajunga in log-uri datorita acestei reguli, fara sa conteze<br />
numarul de pachete care ajung la regula. Dupa 20 de minute<br />
limit-burst-ul,	numarul de pachete care vor putea fi primite va fi unu,<br />
dupa inca 20 de minute va mai creste cu o unitate, daca nici un pachet<br />
nu s-a potrivit cu regula. Deasemenea, la fiecare 20 de minute	care<br />
trec fara ca pachete sa se potriveasca  regulii, numarul limita va<br />
creste cu o unitate; daca nici un pachet nu se potriveste cu regula dupa 	100 de minute, numarul limita va fi din nou atins, inapoi de unde am<br />
plecat.</p>
<p>Nota: nu poti crea o regula cu un timp de reincarcare mai mare de 59<br />
de ore, asa ca daca pui o limita de 1/zi, atunci numarul maxim de<br />
potriviri (burst-rate) trebuie sa fie mai mic decat 3.</p>
<p>Poti de asemenea sa folosesti acest modul pentru a te feri de<br />
diferitele atacuri denial of service (DoS) cu o rata mai mare pentru a<br />
creste sensibilitatea.</p>
<p>Protectie pentru syn-flood:</p>
<p># iptables -A FORWARD -p tcp &#8211;syn -m limit 1/s -j ACCEPT</p>
<p>Pentru scannere de porturi clandestine:</p>
<p># iptables -A FORWARD -p tcp &#8211;tcp-flags SYN,ACK,FIN,RST RST<br />
-m limit &#8211;limit 1/s -j ACCEPT</p>
<p>Pingul mortii:</p>
<p># iptables -A FORWARD -p icmp &#8211;icmp-type echo-request -m<br />
-m limit &#8211;limit 1/s -j ACCEPT</p>
<p>Acest modul se comporta ca o &#8220;usa histeresis&#8221;, ca in graficul urmator:</p>
<p>rata (pachete/s)<br />
^        .&#8212;.<br />
|       / DoS \<br />
|      /       \<br />
Limita   DoS -|&#8230;..:&#8230;&#8230;&#8230;\&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
= (limit *  |    /:          \<br />
limit-burst) |   / :           \         .-.<br />
|  /  :            \       /   \<br />
| /   :             \     /     \<br />
End of DoS  -|/&#8230;.:&#8230;&#8230;&#8230;&#8230;..:&#8230;/&#8230;&#8230;.\&#8230;./.<br />
= limit     |     :              :&#8221;-&#8221;         &#8220;&#8211;&#8221;<br />
&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; time (s)<br />
LOGIC =&gt;  Potrivire | Nepotrivire  |  Potrivire</p>
<p>Sa consideram ca avem o potrivire de un pachet pe secunda cu o<br />
limita maxima de 5 pachete, dar pachetele vin cu o rata de patru pe<br />
secunda timp de 3 secunde, apoi incep din nou sa vina peste 3 secunde.</p>
<p>&lt;&#8211;Flood 1&#8211;&gt;           &lt;&#8212;Flood 2&#8212;&gt;</p>
<p>Pachete^                   Line  __&#8211;      YNNN<br />
total  |               Rate  __&#8211;      YNNN<br />
|            mum  __&#8211;      YNNN<br />
10 |        Maxi __&#8211;         Y<br />
|         __&#8211;            Y<br />
|     __&#8211;               Y<br />
| __&#8211;    YNNN<br />
|-    YNNN<br />
5 |    Y<br />
|   Y         Legenda:  Y -&gt; se potriveste cu regula<br />
|  Y          	  	 N -&gt; nu se potriveste cu regula<br />
| Y<br />
|Y<br />
0 +&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&gt; timpul in<br />
secunde<br />
0   1   2   3   4   5   6   7   8   9  10  11  12</p>
<p>Se poate vedea ca primele 5 pachete sunt permise sa depaseasca limita<br />
de un pachet pe secunda, apoi limit intervine. Daca este o  pauza de o<br />
secunda inca un pachet in plus va fi permis sa treaca. Intodeauna<br />
insa, nu se va permite depasirea de un pachet/secunda dupa ca<br />
numarul limita (burst-limit) este atins.</p>
<p>owner</p>
<p>acest modul incearca sa se potriveasca trasaturilor diferite ale<br />
creatorului pachetului, pentru pachetele generate local. Este valid<br />
numai in chain-ul OUTPUT, si chiar si atunci unele pachete (cum ar<br />
fi raspunsurile de tip ICMP) pot sa nu aiba creator, si de aceea sa<br />
nu se potriveasca.</p>
<p>&#8211;uid-owner userid<br />
se potriveste daca pachetul a fost creat de catre un proces cu<br />
acelasi id de user.</p>
<p>&#8211;gid-owner groupid<br />
se potriveste daca pachetul a fost creat de catre un proces cu<br />
acelasi id de group.</p>
<p>&#8211;pid-owner processid<br />
se potriveste daca pachetul a fost creat de catre un proces cu<br />
acelasi id de proces.</p>
<p>&#8211;sid-owner sessionid<br />
se potriveste daca pachetul a fost creat de catre un proces in grupul<br />
de sesiune dat.</p>
<p>unclean</p>
<p>Acest modul experimental trebuie sa fie in mod explicit specificat cu<br />
optiunea &#8220;-m unclean&#8221; sau &#8220;&#8211;match unclean&#8221;. Realizeaza niste teste<br />
variate de sanatate asupra pachetelor. Acest modul nu a fost testat,<br />
si nu ar trebui sa fie folosit ca o unealta in securitate (probabil<br />
ca inrautateste lucrurile din cauza ca el insusi s-ar putea sa aiba<br />
buguri). Nu este disponibila nici o optiune.</p>
<p>7.3.6.5 Potrivirea dupa stare</p>
<p>Cele mai folositoare optiuni este furnizata de modulul &#8220;state&#8221;, care<br />
interpreteaza analizele detectorului de conexiuni ale modulului<br />
&#8220;ip_conntrack&#8221;. Aceasta este foarte recomandata.</p>
<p>Specificarea modulului &#8220;-m state&#8221; permite folosirea unei optiuni<br />
aditionale de stare  &#8220;&#8211;state&#8221;. Aceste stari sunt:</p>
<p>NEW<br />
un pachet care creeaza o noua conexiune.</p>
<p>ESTABLISHED<br />
un pachet care apartine unei conexiuni deja stabilite (un pachet<br />
replica (replay), sau un pachet care pleaca al unei conexiuni care a primit<br />
replayuri).</p>
<p>RELATED<br />
Un pachet care este inrudit, dar care nu este parte a unei conexiuni existente,<br />
cum ar fi o eroare ICMP, sau (cu modulul FTP introdus), un pachet care<br />
stabileste o conexiune FTP.</p>
<p>INVALID<br />
Un pachet care nu a putut fi identificat pentru niste motive: aceasta include<br />
ramanerea fara memorie sau erori ICMP care nu apartin nici unei conexiuni<br />
cunoscute. In mod normal aceste pachete ar trebui ignorate.</p>
<p>Un exemplu pentru aceasta puternica optiune de potrivire ar fi:</p>
<p># iptables -A FORWARD -i ppp0 -m state ! NEW -j DROP</p>
<p>7.4 Argumente asupra tintei</p>
<p>Acum stim ce examinare poate fi facuta asupra unui pachet, avem nevoie de o<br />
cale pentru a preciza ce sa facem cu pachetele care se potrivesc  testelor<br />
noastre. Aceasta este numita tinta unei reguli.</p>
<p>Exista doua foarte simple tinte incluse: DROP si ACCEPT. Ne-am intalnit deja<br />
cu aceastea. Daca o regula se potriveste cu un pachet si tinta regulii este<br />
una din aceste doua, nici una din regulile urmatoare nu  sunt consultate,<br />
soarta pachetului a fost decisa.</p>
<p>Mai sunt doua tipuri de tinte pe langa acestea incluse: tinte extinse si<br />
chain-urile definite de catre utilizator.</p>
<p>7.4.1 Chain-uri definite de utilizator</p>
<p>O caracteristica puternica pe care iptables o mosteneste de la ipchains este<br />
posibilitatea utilizatorului de a crea chain-uri noi, pe langa cele incluse<br />
default (INPUT, OUTPUT si FORWARD). Prin conventie, chain-urile definite de<br />
catre utilizator se scriu cu litera mica pentru a le deosebi (vom descrie<br />
mai jos cum sa cream acest tip de chain-uri in &#8220;7.5 Operatii asupra unui<br />
intreg chain&#8221;).</p>
<p>Cand un pachet se potriveste cu o regula a carei tinta este un chain definit<br />
de catre utilizator, pachetul incepe sa traverseze chain-ul definit de catre<br />
utilizator. Daca acel chain-ul nu decide soarta pachetul de indata ce<br />
pachetul ajunge la sfarsitul chain-ului respectiv, pachetul continua<br />
traversarea  chain-ului initial.</p>
<p>Este timpul pentru niste arta ASCII. Considera doua chain-uri aiurea: INPUT<br />
(chain-ul inclus default) si test (un chain definit de utilizator).</p>
<p>&#8220;INPUT&#8221;                         &#8220;test&#8221;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| Rule1: -p ICMP -j DROP   |    | Rule1: -s 192.168.1.1    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|<br />
| Rule2: -p TCP -j test    |    | Rule2: -d 192.168.1.1    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
| Rule3: -p UDP -j DROP    |<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Considera un pachet TCP venind de la 192.168.1.1 si ducandu-se catre 1.2.3.4.<br />
Acesta intra in chain-ul INPUT. Rule1 nu se potriveste cu el, Rule2 se<br />
potriveste asa ca urmatoarea regula care este examinata este prima din<br />
chain-ul test. Rule1 se potriveste dar nu este specificata nici o tinta,<br />
asa ca urmatoarea regula este examinata. Rule2 nu se potriveste asa ca am<br />
ajuns la sfarsitul chain-ului. Astfel ne reintoarcem in chain-ul INPUT, unde<br />
am examinat Rule2, asa ca examinam Rule3 care nici aceasta nu se potriveste.</p>
<p>Deci calea urmata de catre pachet este:</p>
<p>v    __________________________<br />
&#8220;INPUT&#8221;                |   /    &#8220;test&#8221;                v<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8211;/    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;-<br />
| Rule1                 | /|    | Rule1                |   |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|/-|    |&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|&#8212;|<br />
| Rule2                 /  |    | Rule2                |   |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;v&#8212;-<br />
| Rule3 	               /&#8211;+___________________________/<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|&#8212;<br />
v</p>
<p>Chain-urile definite de catre utilizator pot sari la alte chain-uri definite<br />
de catre utilizator (dar nu crea trasee in cerc, pachetele tale vor fi<br />
ignorate daca intra in bucla).</p>
<p>7.4.2 Optiuni extinse la iptables: Noi tinte</p>
<p>Celalat tip de optiune extinsa este o tinta. O tinta extinsa este formata<br />
dintr-un modul de kernel si o extensie optionala la iptables pentru a pune<br />
la dispozitie noi optiuni in linia de comanda. Sunt mai multe optiuni<br />
extinse in distributia default a netfilter-ului:</p>
<p>LOG</p>
<p>Acest modul permite log-area de catre kernel a pachetelor care se<br />
potrivesc. Acest modul pune la dispozitie urmatoarele optiuni<br />
aditionale:</p>
<p>&#8211;log-level<br />
urmat de un numar al nivelului sau de un nume. Numele corecte sunt<br />
(nu conteaza daca sunt scrise cu litera mare sau nu) &#8220;debug&#8221;, &#8220;info&#8221;,<br />
&#8220;notice&#8221;, &#8220;warning&#8221;, &#8220;err&#8221;, &#8220;crit&#8221; and &#8220;emerg&#8221;, corespunzand numerelor<br />
de la 7 la 0. Citeste man-ul de la syslog.conf pentru o explicatie<br />
privind aceste niveluri de logare. Nivelul default este &#8220;warning&#8221;.</p>
<p>&#8211;log-prefix<br />
urmat de un sir de caractere pana la 29 de caractere, acest mesaj<br />
este pus in fata mesajului care este logat, pentru a-i permite<br />
identificarea unica.</p>
<p>Acest modul este bun dupa o limita de potrivire, pentru a nu-ti<br />
flooda fisierele de log.</p>
<p>REJECT</p>
<p>Acest modul are acelasi efect cu &#8220;DROP&#8221;, cu exceptia faptului ca<br />
celui ce trimite pachetele ii este trimis mesaj de eroare ICMP &#8220;port<br />
unreachable&#8221;. Bagati la cap ca mesajul de eroare ICMP nu este trimis<br />
daca (citeste RFC 1122):<br />
- pachetul de il filtrezi a fost de la inceput o eroare ICMP<br />
sau alt tip de pachet ICMP necunoscut.<br />
- pachetul ce este filtrat nu este un fragment de inceput.<br />
- am trimis recent prea multe mesaje de eroare ICMP catre acea<br />
destinatie ( cat /proc/sys/net/ipv4/icmp_ratelimit).<br />
REJECT pune de asemenea la dispozitie o noua optiune<br />
&#8220;&#8211;reject-with&#8221; care modifica pachetul folosit la replay: man<br />
iptables.</p>
<p>7.4.3 Tinte speciale construite default</p>
<p>Sunt doua tinte speciale contruite default: RETURN si QUEUE.</p>
<p>RETURN are acelasi efect cu trecerea direct la sfarsitul chain-ului: pentru<br />
o regula in chain-ul inclus default politica acelui chain-ului este executata.<br />
Pentru o regula intr-un chain definit de catre utilizator, traversarea continua in<br />
chain-ul anterior, exact dupa regula care a determinat trecerea la acest<br />
chain.</p>
<p>QUEUE este o tinta speciala, care pune in rand pachetul pentru procesare de<br />
catre programe utilizator. Pentru ca aceasta sa fie folositor doua urmatoare<br />
componente sunt cerute:</p>
<p>- un &#8220;gestionar al cozii&#8221;, care se ocupa de mecanismele propriu-zise de<br />
trecere a pachetelor intre kernel si modul utilizator; si</p>
<p>- un program in mod utilizator pentru a primi, posibil a manipula, si a<br />
da verdicte in ceea ce priveste pachetele.</p>
<p>Gestionarul standard al cozii pentru iptables IPv4 este modulul ip_queue, care<br />
este distribuit cu kernelul si considerat experimental.</p>
<p>Ceea ce urmeaza este un scurt exemplu despre cum sa folosesti iptables pentru<br />
a pune in coada pachetele pentru procesare in mod utilizator:</p>
<p># modprobe iptable_filter<br />
# modprobe ip_queue<br />
# iptables -A OUTPUT -p icmp -j QUEUE</p>
<p>Cu aceasta regula, pachetele ICMP  generate local (care sunt create<br />
, sa zicem, cu ping) sunt pasate modulului ip_queue, care apoi incearca sa<br />
livreze pachetele unei aplicatii in mod utilizator. Daca nici o<br />
aplicatie nu asteapta acele pachete, acestea sunt ignorate.</p>
<p>Pentru a scrie o aplicatie in mod utilizator, poti folosi libipq API. Acesta<br />
este distribuit impreuna cu iptables. Cod exemplu poate fi gasit in programele<br />
de testare (redirect.c) in CVS.</p>
<p>Starea lui ip_queue poate fi verificata prin:</p>
<p>/proc/net/ip_queue</p>
<p>Marimea maxima a unei cozi (i.e. numarul de pachete livrata modului utilizator<br />
fara primirea inapoi a unei comfirmari) poate fi controlat prin:</p>
<p>/proc/sys/net/ipv4/ip_queue_maxlen</p>
<p>Marimea default pentru marimea maxima a cozii este 1024. Odata ce aceasta<br />
limita este atinsa, noile pachete vor fi ignorate pana cand marimea cozii<br />
scade sub nivelul limita. Protocoale bine gandite ca TCP interpreteaza<br />
pachetele ignorate ca aglomerare, si din fericire va inceta livrarea de<br />
pachete cand coada este plina. Cu toate acestea, va lua ceva experimente<br />
pentru a determina valoare ideala pentru marimea cozii pentru o situatie data<br />
daca valoarea default este prea mica.</p>
<p>7.5 Operatii asupra unui intreg chain</p>
<p>O foarte folositoare caracteristica a iptables-ului este posibilitatea de a<br />
grupa mai multe reguli intr-un chain. Poti numi chain-urile cum doresti, dar<br />
recomand folosirea literelor mici pentru a evita confuzia cu chain-urile<br />
incluse default si tinte. Numele de chain-uri pot fi pana la 31 de litere in<br />
lungime.</p>
<p>7.5.1 Creearea unui nou chain</p>
<p>Sa cream un nou chain. Pentru ca sunt un tip cu atata imaginatie o sa o<br />
numesc test. Pentru aceasta folosim optiunea &#8220;-N&#8221; sau &#8220;&#8211;new-chain&#8221;:</p>
<p># iptables -N test<br />
#</p>
<p>Este atat de simplu. Acum poti introduce reguli in el cum am aratat mai sus.</p>
<p>7.5.2 Stergerea unui chain</p>
<p>Si sergerea unui chain este deasemenea simpla, prin folosirea optiunilor &#8220;-X&#8221;<br />
sau &#8220;&#8211;delete-chain&#8221;. De ce &#8220;-X&#8221;? Pai toate literele bune au fost luate.</p>
<p># iptables -X test<br />
#</p>
<p>Sunt cateva restricitii la stergerea de chain-uri: acestea trebuie sa fie<br />
goale (vezi &#8220;Stergerea tuturor regulilor unui chain&#8221; dedesubt) si nu trebuie<br />
sa fie tinta nici unei reguli. Nu poti sterge nici unul dintre chain-rile<br />
incluse default.</p>
<p>Daca nu specific numele chain-ului, atunci toate chain-urile definite de catre<br />
utilizator vor fi sterse daca este posibil.</p>
<p>7.5.3 Stergerea tuturor regulilor unui chain</p>
<p>Exista un mod simplu de de sterge toate regulile dintr-un chain, folosind<br />
optiunile &#8220;-F&#8221; (sau &#8220;&#8211;flush&#8221;).</p>
<p># iptables -F FORWARD<br />
#</p>
<p>Daca nu este specificat chain-ul atunci toate chain-urile vor fi sterse de<br />
reguli.</p>
<p>7.5.4 Listarea unui chain</p>
<p>Poti lista toate regulile dintr-un chain prin folosirea optiunii &#8220;-L&#8221; (sau<br />
&#8220;&#8211;list&#8221;).</p>
<p>&#8220;refcnt-ul&#8221;(reference count) listat pentru fiecare chain definit de catre<br />
utilizator  este numarul de reguli care au ca tinta acest chain. Acesta<br />
trebuie sa fie zero (si chain-ul sa fie gol) inainte ca acest chain sa poata<br />
fi sters.</p>
<p>Daca numele chain-ului este omis, toate chain-urile sunt listate, chiar si<br />
cele care sunt goale.</p>
<p>Exista trei optiuni care pot fi adaugate la &#8220;-L&#8221;. Optiunea &#8220;-n&#8221; (numeric)<br />
este foarte folositoare deoarece previne iptables in a incerca sa rezolve<br />
IP-urile in nume, care (daca folosesti DNS ca majoritatea oamenilor) va cauza<br />
mari intarzieri daca DNS-ul tau nu este setat corect, sau ai filtrat cererile<br />
catre DNS. Determina deasemenea ca porturile TCP si UDP sa fie afisate ca<br />
numere in loc de nume.</p>
<p>Optiunea &#8220;-v&#8221; arata toate detaliile regulilor, cum ar fi counter-ele pentru de<br />
pachete si bytes, comparatiile TOS, interfata. Altfel aceste detalii sunt<br />
omise.</p>
<p>Observa faptul urmator: counter-ele pentru pachete si bytes sunt afisate<br />
folosind sufixele &#8220;K&#8221;, &#8220;M&#8221; sau &#8220;G&#8221; pentru 1000, 1,000,000 si respectiv<br />
1,000,000,000. Folosirea lui optiunii &#8220;-x&#8221; (expandare a numerelor) afiseaza<br />
numerele in formatul maxim, fara sa conteze cat sunt de mari.</p>
<p>7.5.5 Resetarea counter-elor</p>
<p>Este folositoare posibilitatea de a putea sa resetezi counter-ele. Aceasta<br />
poate fi facuta cu optiune &#8220;-Z&#8221; (sau &#8220;&#8211;zero&#8221;).</p>
<p>Considera urmatoarele:</p>
<p># iptables -L FORWARD<br />
# iptables -Z FORWARD<br />
#</p>
<p>In exemplul de mai sus, unele pachete au putut sa vina intre cele doua<br />
comenzi. Pentru acest motiv, poti folosi cele doua optiuni &#8220;-L&#8221; si &#8220;-Z&#8221;<br />
impreuna, pentru a reseta counter-ele in timp ce le afisezi.</p>
<p>7.5.6 Setarea policy-ului</p>
<p>Am explicat ce se intampla cand un pachet ajunge la capatul unui chain inclus<br />
default si am discutat mai devreme cum parcurge un pachet chain-urile. In<br />
acest caz, policy-ul chain-ului determina soarta pachetului. Doar chain-urile<br />
incluse default (INPUT, OUTPUT si FORWARD) au policy-uri, deoarece daca un<br />
pachet ajunge la capatul unui chain definit de catre utilizator, traversarea<br />
continua in chain-ul anterior.</p>
<p>Politica poate fi fie ACCEPT, fie DROP, de exemplu:</p>
<p># iptables -P FORWARD drop<br />
#</p>
<p>8. Folosirea ipchains si ipfwadm</p>
<p>Sunt module in distributia netfilter pe nume ipchains.o si ipfwadm.o.<br />
Insereaza unul dintre acestea in kernelul tau ( Observatie: aceste module<br />
sunt incompatibile cu ip_tables.o). Apoi poti folosi ipchains sau ipfwadm  ca<br />
in vremurile de alta data.</p>
<p>Aceasta va fi suportata pentru inca un timp. Cred ca o formula rezonabila<br />
este 2 * [nota inlocuirii - prima versiune stabila], dupa data cand o versiune<br />
stabila a inlocuirii este disponibila.<br />
Asta inseamna ca suportul va fi probabil abandonat in Linux 2.6 sau 2.8.</p>
<p>9. Folosirea impreuna a NAT-ului si a filtrarii de pachete</p>
<p>Este normal sa vrei sa faci NAT (vezi NAT HOWTO) si filtrare de pachete.<br />
Veste buna este ca se pot folosi impreuna extrem de bine.</p>
<p>Faci filtrarea de pachete ingorand total orice NAT ai deja. Sursa si<br />
destinatia vazute de catre filtrul de pachete vor fi sursele si destinatiile<br />
reale. De exemplu daca faci DNAT pentru a trimite orice conexiune pentru<br />
1.2.3.4 portul 80 spre 10.1.1.1 portul 8080, filtrul de pachete va vedea<br />
pachetele ducandu-se catre 10.1.1.1 portul 8080 (adresa reala), nu 1.2.3.4<br />
port 80. In mod similar poti ignora masquerading: pachetele vor parea ca vin<br />
de la adresa lor IP interna reala (sa zicem 10.1.1.1), si replay-urile vor<br />
parea ca se duc inapoi acolo.</p>
<p>Poti folosi optiunea extinsa de potrivire &#8220;match&#8221; fara sa pui filtrul de<br />
pachete sa faca munca in plus, deoarece NAT cere detectarea de conexiuni<br />
oricum. Pentru a dezvolta exemplul simplu de masquerading din NAT HOWTO pentru<br />
a nu permite noi conexiuni pe interfata ppp0, vei face urmatoarele:</p>
<p># masquerading pentru ppp0<br />
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</p>
<p># refuzarea de pachete NOI sau INVALIDE forwardate sau care vin prin ppp0<br />
iptables -A INPUT -i ppp0 -m state &#8211;state NEW,INVALID -j DROP<br />
iptables -A FORWARD -i ppp0 -m state &#8211;state NEW,INVALID -j DROP</p>
<p># se da drumu la IP forwarding<br />
echo 1 &gt; /proc/sys/net/ipv4/ip_forward</p>
<p>10. Diferente intre iptables si ipchains</p>
<p>o In primul rand, numele chain-urilor predefinite si-au schimbat scrierea din<br />
litere mici in litere mari, deoarece chain-urile INPUT si OUTPUT primesc acum<br />
doar pachete cu destinatie locala si pachete generate local. Ele obisnuiau<br />
sa vada toate pachetele care intrau si respectiv care ieseau.</p>
<p>o Optiunea &#8220;-i&#8221; acum inseamna interfata de intrare si are sens numai in<br />
chain-urile INPUT si FORWARD. Regulile in chain-urile OUTPUT si FORWARD care<br />
foloseau inainte &#8220;-i&#8221; vor trebuie sa fie schimbate cu &#8220;-o&#8221;.</p>
<p>o Porturile TCP si UDP trebuie sa fie precizate folosind optiunile<br />
&#8211;source-port  sau &#8211;sport (sau &#8211;destination-port/&#8211;dport), si trebuie<br />
puse dupa optiunile &#8220;-p tcp&#8221; sau &#8220;-p udp&#8221;, deorece acestea incarca optiunile<br />
disponibile extensiilor TCP si respectiv UDP.</p>
<p>o Argumentul TCP -y a devenit acum &#8211;syn si trebuie pus dupa &#8220;-p tcp&#8221;.</p>
<p>o In cele din urma tinta DENY a deveni DROP.</p>
<p>o Resetarea counter-elor pentru un singur chain in timp concomitent cu<br />
listarea acestuia este acum posibila.</p>
<p>o Resetara counter-elor pentru chain-urile predefinite resetezeaza desemenea<br />
counter-ele policy-ului chain-urilor respective.</p>
<p>o Listarea counter-elor iti arata counter-ele instant.</p>
<p>o REJECT si LOG sunt acum tinte extinse, insemnand ca sunt module de kernel<br />
separate.</p>
<p>o Numele pentru chain-uri pot fi pana la 31 de caractere in lungime.</p>
<p>o MASQ este acum MASQUERADE si foloseste o sintaza diferita. REDIRECT, desi<br />
si-a pastrat vechiul nume, a suferit deasemenea o schimbare de sintaxa.<br />
Citeste NAT-HOWTO pentru mai multe informatii despre cum sa le configurezi.</p>
<p>o Optiunea &#8220;-o&#8221; nu mai este folosita pentru a conduce pachetele in mod<br />
utilizator (vezi -i de mai sus). Pachetele sunt trimise acum in mod utilizator<br />
folosind tinta QUEUE.</p>
<p>o Probabil o gramada de alte lucruri pe care le-am uitat.</p>
<p>11. Sfaturi asupra designului filtrului de pachete</p>
<p>In domeniul securitatii cel mai bun lucru este sa blochezi totul, apoi sa<br />
deschizi gauri acolo unde este necesar. Aceasta este deobicei spus &#8220;ceea ce nu<br />
este in mod explicit permis este interzis&#8221;. Recomand aceasta  daca securitatea<br />
este grija ta cea mai mare.</p>
<p>Nu rula nici un serviciu de care nu ai nevoie, chiar daca ai blocat accesul la<br />
el.</p>
<p>Recomand securitatea in adancime: combina tcp-wrappers (pentru conexiuni catre<br />
insusi filtrul de pachete), proxy-uri (pentru conexiuni ce trec peste filtrul<br />
de pachete), verificarea routei si filtrare de pachete. Verificarea routei<br />
este cand un pachet care vine de la o interfata de la care nu poate veni este<br />
ignorate: de exemplu, daca reteaua ta interna are adresele 10.1.1.0/24, si<br />
un pachet care are ca sursa o adresa apartinand acelei clase vine pe<br />
interfata externa, acesta va fi ignorat. Aceasta verificare a routei poate<br />
fi activate pentru o interfata (ppp0) astfel:</p>
<p># echo 1 &gt; /proc/sys/net/ipv4/conf/ppp0/rp_filter<br />
#</p>
<p>Sau pentru toate interfetele existente si viitoare astfel:</p>
<p># for f in /proc/sys/net/ipv4/conf/*/rp_filter; do<br />
#     echo 1 &gt; $f<br />
# done<br />
#</p>
<p>Debian realizeaza acest lucru &#8220;by default&#8221; cand este posibil. Daca ai routare<br />
asimetrica  (te astepti sa primesti pachete din directii ciudate), vei<br />
dori sa dezactivezi aceasta filtrare pe interfetele respective.</p>
<p>Logarea pachetelor este folositoare cand configurezi un firewall si ceva nu<br />
merge, insa pe un sistem in productie, intodeauna foloseste aceasta in<br />
combinatie cu limitare, pentru a preveni floodarea fisierelor cu log-uri.</p>
<p>Recomand pentru sistemele sigure depistarea conexiunilor (connection<br />
tracking): determina o incarcare a sistemului, deoarece toate conexiunile sunt<br />
depistate, dar este foarte folositoare pentru a controla accesul la retelele<br />
tale. S-ar putea sa trebuiasca sa incarci modulul &#8220;ip_conntrack.o&#8221; daca<br />
kernelul tau nu incarca in mod automat modulele si nu este compilat in<br />
kernel. Daca vrei sa depistezi cu precizie protocoale complexe, va trebui sa<br />
incarci modulul necesar pentru aceasta (ex. &#8220;ip_conntrack_ftp.o&#8221;).</p>
<p># iptables -N no-conns-from-ppp0<br />
# iptables -A no-conns-from-ppp0 -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br />
# iptables -A no-conns-from-ppp0 -m state &#8211;state NEW -i ! ppp0 -j ACCEPT<br />
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG &#8211;log-prefix &#8220;Bad packet from ppp0:&#8221;<br />
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG &#8211;log-prefix &#8220;Bad packet not from ppp0:&#8221;<br />
# iptables -A no-conns-from-ppp0 -j DROP<br />
# iptables -A INPUT -j no-conns-from-ppp0<br />
# iptables -A FORWARD -j no-conns-from-ppp0</p>
<p>Construirea unui bun firewall este peste scopul acestui HOWTO, dar sfatul meu<br />
este ca &#8220;intodeauna sa fii minimalist&#8221;. Citeste Security HOWTO pentru mai multe<br />
informatii privind testarea si examinarea sistemului.</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=171</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ce este internetul. Conceptele de retea linux</title>
		<link>http://resurse-educationale.uv.ro/?p=169</link>
		<comments>http://resurse-educationale.uv.ro/?p=169#comments</comments>
		<pubDate>Wed, 06 Apr 2011 12:44:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[ppp]]></category>
		<category><![CDATA[retea]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[udp]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://resurse-educationale.uv.ro/?p=169</guid>
		<description><![CDATA[traducere ver. 0.4 de catre Riddl Multumiri tuturor celor care m-au ajutat, in special lui Gushterul. Observatie f importanta: probabil ca exista unele greseli in acest document. Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de &#8230; <a href="http://resurse-educationale.uv.ro/?p=169">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>traducere ver. 0.4 de catre Riddl<br />
Multumiri tuturor celor care m-au ajutat,  in special lui Gushterul.<br />
Observatie f importanta: probabil ca exista unele greseli in acest document.<br />
Am tradus si eu cum m-am priceput mai bine, daca descoperiti greseli de<br />
traducere si pentru observatii pertinente trimiteti-mi mail pentru Riddl la<br />
&#8220;discutzii at gmx dot net&#8221;. Nu uitati sa precizati numele documentului.<br />
Multumesc anticipat.<br />
Aceasta versiune este  putin modificata fata de original, deorece unii termeni<br />
sunau foarte ciudat in ro.<br />
Pentru ultima versiune a acestui document verifica<br />
&lt;http://www.securityorg.net/docs/&gt;.</p>
<p>Lecturare placuta!</p>
<p>______________________________________________________________________</p>
<p>Linux Networking-concepts HOWTO<br />
HOWTO privind conceptele de retea linux<br />
Rusty Russell<br />
$Revision: 1.3 $ $Date: 2002/06/05 13:21:56 $</p>
<p>Acest document descrie ce este acea o retea (cum ar fi internetul), si foarte<br />
primar cum functioneaza acesta.</p>
<p>______________________________________________________________________</p>
<p>Cuprins</p>
<p>1. Introducere<br />
2. Ce este aceea o &#8220;retea de calculatoare&#8221;?<br />
3. Ce este &#8220;Internetul&#8221;?<br />
3.1. Cum functioneaza Internetul?<br />
4. Aceast lucru numit IP<br />
4.1. Grupuri de adrese IP: Netmask-uri<br />
5. Nume de computere si Adrese IP<br />
6. Servici diferite: Email, Web, FTP, DNS<br />
7. Interfete dialup: PPP<br />
8. Cum arata pachetele<br />
9. Sumar<br />
10. Multumiri<br />
11. Index<br />
______________________________________________________________________</p>
<p><span id="more-169"></span>1. Introducere</p>
<p>Bine ai venit!<br />
Am scris in trecut un numar de howto-uri in ceea ce privesc retelele, si mi-a<br />
venit in minte ca sunt in fiecare o multime de termeni jargonici. Am avut de<br />
ales intre trei variante: celelalte doua ignorau problema si explicau<br />
termenii peste tot. Nici una dintre ele nu era atractiva.</p>
<p>Scopul software-ului liber este faptul ca ar trebui sa ai libertatea sa<br />
explorezi si sa te joci cu software-ul sistemului pe care il folosesti. Cred<br />
ca dandu-le posibilitatea oamenilor sa experimenteze aceasta libertate este un<br />
scop nobil; nu numai fac pe oameni sa se simt puternici printr-o ocupatie (cum<br />
ar fi reconstruirea unui motor de masina) dar prin natura internetului si<br />
software-ului liber ti se pune la dispozitie posibilitatea sa partajezi<br />
experienta ta cu milioane de oameni.</p>
<p>Dar trebuie  sa incepi de undeva, asa ca iata-ne.</p>
<p>(C) 2000 Paul &#8220;Rusty&#8221; Russell.  Sub licenta GNU GPL.</p>
<p>2. Ce este aceea o &#8220;retea de calculatoare&#8221;?</p>
<p>O retea de calculatoare sunt mai multe materiale folosite pentru ca nodurile sa<br />
schimbe informatie intre ele (prin &#8220;noduri&#8221; inteleg computere, imprimante,<br />
masini de gatit si orice alceva doresti). Nu conteaza foarte mult cum sunt<br />
interconectate: pot sa foloseasca fibra optica sau porumbei calatori.<br />
E clar, unele alegeri sunt mai bune decat altele, mai ales daca ai prin casa<br />
pisici. <img src='http://resurse-educationale.uv.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In mod normal conectarea a doua calculatoare impreuna nu se poate numi<br />
retea, este nevoie de trei sau mai multe pentru a deveni retea. Acest lucru<br />
seamana cu cuvantul &#8220;grup&#8221;: doi oameni inseamna doar doua persoane, pe cand<br />
trei persoane formeaza un grup. Deasemenea, retelele sunt adesea prinse<br />
impreuna, pentru a forma retele mai mari, fiecare retea mai mica  (deobicei<br />
numita o &#8220;sub-retea&#8221;) poate fi parte dintr-o retea mai mare.</p>
<p>De fapt conexiunea intre doua computere este adesea denumita &#8220;legatura de<br />
retea&#8221;. Daca este ceva cablu in spatele computer-ului tau catre alte<br />
computere atunci aceea este legatura ta de retea.</p>
<p>Sunt patru lucruri despre care suntem interesati cand vorbim despre o retea de<br />
calculatoare:</p>
<p>Marimea</p>
<p>Daca pur si simplu conectezi intre ele cele patru calculatoare de<br />
acasa, ai realizat ceea ce se numeste LAN (Local Area Network &#8211; retea<br />
locala). Daca totul este la distanta de mers pe jos, este denumit<br />
deobicei LAN, oricate masini ar fi conectate, si din orice<br />
infrastructura ar fi contruita reteaua.</p>
<p>La celalalt pol se situeaza WAN-ul (Wide Area Network &#8211; retea<br />
intinsa). Daca ai un computer la Bucuresti, Romania, altul in New<br />
York, SUA, si unul in Lhasa, Tibet, si reusesti sa le conectezi,<br />
aceasta este atunci un WAN.</p>
<p>Topologia: Forma</p>
<p>Deseneaza harta unei retele: linile sunt &#8220;legaturile din retea&#8221;,<br />
si fiecare nod este un punct. Poate ca fiecare linie duce intr-un<br />
punct central ca o stea, insemnand ca fiecare vorbeste printr-un<br />
singur punct ( o &#8220;topologie stea&#8221;):</p>
<p>o   o   o<br />
\_ | _/<br />
\|/<br />
o&#8212;&#8211;o&#8212;&#8211;o<br />
_/|\_<br />
/  |  \<br />
o   o   o</p>
<p>Sau poate ca fiecare comunica in linie, astfel:</p>
<p>o&#8212;&#8212;o&#8212;&#8212;o&#8212;&#8212;-o&#8212;&#8212;&#8211;o<br />
|                              |<br />
|                              |<br />
|                              o<br />
|                              |<br />
o                              |<br />
o</p>
<p>Sau poate ca ai trei subretele conectate printr-un singur nod:</p>
<p>o<br />
o           |  o&#8211;o&#8211;o<br />
|           |  |<br />
o&#8211;o&#8211;o&#8211;o&#8211;o  o<br />
\       |<br />
o&#8212;&#8212;o<br />
/       |<br />
o&#8211;o&#8211;o&#8211;o&#8211;o  o<br />
|           |  |<br />
o           |  o&#8211;o<br />
o</p>
<p>Vei vedea multe topologii ca acestea in realitate si multe altele mult<br />
mai complicate.</p>
<p>Fizic: Din ce este facuta reteaua.</p>
<p>Al treilea lucru de care trebuie sa fim interesati este din ce este<br />
constuita reteaua noastra. Cea mai ieftina este &#8220;sneakernet-u&#8221;, erau<br />
oamenii care transportau diskete de la un computer la altul.<br />
Sneakernet-ul este aproape intodeauna un &#8220;LAN&#8221;. Disketele costa mai<br />
putin de 1$ si o pereche de skeakers (incaltaminte care nu face<br />
zgomot) in jur de 20$.</p>
<p>Cel mai obisnuit sistem folosit pentru a conecta reteaua de acasa<br />
catre alte retele mai mari este numit &#8220;modem&#8221;<br />
(MODulator/DEModulator), care transforma o legatura telefonica intr-o<br />
legatura de retea. Transforma ceea ce transmite calculatorul in<br />
sunete, si asculta sunetele venite de la celalalt capat pe care le<br />
transforma iar in informatie pentru calculator. Dupa cum iti<br />
imaginezi acest lucru nu este din cale afara de eficient, deoarece<br />
liniile telefonice nu au fost facute pentru genul acesta de lucruri, dar<br />
este un sistem raspandit deoarece liniile telefonice sunt atat de<br />
obisnuite si ieftine: modemurile costa sub 50$ si linia telefonica<br />
200$ pe an.</p>
<p>Cel mai obisnuit sistem sa conectezi computerele intr-un LAN este sa<br />
folosesti Ethernet. Ethernetul poate fi de trei tipuri (in ordinea<br />
in care au fost realizate): Thinwire/Coax/10base2, UTP/10baseT si<br />
UTP/100baseT. Gigabit ethernet (1000baseT incepe sa sune ciudat)<br />
este in curs de a fi realizat. 10baseT este deobicei un fir coaxial<br />
negru care are din loc in loc T-uri pentru a putea fi conectate la<br />
computere, toti sunt conectati intr-o linie, linie care are la<br />
capete terminatori speciali. UTP este deobicei un cablu de culoare<br />
albastru deschis, care au doua capete prevazute cu terminatori din<br />
plastic similari celor de la telefon, care sunt conectate in<br />
dispozitivele fizice (placa ethernet, hub, etc.). Cablul costa cativa<br />
dolari metrul, si placile de retea 10baseT/10base2 (multe au<br />
connectori pentru ambele tipuri) sunt greu de gasit noi de firma.<br />
100baseT sunt de 10 ori mai rapide decat 10baseT, sunt compatibile si<br />
cu acestea, si costa cam 30$.</p>
<p>Tehnologia de varf este insa fibra optica; un fir de sticla subtire<br />
in camasa protectoare care poate fi folosita pentru a lega in retea<br />
continente. In general costa mii de dolari.</p>
<p>In mod normal numim fiecare conexiune la un nod &#8220;interfata de retea&#8221;<br />
sau pe scurt &#8220;interfata&#8221;. Linux le numeste astfel &#8220;eth0&#8243; pentru<br />
prima interfata ethernet, si &#8220;fddi0&#8243; pentru prima interfata de<br />
fibra. Comanda &#8220;/sbin/ifconfig&#8221; ni le listeaza.</p>
<p>Protocol: Cum comunica.<br />
Ultimul lucru care te intereseaza este limbajul pe care il folosesc<br />
doua noduri interconectate. Cand doua modemuri comunica unul cu altul<br />
printr-o linie telefonica, trebuie sa se puna de acord ce vor insemna<br />
fiecare sunet, astfel pur si simplu nu vor comunica. Aceasta<br />
conventie este denumita &#8220;protocol&#8221;. Pe masura ce oamenii au descoperit<br />
noi posibilitati de codare astfel incat computerele sa spuna mai<br />
multe in sunete mai scurte, noi protocoale s-au inventat; sunt cel<br />
putin o duzina de protocoale diferite, si fiecare modem va incerca<br />
cateva pana cand va gasi unul care sa fie inteles si de celalalt<br />
modem.</p>
<p>Un alt exemplu este reteaua 100baseT mentionata mai sus. Aceasta<br />
foloseste aceeasi legatura fizica  &#8220;UTP&#8221; ca si 10baseT, dar<br />
comunica de 10 ori mai rapid.</p>
<p>Aceste doua protocoale sunt denumite protocoale de nivel de legatura<br />
(link level); care determina cum este transportata informatia intre<br />
doua puncte pe conexiuni de retea individuale. Cuvantul &#8220;protocol&#8221; se<br />
refera si la alte conventii dupa cum vom vedea mai jos.</p>
<p>3. Ce este &#8220;Internetul&#8221;?</p>
<p>Internetul este o retea de tip WAN, care impanzeste intre globul: este cea<br />
mai mare retea de calculatorea existenta. &#8220;Internetworking&#8221; inseamna<br />
conectarea mai multor retele pentru a crea una mai mare, prin urmare<br />
internetul este connectarea a o mare ingramadire de subretele.</p>
<p>Asa ca acum uitandu-ne la lista de mai sus, ne punem intrebarea: care este<br />
marimea Internetului, din ce este formata fizic si care sunt protocoalele<br />
folosite?</p>
<p>Marimea am spus-o deja. Este globala.</p>
<p>Structura fizica este variata, fiecare subretea este conectata intr-un mod<br />
diferit. Incercarea de a creea o harta folositoare este sortita deci esecului.</p>
<p>Protocoalele folosite de fiecare legatura este deasemnea diferita: toate<br />
protocoalele de mai sus pentru nivel de legatura sunt folosite si multe<br />
altele.</p>
<p>3.1. Cum functioneaza Internetul?</p>
<p>Atunci aceasta intrebare se pune: cum functioneaza? Cum poate fiecare nod sa<br />
vorbeasca  altor noduri daca folosesc protocoale de nivel legatura diferite?</p>
<p>Raspunsul este simplu:  avem nevoie de un alt protocol care sa controleze cum<br />
circula informatia prin retea. Protocolul pentru nivel de lagatura descrie<br />
cum sa circule informatia intre doua noduri care sunt legate direct:<br />
protocolul pentru nivel de retea face posibila transportul informatie intre<br />
un nod si un altul peste oricat de mult legaturi de retea.</p>
<p>Pentru internet, protocolul la nivel de retea este INTERNET PROTOCOL<br />
(versiunea 4) sau &#8220;IP&#8221;. Nu este singurul protocol existent (Apple&#8221;s<br />
AppleTalk, Novell&#8221;s IPX, Digital&#8221;s DECNet and Microsoft&#8221;s NetBEUI fiind<br />
altele), dar este cel mai adoptat. A aparut o noua versiune de protocol &#8220;IP&#8221;<br />
numit IPv6, dar inca nu este atat de utilizat.</p>
<p>Asa ca pentru a transmite un mesaj dintr-un punct al globului in altul,<br />
computerul tau foloseste protocolul IP, trimite informatia la modem, care<br />
foloseste protocol pentru nivel de legatura pentru a trimite informatia<br />
modemului din celalalt capat, modem care se afla probabil intr-un rack de<br />
modemuri, care trimite informatia catre un alt nod, nod care la randul sau<br />
trimite catre altul, si tot asa. Un nod care face lagatura intre doua sau<br />
mai multe retele este denumit &#8220;ruter&#8221;: acesta va avea cate o interfata<br />
pentru fiecare retea.</p>
<p>Numim aceast sir de protocoale o &#8220;stiva de protocoale&#8221;, de obicei desenata<br />
asa:</p>
<p>[ Aplicatia: Primeste poze ]      [ Nivelul aplicatie: transmite poze ]<br />
|                                          ^<br />
v                                          |<br />
[ TCP: are grija de trasport ]          [ TCP: are grija de trasport ]<br />
|                                          ^<br />
v                                          |<br />
[ IP: are grija de routare ]          [ IP: are grija de routare ]<br />
|                                          ^<br />
v                                          |<br />
[ Link: doar pentru conexiune directa ]  [ Link: doar pentru conexiune directa ]<br />
|                                          |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+</p>
<p>Deci, in diagrama, vedem cum netscape (aplicatia din stanga sus) acceseaza<br />
niste poze de pe un server web (aplicatia din dreapta sus). Pentru a face<br />
acest lucru aplicatia noastra foloseste nivelul TCP, protocol pentru controlul<br />
transportului: peste 90% din din traficul internet foloseste TCP, deoarece<br />
este folosit mai ales pentru serviciile web si mail.</p>
<p>Deci, Netscape-ul trimite o cerere  pentru o conexiune TCP catre serverul<br />
remote: aceasta cerere este preluata la nivel de protocol de transport TCP,<br />
care trimite mai departe cererea nivelului protocolului de retea IP, care la<br />
randul lui transmite informatia mai departe catre nivelul protocolului de<br />
legatura.</p>
<p>La celalat capat nivelul protocolului de legatura inainteaza informatia catre<br />
nivelul protocolului IP, care  vede ca informatia este destinata<br />
computer-ului respectiv (daca nu va inainta informatia nivelului de legatura<br />
pentru ca informatia sa ajunga la urmatorul nod), care inainteaza informatia<br />
nivelului protocolului de transport TCP, care o inainteaza server-ului,<br />
respectiv aplicatiei.</p>
<p>Deci avem urmatoarele trei puncte:</p>
<p>1. Aplicatia (Netscape, sau serveru din capatul celalalt) decide cu cine anume<br />
doreste sa vorbeasca si ce anume doreste sa trimita</p>
<p>2. Nivelul de transport trimite pachete speciale pentru a incepe conversatia<br />
cu celalalt capat si apoi impacheteaza informatia intr-un &#8220;pachet&#8221; TCP: un<br />
pachet este doar un termen pentru o bucata de date care trece printr-o<br />
retea. Nivelul de transport TCP paseaza acest pachet catre nivelul de retea<br />
IP: apoi transmite in continuare pana cand celalat capat la nivel de<br />
transport TCP transmite receptionarea pachetului. Acest mecanism este numita<br />
&#8220;retransmitere&#8221;, si are o multime de reguli complexe care controleaza cand sa<br />
transmita, cat sa astepte, etc. Ii da deasemenea fiecarui pachet o multime<br />
de numere, pentru ca la celalalt capat sa fie sortate in ordinea corecta.</p>
<p>3. La nivel de retea IP  se ia in considerare destinatia pachetului si<br />
se decide urmatorul nod catre care sa se transmita pachetul. Aceasta operatie<br />
este numita in mod simplu &#8220;rutare&#8221;(routing), si difera de la foarte simplu<br />
(daca nu ai decat un singur modem si nici o alta interfata de retea,<br />
pachetele ar trebui sa iasa numai prin acea interfata) pana la extrem de<br />
complex (daca ai 15 retele complexe conectata direct prin tine).</p>
<p>4. Aceast lucru numit IP</p>
<p>Asadar rolul nivelului de legatura IP este sa realizeze cum sa &#8220;ruteze&#8221;<br />
pachetele catre destinatia finala. Pentru ca acest lucru sa fie posibil,<br />
fiecare interfata din retea trebuie sa aiba o &#8220;adresa IP&#8221;. Aceast adresa<br />
este formata din patru numere separate prin puncte, cum ar fi<br />
&#8220;167.216.245.249&#8243;. Fiecare numar trebuie sa fie cuprins intre 0 si 255.</p>
<p>Interfetele in aceeasi retea au tendinta sa aiba adrese Ip vecine. De<br />
exemplu &#8220;1.1.1.19&#8243; sta chiar langa sistemul cu adresa IP &#8220;1.1.1.20&#8243;. Deasemenea<br />
nu uita ca un ruter este un nod cu interfete pentru mai mult de o retea,<br />
asa ca ruter-ul va avea cate o adresa Ip pentru fiecare interfata.</p>
<p>Asa ca nivelul de retea IP al kernelului tine un tabel cu &#8220;rute&#8221; diferite,<br />
punand la dispozitie calea pentru a ajunge la grupuri variate de adrese IP.<br />
Cea mai simpla dintre rute este numita &#8220;ruta default&#8221;: daca nici o alta ruta<br />
nu se potriveste aceasta este calea pe care o iau pachetele. Poti vedea o<br />
lista a acestor rute cu ajutorul comenzii &#8220;/sbin/route&#8221;.</p>
<p>Rutele fie indica o legatura, fie un nod particular care este conectat la o<br />
alta retea. De exemplu, cand suni la ISP, ruta default va fi catre legatura<br />
cu modemul, deorece acolo este punctul de acces catre intreaga lume.</p>
<p>Modemul<br />
Modemul lui          ISP-ului ~~~~~~~~~~~~<br />
Rusty                     {            }<br />
o&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;o { Internetul   }<br />
{            }<br />
~~~~~~~~~~~~</p>
<p>Dar daca ai un sistem care este in permanenta conectat la lumea din afara,<br />
este putin mai complicat. In diagrama de mai jos, sistemul meu poate sa<br />
comunica in mod direct cu computerele lui Paul si Tridge, si cu firewall-ul,<br />
dar este necesar ca sistemul meu sa stie ca pachetele care trebuiesc livrate<br />
restului lumii trebuie sa se indrepte catre firewall care le va pasa mai<br />
incolo. Aceasta inseamna ca vei avea doua rute: una care sa zica &#8220;daca<br />
destinatia este in reteaua mea trimite informatia direct acolo&#8221; si apoi o<br />
ruta default care sa spuna &#8220;in caz contrar, trimite-o catre firewall&#8221;.</p>
<p>o  Masina de lucru<br />
|    a lui Tridge      ~~~~~~~~~~~~<br />
Masina de lucru        |                     {            }<br />
a lui Rusty  o&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;o&#8211;{  Internetul  }<br />
|            Firewall {            }<br />
|                      ~~~~~~~~~~~~<br />
o  Masina de lucru<br />
a lui Paul</p>
<p>4.1. Grupuri de adrese IP: Netmask-uri</p>
<p>Mai este un ultim detaliu: exista o notatie standard pentru grupuri de adrese<br />
IP, uneori numita &#8220;adresa de retea&#8221;. La fel cum un numar de telefon poate fi<br />
impartit in prefix si restul, la fel putem divide o adresa IP intr-un prefix<br />
de retea si restul.</p>
<p>Oamenii obisnuiau sa vorbeasca despre &#8220;reteaua 1.2.3&#8243;, insemnand toate cele<br />
256 de adrese de la 1.2.3.0 la 1.2.3.255. si daca asta nu era o retea destul<br />
de mare ar fi putut sa vorbeasca despre &#8220;reteaua 1.2&#8243; care inseamna toate<br />
adresele de la 1.2.0.0 la 1.2.255.255.</p>
<p>In mod normal nu scriem  &#8220;1.2.0.0-1.2.255.255&#8243;. In loc scriem prescurtat<br />
&#8220;1.2.0.0/16&#8243;. Notatia ciudata &#8220;/16&#8243; (numita netmask) cere o mica explicatie.</p>
<p>Fiecare numar despartit prin puncte intr-o adresa IP este defapt un numar<br />
binar format din 8 cifre (00000000 la 11111111): le scriem in format zecimal<br />
pentru a putea fi mai usor de citit. &#8220;/16&#8243; inseamna ca primele 16 cifre<br />
binare reprezinta adresa retelei, cu alte cuvinte partea &#8220;1.2&#8243; este reteaua.<br />
(tine minte fiecare numar reprezinta 8 cifre binare). Aceasta inseamna ca<br />
orice adresa care incepe cu &#8220;1.2&#8243; face parte din aceasta retea: &#8220;1.2.3.4&#8243; si<br />
&#8220;1.2.5.22&#8243; fac parte din aceasta retea, dar &#8220;1.3.4.2&#8243; nu.</p>
<p>Pentru a face viata mai usoara, in mod normal folosim retele care au<br />
netmask &#8220;/8&#8243;, &#8220;/16&#8243; si &#8220;/24&#8243;. De exemplu, &#8220;10.0.0.0/8&#8243; este o retea imensa<br />
care contine orice adresa de la 10.0.0.0 la 10.255.255.255 (peste 16 milioane<br />
de adrese!). &#8220;10.0.0.0/16&#8243; este mai mica, continand adresele doar de la<br />
10.0.0.0 la 10.0.255.255. &#8220;10.0.0.0/24&#8243; este si mai mica detinand adresele<br />
de la 10.0.0.0 la 10.0.0.255.</p>
<p>Pentru a face lucrurile si mai confuze, mai este un mod prin care putem sa<br />
scriem netmask-urile. Putem sa le scriem ca adrese IP:</p>
<p>10.0.0.0/255.0.0.0</p>
<p>In sfarsit, nu valoreaza nimic faptul ca cea mai mare adresa dintr-o retea<br />
este rezervat ca &#8220;adresa de broadcast&#8221;, care poate fi folosita pentru a<br />
transmite un mesaj catre toate host-urile din retea.</p>
<p>Mai jos este un tabel cu netmask-uri:</p>
<p>Forma       Forma           Numarul de      Comentarii<br />
scurta      lunga           masini maxim</p>
<p>/8      /255.0.0.0         16,777,215  numita in trecut retea de clasa A<br />
/16     /255.255.0.0       65,535      numita in trecut retea de clasa B<br />
/17     /255.255.128.0     32,767<br />
/18     /255.255.192.0     16,383<br />
/19     /255.255.224.0     8,191<br />
/20     /255.255.240.0     4,095<br />
/21     /255.255.248.0     2,047<br />
/22     /255.255.252.0     1,023<br />
/23     /255.255.254.0     511<br />
/24     /255.255.255.0     255         numita in trecut retea de clasa C<br />
/25     /255.255.255.128   127<br />
/26     /255.255.255.192   63<br />
/27     /255.255.255.224   31<br />
/28     /255.255.255.240   15<br />
/29     /255.255.255.248   7<br />
/30     /255.255.255.252   3</p>
<p>5. Nume de computere si Adrese IP</p>
<p>In concluzie orice interfata de pe fiecare nod are o adresa IP. Foarte repede<br />
s-a constatat ca oamenii retin destul de greu numerele, asa ca s-a hotarat<br />
(la fel ca la numerele de telefon) sa avem un director cu nume. Dar cum<br />
folosim computere oricum, este mai simplu sa punem computerele sa gaseasca<br />
numele in mod automat.</p>
<p>Prin urmare avem DNS, sistemul de nume al domeniilor. Sunt noduri cu adrese IP<br />
bine cunoscute pe care programele le pot interoga trimitand nume pentru a<br />
primi adrese IP. Aproape toate programele pe care le folosesti pot realiza<br />
aceasta interogare, de asta poti pune &#8220;www.linuxcare.com&#8221; in Netscape in loc<br />
de &#8220;167.216.245.249&#8243;.</p>
<p>Bineinteles, ai nevoie de adresele de retea a cel putin unuia dintre aceste<br />
&#8220;servere de nume&#8221;: in mod normal aceste adrese se gasesc in fisierul<br />
&#8220;/etc/resolv.conf&#8221;.</p>
<p>Cum interogarile si raspunsurile DNS sunt relativ mici (1 pachet de fiecare),<br />
protocolul TCP nu este folosit: acesta pune la dispozitia retransmisie<br />
automata, ordonare a pachetelor si o siguranta a conexiunii, dar cu costul<br />
trimiterii de pachete in plus in retea. De aceea folosim foarte simplul<br />
protocol UDP (protocol pentru datagrame utilizator), care nu ofera extra<br />
facilitatile pe care le ofera TCP si de care nu avem nevoie.</p>
<p>6. Servici diferite: Email, Web, FTP, DNS</p>
<p>Intr-un exemplu anterior, am arata cum Netscape trimite o cerere TCP catre un<br />
server de web care ruleaza pe un alt nod. Dar sa ne imaginam ca acel nod care<br />
este si server de web ruleaza si server de email, un server de ftp si un<br />
server DNS, cum stie nodul pentru ce server este conexiunea TCP?</p>
<p>Aici TCP si UDP au conceptul de &#8220;port&#8221;. Fiecare pachet precizat in el &#8220;portul<br />
destinatie&#8221; care spune pentru ce serviciu este destinat pachetul. De exemplu,<br />
portul 25 TCP este pentru server-ul de mail, si portul 80 TCP este server-ul<br />
de web (deasemenea cateodata poti sa intalnesti servere web pe porturi<br />
diferite). O lista a porturile poate fi gasita in &#8220;/etc/services&#8221;.</p>
<p>Deasemenea, daca doua ferestre Netscape, amandoua acceseaza parti diferite din<br />
acelasi site web, cum face sistemul linux pe care ruleaza Netscape sa sorteze<br />
pachetele care se intorc de la server?</p>
<p>Aici intervine &#8220;portul sursa&#8221;: fiecarei conexiune noua TCP ii se atribuie un<br />
nou port sursa, asa ca sunt separate, chiar daca se duc spre aceeasi<br />
adresa destinatie IP si acelasi port destinatie. In mod normal primul port<br />
sursa alocat va fi 1024 si creste odata cu trecerea timpului.</p>
<p>7. Interfete dialup: PPP</p>
<p>Cand suni cu modemul tau la un ISP, si se conecteaza la modemul lor, kernelul<br />
nu incepe pur si simplu sa trimita pachete IP prin conexiune. Exista un<br />
protocol numit PPP (point-to-point protocol),  care este folosit pentru a<br />
negocia cu celalalt capat inainte de a se permite trimiterea oricaror pachete.<br />
Acesta este folosit de catre ISP pentru identificarea celui care a sunat: pe<br />
sistemul tau linux, un program numit  &#8220;daemon PPP&#8221; se ocupa cu partea ta de<br />
negociere.</p>
<p>Pentru ca in lume sunt atatia utilizatori de dial-up, de obicei acestia nu<br />
au propria lor adresa IP: cele mai multe ISP-uri iti vor aloca una din<br />
adresele lor cand te vei conecta (daemonul PPP va negocia acest lucru). Aceasta<br />
este adesea numita &#8220;adresa IP dinamica&#8221;, diferita fata de &#8220;adresa IP statica&#8221;<br />
care este cazul normal cand ai propria ta conexiune permanenta. In mod normal<br />
aceasta adresa este determinata de modem, data urmatoare cand te conectezi,<br />
probabil ca vei nimeri alt modem, si astfel vei avea alta adresa IP.</p>
<p>8. Cum arata pachetele</p>
<p>Pentru cei foarte curiosi iata o descriere a structurii unui pachet. Sunt mai<br />
multe aplicatii care captureaza pachetele care intra sau care ies dintr-un<br />
sistem linux: cel mai comun este &#8220;tcpdump&#8221; (care intelege mai multe<br />
protocoale decat TCP), dar unul mai fain este &#8220;ethereal&#8221;. Aceste aplicatii<br />
sunt numite &#8220;snifere de pachete&#8221;.</p>
<p>Inceputul fiecarui pachet contine informatii cum ar fi destinatia, sursa,<br />
tipul pachetului, si alte detalii administrative. Aceasta parte a unui pachet<br />
este numita &#8220;header&#8221;. Restul pachetului, ce contine datele propriu-zise, este<br />
in mod uzual numit &#8220;corpul pachetului&#8221;.</p>
<p>Asa ca orice pachet IP incepe cu un &#8220;header IP&#8221;: in marime de cel putin 20<br />
bytes. Arata cam asa (aceasta diagrama fu furata cu nerusinare din RFC 791<br />
(nu de catre traducator:))):</p>
<p>.&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-.<br />
|Version|  IHL  |Type of Service|          Total Length         |<br />
|&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|         Identification        |Flags|      Fragment Offset    |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|  Time to Live |    Protocol   |         Header Checksum       |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|                       Source Address                          |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|<br />
|                    Destination Address                        |<br />
&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;</p>
<p>Campurile importante sunt Protocol, care indica daca pachetul este de tip TCP<br />
(numarul 6), un pachet UDP (numar 17) sau alceva, adresa IP sursa, si adresa<br />
IP destinatie.</p>
<p>Acum, daca acel camp referitor protocolului spune ca pachetul este TCP, atunci<br />
imediat un header TCP va urma imediat header-ului IP: header-ul TCP este<br />
deasemenea de cel putin 20 bytes marime:</p>
<p>.&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-.<br />
|          Source Port          |       Destination Port        |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|                        Sequence Number                        |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;|<br />
|                    Acknowledgment Number                      |<br />
|&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+-+-+-+-+-+-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|  Data |           |U|A|P|R|S|F|                               |<br />
| Offset| Reserved  |R|C|S|S|Y|I|            Window             |<br />
|       |           |G|K|H|T|N|N|                               |<br />
|&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+-+-+-+-+-+-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-|<br />
|           Checksum            |         Urgent Pointer        |<br />
&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8221;</p>
<p>Cele mai importante campuri sunt aici campurile reprezentand portul sursa si<br />
portul destinatie care determina catre ce serviciu este destinat pachetul<br />
(sau, in cazul pachetelor replica, de la care serviciu provine). Numerele<br />
&#8220;sequence&#8221; si &#8220;acknowledgment&#8221; sunt folosite pentru a tine o ordine in<br />
pachete si pentru a spune celuilalt capat ce pachete au fost primite.<br />
Flag-urile ACK, SYN, RST si FIN (scrise pe verticala) sunt biti unici<br />
folositi pentru negocierea deschiderii (SYN) sau inchiderii (RST sau FIN)<br />
conexiunilor.</p>
<p>Dupa acest header urmeaza mesajul real pe care il trimite aplicatia (corpul<br />
pachetului). Un pachet normal are pana la 1500 bytes: aceasta inseamna ca cel<br />
mai mare spatiu pe care il poate ocupa datele este de 1460 bytes (20 bytes<br />
header-ul IP, 20 bytes header-ul TCP): peste 97%.</p>
<p>9. Sumar</p>
<p>In concluzie internetul modern foloseste pachete IP pentru a comunica, si<br />
cele mai multe dintre aceste pachete folosesc TCP pentru controlul conexiunii.<br />
Noduri speciale denumite &#8220;rutere&#8221; conecteaza micile retele in retele mai<br />
mari, si paseaza pachetele catre destinatia lor finala. Marea majoritatea a<br />
computerelor sunt parte doar dintr-o retea (au doar o singura interfata),<br />
spre deosebire de rutere.</p>
<p>Fiecare interfata are o adresa IP unica, care seamana cu &#8220;1.2.3.4&#8243;:<br />
interfetele in aceeasi retea vor avea adrese IP inrudite, cu acelasi<br />
inceput, la fel cum telefoanele dintr-o anumita zona au acelasi prefix.<br />
Adresele de retea sunt asemanatoare adreselor IP,  urmate insa de semnul &#8220;/&#8221;<br />
si un numar pentru a se specifica portiunea din acea adresa care reprezinta<br />
prefixul, de exemplu &#8220;1.12.0.0/24&#8243; inseamna ca primele 3 grupuri de cifre<br />
reprezinta adresa de retea, fiecare cifra reprezinta 8 biti.</p>
<p>Masinile au asignate nume de catre  serviciul de nume pe domenii: programele<br />
interogheaza serverele de nume adrese IP, furnizand acestora nume de genul:<br />
&#8220;www.lug.ro&#8221;. Aceasta adresa IP este apoi folosita ca adresa IP<br />
destinatie pentru a vorbi cu acel nod.</p>
<p>Rusty este destul de nepriceput pentru a scrie documente, in special pentru<br />
incepatori.</p>
<p>Enjoy!</p>
<p>Rusty.</p>
<p>10. Multumiri</p>
<p>Multumiri lui Alison, pentru ca mi-a spus in cel mai frumos mod posibil ce<br />
tampenii am scris in versiunile de inceput.</p>
<p>11. Index</p>
<p>o  &#8220;100baseT&#8221;</p>
<p>o  &#8220;10base2&#8243;</p>
<p>o  &#8220;10baseT&#8221;</p>
<p>o  &#8220;Broadcast address&#8221; &#8211; adresa de broadcast</p>
<p>o  &#8220;Coax, Coaxial cable&#8221;</p>
<p>o  &#8220;Computer network&#8221; &#8211; retea de computere</p>
<p>o  &#8220;Default route&#8221; &#8211; ruta default</p>
<p>o  &#8220;Destination port&#8221; &#8211; port destinatie</p>
<p>o  &#8220;DNS, Domain Name Service&#8221; &#8211; serviciu de nume pe domenii DNS</p>
<p>o  &#8220;Dynamic IP address&#8221;- adresa IP dinamica</p>
<p>o  &#8220;Ethernet&#8221;</p>
<p>o  &#8220;Fiber&#8221; &#8211; fibra</p>
<p>o  &#8220;Gigabit Ethernet&#8221;</p>
<p>o  &#8220;Hop&#8221;</p>
<p>o  &#8220;Hub&#8221;</p>
<p>o  &#8220;Internet&#8221;</p>
<p>o  &#8220;IP, Internet Protocol&#8221;</p>
<p>o  &#8220;IP address&#8221; &#8211; adresa ip</p>
<p>o  &#8220;IP header&#8221; &#8211; header IP</p>
<p>o  &#8220;IPv4, IP version 4&#8243;</p>
<p>o  &#8220;IPv6, IP version 6&#8243;</p>
<p>o  &#8220;LAN, Local Area Network&#8221; &#8211; retea locala</p>
<p>o  &#8220;Link-level protocol&#8221; &#8211; protocol de nivel de legatura</p>
<p>o  &#8220;Modem&#8221;</p>
<p>o  &#8220;Name server&#8221; &#8211; server de nume</p>
<p>o  &#8220;Netmask&#8221; &#8211; netmask</p>
<p>o  &#8220;Network address, network mask&#8221; &#8211; adresa de retea, mask de retea</p>
<p>o  &#8220;Network interface, interface&#8221; &#8211; interfata de retea, interfata</p>
<p>o  &#8220;Network link&#8221; &#8211; legatura de retea</p>
<p>o  &#8220;Network protocol, protocol&#8221; &#8211; protocol de retea, protocol</p>
<p>o  &#8220;Node&#8221; &#8211; nod</p>
<p>o  &#8220;Packet body&#8221; &#8211; corp al pachetului</p>
<p>o  &#8220;Packet header&#8221; &#8211; header al pachetului</p>
<p>o  &#8220;Packet sniffer&#8221; &#8211; snifer de pachete</p>
<p>o  &#8220;Packet&#8221; &#8211; pachet</p>
<p>o  &#8220;Port, TCP port, UDP port&#8221; &#8211; port, port TCP, port UDP</p>
<p>o  &#8220;PPP, Point-to-Point Protocol&#8221;</p>
<p>o  &#8220;PPP daemon&#8221; &#8211; daemon PPP</p>
<p>o  &#8220;Protocol stack&#8221; &#8211; stiva de protocoale</p>
<p>o  &#8220;Retransmission&#8221; &#8211; retransmitere</p>
<p>o  &#8220;Route&#8221; &#8211; ruta</p>
<p>o  &#8220;Router&#8221; &#8211; ruter</p>
<p>o  &#8220;Routing&#8221; &#8211; rutare</p>
<p>o  &#8220;Sneakernet&#8221;</p>
<p>o  &#8220;Source port&#8221; &#8211; port sursa</p>
<p>o  &#8220;Star-topology&#8221; &#8211; topologie in stea</p>
<p>o  &#8220;Static IP address&#8221; &#8211; adresa IP statica</p>
<p>o  &#8220;Sub-network&#8221; &#8211; sub-retea</p>
<p>o  &#8220;TCP, Transmission Control Protocol&#8221; TCP, protocol cu controlul<br />
transportului</p>
<p>o  &#8220;TCP header&#8221; &#8211; header TCP</p>
<p>o  &#8220;Terminator&#8221; &#8211; terminator</p>
<p>o  &#8220;Topology&#8221; &#8211; topologie</p>
<p>o  &#8220;UDP, User Datagram Protocol&#8221; &#8211; UDP, protocol pentru datagrame<br />
utilizator</p>
<p>o  &#8220;UTP, Unshielded Twisted Pair&#8221;</p>
<p>o  &#8220;WAN, Wide Area Network&#8221; &#8211; retea intinsa</p>
]]></content:encoded>
			<wfw:commentRss>http://resurse-educationale.uv.ro/?feed=rss2&#038;p=169</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
