Sunteți pe pagina 1din 9

NAT: Translatarea Adreselor de Retea

1. Introducere

NAT: Translatarea Adreselor de Retea, precum si acest HOWTO va fi un ghid


relativ sigur pentru kernel 2.4.0 si mai mult.
In linux 2.4, s-a introdus o infrastructura pt. manuirea pachetelor, numita
'netfilter'. Un nivel (sau strat) deasupra acestei structuri da posibilitatea
de NAT, complet reimplementat din kernelele anterioare.

(c) 2000 Paul 'Rusty' Russel. Licenta sub GNU GPL.

2.1 Ce este translatarea adreselor de retea (NAT) ?

In mod normal, pachetele dintr-o retea calatoresc de la sursa (cum ar fi


computerul de acasa) pana la destinatie (cum ar fi www.kernelnotes.org) prin
mai multe legaturi. Nici una din aceste legaturi nu altereaza pachetele, ele
doar le trimit mai departe.

Daca una dintre aceste legaturi ar face NAT, atunci ea va altera sursa sau
destinatia pachetului cand trece prin ea. Dupa cum va puteti
imagina, nu asa a fost sistemul proiectat sa functioneze, si NAT este un fel
de crocodil. De obicei, legatura care a facut NAT va tine
minte cum a alterat pachetul, ca atunci cand un pachet se reintoarce pe
cealalta cale, va face alterarea inversa a pachetului, astfel
incat totul sa functioneze.

2.2 De ce as vrea eu sa fac NAT ?

Intr-o lume perfecta nu ar fi nevoie, dar intre timp, motivele


principale ar fi:

Conexiune la internet printr-un modem


Multi ISP aloca doar o singura adresa IP cand faci dial-up la ei. Poti
trimite pachete cu orice sursa vrei, dar se vor intoarce doar
cele care au ca sursa IP'ul tau. Daca vrei sa folosesti mai multe masini (cum
ar fi reteaua de acasa) pentru a te conecta la internet,
atunci vei avea nevoie de NAT.

Servere multiple
Cateodata vrei sa schimbi destinatia pachetelor care intra in reteaua ta.
Frecvent asta se intampla daca ai doar un singur IP (ca in
exemplul de mai sus), dar vrei ca persoanele din afara sa poata accesa
computerele din spatele celui cu IP real. Daca poti sa rescrii
destinatia pachetelor, atunci vei reusi sa faci asta.
O variatie pe tema asta este balansarea incarcaturii, atunci cand maparea are
loc pentru mai multe masini. Acest tip de NAT se numea
'port-forwarding' n versiunile mai vechi de linux.

Proxy transparent
Cateodata vrei sa pretinzi ca fiecare pachet ce trece prin masina ta pe care
rulezi linux este destinat pentru un program de pe ea
insesi. Acest lucru se poate folosi pentru a crea proxy-uri transparente: un
proxy e un program care sta intre reteua ta si restul lumii,
aand grija de traficul dintre cele doua. Partea transparenta se rezuma la
faptul ca reteua nici nu va sti ca se conecteaza la proxy, acest
lucru intamplandu-se numai in momentul in care proxy-ul nu functioneaza.
Squid poate fi configurat sa lucreaza in acest fel, si se numeste
redirectare sau proxy transparent in versiunile mai vechi de linux.

3. Tipurile de NAT
3.1 Eu impart NAT in doua categorii diferite. Source NAT (SNAT) si Destination
NAT (DNAT) (SNAT = Translatarea sursei, DNAT = Translatarea destinatiei)
Translatarea sursei (SNAT) se intampla atunci cand vrei sa modifici adresa
unui pachet. Ex: Schimbi sur0a de unde vine conexiuea. SNAT se face
intotdeauna dupa routare (POSTROUTING), inainte ca pachetul sa plece pe fir.
Masquerading'ul este o forma speciala de NAT.

Translatarea destinatiei (DNAT) se intampla atunci cand vrei sa schimbi


destinatia pachetului. Ex: schimbarea destinatiei unei conexiuni. DNAT se face
intotdeauna inaintea routarii (PREROUTING) atunci cand pachetul vine de pe
fir. Port forwarding, balansarea incarcaturii si proxy transparent sunt toate
forme de DNAT.

4. Tranzitie rapida de la kernel 2.0 si 2.2

Imi pare rau pentru cei inca socati de tranzitia de la kernel 2.0 (ipfwadm)
si kernel 2.2 (ipchains). Sunt vesti bune si vesti rele.
Pentru inceput, poti folosi ipchains sau ipfwadm ca inainte. Pentru a face
asta, trebuie doar rulata comanda insmod ipchains.o sau insmod ipfwadm.o,
module care se gasesc in ultima distributie netfilter.
Acestea sunt excluse mutual (ai fost avertizat), si nu trebuie sa fie
combinate cu nici un modul de netfilter.

Dupa ce aceste module s-au instalat, poti folosi ipchains sau ipfw la fel ca
inainte, cu urmatoarele diferente:
* Setare time-out'ului la masquerading cu ipchains -M -S, sau ipfwadm
-M -s nu va face nimic, deoarce time-out'urile vor fi mai lungi sub noua
structura NAT, dar oricum nu conteaza.
* Campurile init_seq, delta si previous_delta vor fi intotdeauna zero
cand in listingul masquerading'ului in mod 'verbose'
* Listarea si trecerea pe zero a contoarelor n acelasi timp nu va mai
fi posibila cu '-Z -L': contoarele nu vor fi resetatea la zero

Hackerii pot observa urmatoarele chestii:


* Acum se pot accesa porturile de la 61000-65095 chiar daca se face
masquerading. Codul de msquerading presupunea ca este totul 'fair play', si
programatoarii nu ar fi folosit porturile.
* "hack'ul" nedocumentat 'getsockname' pe care proxy-urile transparent
il puteau folosi pentru a afla destinatia reala a conexiunilor nu mai
functioneaza.
* "hack'ul" nedocumentat bind-to-foreign-address este deasemenea
neimplementat, acesta a fost compilat pentru pentru a completa iluzia de proxy
transparent.

4.1 Eu vreau doar masquerading! Ajutor!


Asta este ceea ce vor majoritatea oamenilor. Daca ai o adresa IP alocata
dinamic, vrei doar sa-i spui linuxului tau ca toate pachetele care vin din
reteaua interna sa para ca au originea chair pe calculatorul tau cu linux.
# Incarcarea modului NAT (acesta incarca si modulele aditionale)
modprobe iptables_nat
# In tabela de NAT (-t nat), adauga o regula (-A) dupa routare
(POSTROUTING) pentru toate pachetel care ies prin ppp0 (-o ppp0) care spune sa
masqueradeze conexiunea (-j MASQUERADE)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Porneste IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

Nota: Aici nu faci nici un fel de filtrare a pachetelor, pentru asta citeste
HOWTO pentru filtrarea pachetelor: "Mixing NAT and Packet Filtering"

4.2 Dar ipmasqadm ?


Poti folosi iptables -t nat pentru a face port forwarding. De exemplu:
in linux 2.2 aifi facut astfel:

#Linux 2.2
#Forwardarea pachetelor TCP care se duc pe portul 8080 catre 1.2.3.4
la 192.168.1.1 port 80
ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80

# Linux 2.4
# Adauga o regula inainte de routare (-A PREROUTING) tabelei NAT (-t
nat) ca pachetele
# TCP (-p tcp) care se duc spre 1.2.3.4 (-d 1.2.3.4) port 8080 (--
dport 8080)
# sa aiba destinatia mapata (-j DNAT) spre 192.168.1.1, port 80
# (--to 192.168.1.1:80).
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80

Daca vrei ca aceasta regula sa alterezesi conexiunile locale (ex:


chiar si pe masina care face NAT, incercand telnet la 1.2.3.4 port 8080 sa te
duca la 192.168.1.1 port 80), adauagi aceeasi regula lantului OUTPUT (care
este penteu pachetele locale):

# Linux 2.4
iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \
-j DNAT --to 192.168.1.1:80

5. Controlarea a ceea pentru ce vrei sa faci NAT


Trebuie sa creezi reguli NAT care sa-i spuna kernelului ce conexiuni trebuie
sa schimbe si cum sa le schimbe. Pentru a face acest lucru, folosim
intrumentul foarte versatil, si anume, iptables, spunandu-i sa altereze tabela
NAT, prin specificare optiunii '-t nat'.

Tabela cu regulile NAT contine trei liste numite 'lanturi'. Fiecare regula
este examinata in ordine pana una se potriveste. Cele trei lanturi sunt
numite: PREROUTING (pentru DNAT, cum intra pachetele prima data), POSTROUTING
(pentru SNAT, cum ies pachetele) si OUTPUT (pentru DNAT sau pachete generate
local).

_____ _____
/ \ / \
PREROUTING -->[Decizie ]----------------->POSTROUTING----->
\ D-NAT/ [Routare] \S-NAT/
| ^
| __|__
| / \
| | OUTPUT|
| \D-NAT/
| ^
| | |
--------> Procesare locala ---

La fiecare dintre punctele de deasupra, cand trece un pachet ne uitam la ce


conexiune este asociat. Daca este o conexiune noua, ne uitam la lantul
corespunzator din tabela NAT ca sa vedem ce sa facem cu el. Raspunsul pe care
il va da se va aplica tuturor pachetelor pentru acea conexiune.

5.1 Selectie simpla folosind iptables

iptables ia un numar de optiuni standard listate mai jos. Toate optiunile cu


-- pot fi abreviate, atata timp cat iptables le poate deosbi de celelate
optiuni posibile. Daca kernelul are configurat suportul de iptables ca modul,
trebuie incarcat intai modulul ip_tables.o inainte, "insmod ip_tables".

Cea mai importanat optiune aici este cea de selectare a tabelei, -t. Pentru
toate operatiile NAT vei vrea sa folosesti -t nat, pentru tabela NAT. A doua,
cea mai importanat optiune pe care o folosesti este -A pentru a adauga o noua
regula la capatul lantului (ex: -A POSTROUTING) sau -I pentru a adauga una la
inceputul lantului (ex: -I PREROUTING).

Poti specifica sura ('-s' sau '--source') si destinatia ('-d' sau '--
destination') pentru pachetele pentru care vrei sa faci NAT. Aceste optiuni
pot fi urmate de o singura adresa ip (ex: 192.168.1.1), un nume (ex:
www.kernelnotes.org) sau o adresa de retea (ex: 192.168.1.0/24 sau
192.168.1.0/255.255.255.0).

Poti specifica interfata pe care vin ('-i' sau '--in-interface') sau cea pe
care pleaca ('-o' sau '--out-interface') pentru care se ca potrivi, dar
interfata specificata depinde de lantul la care este pusa regula: pentru
PREROUTING se poate specifica numai interfata pe care vin pachetele, iar
pentru POSTROUTING si OUTPUT cea pe care pleaca pachetele. Daca folosesti
interfata gresita, iptables va da o eroare.

5.2 Puntce fine in a selecta ce pachete sa alterezi


Am spus mai sus ca poti specifica o adresa pentru sursa si destinatie. Daca
omiti optiunea pentru pentru adresa sursei, atunci orice sursa va fi folosita.
Analog se va intampla si pentru adresa destinatiei.

Poti, de altfel, sa indici si un protocol anume ('-p' sau '--protocol'), cum


ar fi TCP sau UDP; numai pachetele de acest tip se vor potrivi regulii.
Motivul princpal pentru care se face acest lucru, este ca atunci cand se
specifica protocoul se pot folosi optiuni in plus, speficice fiind '--source-
port' si '--destination-port' (abreviate ca '--sport' si '--dport').

Aceste optiunii te lasa sa specifici ca numai anumite pachete cu o anumita


sursa si destinatie se vor potrivii regulii. Acesta este folositor pentru a
redirecta cererile web (TCP, port 80 sau 8080) si a lasa celelalte pachete in
pace.

Aceste optiuni trebuie sa fie dupa '-p' (care are ca efect secundar incarcarea
librarie pentru acel protocol). Poti folosi numerele porturilor sau un nme din
fisierul /etc/services.
Toate calitatile diferite pe care le poti selecta pt. un pachet sunt detaliate
in paginile de manual (man iptables).

6. Cum se altereaza pachetele

Deci, acum stim cum sa selectam pachetele pe care vrem sa le alteram. Pentru a
completa regula trebuie sa-i spunem kernelului exact ce vrem sa facem cu
pachetele.

6.1 NAT pt. sursa (SNAT)

Vrei sa faci SNAT; schimba adresa sursei conexiunilor la ceva diferit. Acest
lucru se face in lantul POSTROUTING, chiar inainte sa fie trimis; acesta este
un detaliu important, avnad in vedere ca orice altceva pe masina care ruleaza
linux (rouatare, filtrarea pachetelor) va vedea pachetul neschimbat. Inseamna
ca si optiunea '-o' poate fi folosita.

SNAT se specifica folosind optiunea '-j SNAT', iar '--to-source' specifica o


adresa IP, o plaja de adrese IP, iar optional un port sau o plaja de porturi
(valabil numai pentru TCP si UDP).

## Schimba adresa sursei la 1.2.3.4.


# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

## Schimba adresa sursei la 1.2.3.4, 1.2.3.5 or 1.2.3.6


# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6

## Schimba adresa sursei la 1.2.3.4, porturi 1-1023


# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-
1023

Masquerading

Exista u caz specializat de SNAT numit masquerading, si ar trebui folosit


numai pentru adresele IP asignate dinamic, cum ar fi dial-up (pentru adrese
statice, foloseste SNAT ca mai sus).

Nu trebuie sa pui explicit in sursa adresa sursa cand faci masquerading, va


folosi adresa sursa a interfetei pe care pachetul iese afara. Dar, cel mai
important este ca,daca legatura pica, conexiunile (care sunt pierdute oricum)
sunt uitate, insemnand mai putine probleme daca , conexiunea isi revine, dar
cu un alt ip.

## Facem masquerading la tot ce iese pe ppp0.


# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

6.2 NAT pt. destinatie (DNAT)

Acest lucru este facut in lantul PREROUTING, imediat cum vine pachetul, asta
inseamna ca orice altceva de pe masina care ruleaza linux (routare, filtrare
pachete) va vedea ca pachetul se duce la destinatia 'reala'. De asemenea
inseamna ca se poate folosi si optiunea '-i'.
DNAT se specifica folosind optiunea '-j DNAT', iar optiunea '--to-destination'
specifica o adresa IP, o plaja de adrese IP, un port sau o plaja de porturi
(numai pentru TCP si UDP).

##Schimba adresa de destinatie la 5.6.7.8


# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to 5.6.7.8

## Schimba adresa de destinatie la 5.6.7.8, 5.6.7.9 sau 5.6.7.10.


# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to 5.6.7.8-5.6.7.10

## Schimba adresa de destinatie a traficului web la 5.6.7.8, port 8080.


# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 \
-j DNAT --to 5.6.7.8:8080

## Redirecteaza pachetele locale la 1.2.3.4 spre loopback.


# iptables -t nat -A OUTPUT -d 1.2.3.4 -j DNAT --to 127.0.0.1

Redirectare

Exista un caz special de DNAT numit redirectare: este o simpla conventie care
este exact echivalenta cu a face DNAT pe adresa interfetei de intrare.

##Trimite traficul web de pe portul 80 la Squid care se afla pe portul


3128
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 \
-j REDIRECT --to-port 3128

6.3 Mapari in adancime

Exista niste subtilitati la NAT pe care cei mai multi nu le vor intalni
niciodata. Ele sunt documentate aici pentru cei curiosi.

Selectarea adreselor multiple intr-o plaja de de adrese

Daca o plaja de adrese IP este data, adresa IP care va fi folosita va fi


aleasa be baza celei mai putin folosite adrese IP folosita pt. a realiza
conexiuni pe care o stie masina. Acest lucru creeaza o balansare a
incarcaturii primitiva.

Creaarea maparilor NAT nule

Poti folosi tinta '-j ACCEPT' pentru a lasa o conexiune sa treaca fara a face
nici un fel de NAT.

Comportament NAT standard

Comportamentul implicit este sa altereze conexiunile cat mai putin, in


constrangerile date de regula introdusa de utilizator. Asta inseamna ca nu va
remapa porturile decat in cazul in care nu are de ales.

Maparea implicita a porturilor sursa

Chiar si atunci cand pentru o conexiune nu este necesar NAT, translatarea


portului sursa poate avea loc implicit, daca o conexiune a fost mapata peste o
noua conexiune. Sa consideram cazul pentru masquerading, fiind un lucru
obisnuit.
1. O conexiune web se stabileste de pe o masina 192.1.1.1 pe portul
1024 la www.netscape.com pe portul 80.
2. Aceasta adresa este masqueradata de masina cu ip-ul 1.2.3.4 pentru
a folosi adresa IP ai ei ca sursa.
3. Masina care face masquerading va incerca sa stabileasca o conexiune
web la www.netscape.com port 80 de la 1.2.3.4 (adresa interfetei externe)
portul 1024.
4. Codul NAT va altera portul sursa la a doua conexiune la 1025,
astfel incat cele 2 conexiuni sa nu se loveasca.

Cand are loc maparea implicita a sursei, porturile sunt impartite in 3


categorii:
* Porturi sub 512
* Porturi intre 513 si 1023
* Porturi de la 1024 in sus
Un port nu va fi mapat implicit nicioadata intr-o clasa diferita.

Ce se intampla cand NAT esueaza ?

Daca nu exista nici o cale de a mapa in mod unic o conexiune ceruta de


utilizator, aceasta va fi ignorata. Acelasi tratament va fi aplicat si
pachetelor care nu pot fi clasificate ca facand parte dintr-o conexiune, din
cauza ca sunt malformate, sau masina nu mai are memorie etc.

Mapari multiple, suprapunei si ciocniri

Poti sa ai reguli NAT care mapeaza pachetele pe aceeasi plaja; codul NAT este
destul de inteligent ca sa evite ciocnirile. Poti sa ai doua reguli care
mapeaza sursa adresi 192.168.1.1 si 192.168.1.2 la 1.2.3.4 ... ceea ce este in
ordine.

Mai mult, poti sa mapezi peste adrese reale, folosite, atata timp cat si ele
trec prin masina care face maparea. Deci, daca ai o retea asignata
(1.2.3.0/24), dar ai o retea interna care foloseste acele adrese si una care
foloseste adrese private 192.168.1.0/24 poti sa faci NAT foarte simplu mapand
adresele sursa din 192.168.1.0/24 peste reteaua 1.2.3.0/24 fara riscul de a se
ciocni:

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \


-j SNAT --to 1.2.3.0/24

Aceeasi logica se aplica si adreselor folosite chiar de masina care face NAT,
asa functioneaza masqueradingul (imparte aceeasi adresa a interfetei inte
pachetele masqueradata si pachetele 'reale' care vin de la insesi masina
respectiva).

Chiar mai mult, poti mapa aceleasi pachete pe mai multe tinte, iar ele vor fi
impartite. De exemplu, daca nu vrei sa mapezi nimic peste 1.2.3.5 ai putea sa
faci asa:

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 \


-j SNAT --to 1.2.3.0-1.2.3.4 --to 1.2.3.6-1.2.3.254

Alterarea conexiunilor generate local


Daca destinatia pachetelor generate local este schimbata (de ex: de lantul
OUTPUT), si asta cauzeaza ca pachetul sa iasa printr-o alta interfata, atunci
si sursa pachetului este deasemenea schimbata la cea a interfetei respective.
De ex: schimbarea destinatiei unui pachet de pe loopback, sa se duca spre eth0
va rezulta in alterarea sursei de la 127.0.0.1 la cea a interfetei eth0, acest
lucru se intampla imediat, nu ca in cazul altor mapari ale sursei. In mod
natural ambele mapari ale sursei sunt inversate la pachetele de reply care
vin.

7. Protocoale speciale

Unele protocoale nu le place sa treaca prin NAT. Pentru fiecare dintre aceste
protocoale doua extensii trebuie scrise; unul pentru urmarirea conexiunilor,
iar unul chiar pentru NAT.

In interiorul distributiei netfilter, exista module pentru ftp:


ip_conntrack_ftp.o si ip_nat_ftp.o. Daca introduci aceste 2 module in kernel,
atunci pentru utilizarea oricarui tip de NAT asupra protocului de ftp va
functiona corect. Daca nu folosesti aceste module, nu vei putea sa faci decat
ftp pasiv, sau chiar s-ar putea sa nu functioneze corect daca faci mai mult
decat un simplu NAT.

8. Deficiente ale NAT

Daca faci NAT pentru o conexiune, toate pachetele care trec in ambele sensuri
(in si din interiorul retelei) trebuie sa treaca prin masina care face NAT,
altfel nu va functiona corespunzator. In particular, codul de urmarire a
conexiunilor reasambleaza pachetele, ceea ce inseamna ca nu numai urmarirea
conexiunilor nu va fi de incredere, dar pachetele s-ar putea sa nu treaca
deloc, deoarece fragmentele vor fi oprite.

9. SNAT si routarea

Daca faci SNAT, vei vrea sa te asiguri ca fiecare masina la care se duc
pachetele care trec prin SNAT trimit reply'uri inapoi la masina care face
SNAT. De exemplu, daca mapezi niste pachete la adresa sursa 1.2.3.4, atunci
routerul din afara trebuie sa stie sa trimita reply'uri (care vor avea
destinatia 1.2.3.4) inapoi la aceasta masina. ACest lucru se poate face in
felul urmator:

1. Daca faci SNAT pentru adresa proprie a masinii (pentru care


routarea si toate celelalte functioneaza), nu trebuie sa faci nimic.
2. Daca faci NAT pe o adresa nefolosita din LAN (de ex. mapezi pe
1.2.3.99, un IP liber pe 1.2.3.0/24), masina care face NAT va trebui sa stie
sa raspunda la cereri ARP pentru acea adresa precum si pentru a ei insesi. Cel
mai usor ar fi crearea unui alias al interfetei:

# ip address add 1.2.3.99 dev eth0

3. Daca faci SNAT pe o adresa complet diferita, trebuie sa te asiguri


ca masinile pe care pachetele SNAT le vor lovi vor routa pachetele inapoi la
masina care face NAT. Acest lucru este deja facut in masina care face NAT, in
gateway'ul implicit, altfel va trebui sa faci 'advertize' pentru o ruta (daca
folosesti un protocol de routare) sau sa adaugi manual route la fiecare masina
implicata.

10. DNAT pe aceeasi retea


Daca faci 'port forwarding' inapoi pe aceeasi retea, trebuie sa te asiguri ca
pachetele viitoare ce vor fi transmise cat si cele de reply trec prin masina
care face NAT (astfel incat ele sa fie alterate). Codul NAT (incepand cu
2.4.0-test6) va bloca redirectarea ICMP care este produsa cand pleaca
pachetele trecute prin NAT pe aceeasi interfata pe care au sosit, dar serverul
care va primi pachetele tot va incerca sa raspunda direct la client (care nu
va recunoaste raspunsul).

Cazul clasic este atunci cand personalul intern vrea sa acceseze serverul web
public, care de fapt este de fapt un DNAT de la adresa publica 1.2.3.4 la o
masina interna (192.168.1.1), adica asa:

# iptables -t nat -A PREROUTING -d 1.2.3.4 \


-p tcp --dport 80 -j DNAT --to 192.168.1.1

O solutie ar fi sa rulezi un server DNS intern care stie adresa reala


(interna) a serverului de web public, si sa forwardeze toate celelalte cereri
unui server DNS extern. Asta inseamna ca jurnalele de pe serverul web vor
arata adresle IP interne corect.

Alta solutie ar fi ca masina care face NAT sa mapeze sursa adresei IP cu a ei


insesi pentru aceste conexiuni, pacalind serverul sa raspunda prin ea. In
acest exemplu, vom face urmatorul lucru (stiind ca adresa interna a masinii
care face NAT este 192.168.1.250):

# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \


-p tcp --dport 80 -j SNAT --to 192.168.1.250

Deoarece regula in lantul PREROUTING va fi executata prima, pachetele vor fi


deja destinate pentru serverul web intern: putem sa ne dam seama care sunt
modificate intern la IP sursa.

11. Multumiri

Multumesc in primul rand la WatchGuard si David Bonn care aucrezut in


netfilter si m-au ajutat atata timp cat am lucrat la el.
Multumesc si celor care m-au sustinut in timp ce am invatat despre uratenia
NAT'ului, mai ales celor ce mi-au citit jurnalul.

Rusty.

S-ar putea să vă placă și