Sunteți pe pagina 1din 10

2014 - Crystal Mind Academy - www.crystalmind.

ro
CCNA4 Connecting Networks

Network Address Translation


I. Generalitati
NAT reprezinta seviciul prin care adresele IP sunt translatate (modificate). Definit initial in RFC1631,
NAT a aparut ca solutie la problema epuizarii spatiului de adrese IPv4.
Pentru ca o organizatie sa nu mai foloseasca pentru reteaua interna IP-uri identificate unic in internet
(publice), prin RFC1918 au fost rezervate din intreg campul de adrese IPv4 trei grupe de adrese IP asa-numitele adresele IP private. Fata de adresele IP publice, care trebuie sa identifice unic o
interfata in internet, adresele IP private pot fi folosite de orice organizatie in reteaua proprie
(interna), atata timp cat compania respectiva nu origineaza trafic in internet cu IP sursa IP privat.

Adresele IP private definite in RFC 1918 sunt:


10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

10.0.0.0 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 192.168.255.255

Problema care apare este ca anumite hosturi interne deci cu IP privat trebuie sa acceseze reteua
internet. NAT rezolva aceasta problema modificand adresele IP sursa sau destinatie din headerul IP.

II. Terminologie NAT / Mod de functionare


Hosturile din reteaua interna (RFC1918) a unei companii pot accesa reteaua INTERNET datorita
faptului ca un router de granita (separa reteaua INTRANET de INTERNET) va modifica adresele IP
sursa interne (private) primite din LAN in adrese IP publice, astfel incat pachetele trimise in
INTERNET sa fie valide atat pe calea upstream cat si downstream (client server, server client).

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

Pentru fiecare pachet translatat, routerul va memora in NAT table sesiunea initiala (IP_sursa_privat
-> IP_sursa_public_nou -> IP_Public_destinatie). Atunci cand traficul se intoarce, pachetele ajung la
acelasi router de granita care inspecteaza headerul IP si pe baza IP-ului destinatie va gasi in tabelul
NAT IP-ul privat initial, astfel incat sa poata translata traficul (modifica IP_destinatie_public cu
IP_intern) si sa trimita pachetul in interior la hostul care a originat initial cererea.
Adrese LOCALE adrese IP ale hosturilor din inside, vazute din inside;
Adresele GLOBALE adrese IP din outside; (de cele mai multe ori publice, insa nu este obligatoriu)
INSIDE LOCAL - Adresele IP interne care sunt translatate de un router NAT;
INSIDE GLOBAL Adrese IP externe in care sunt translatate adresele interne (inside local);
OUTSIDE GLOBAL Adrese IP externe destinatie, vazute din exterior/outside;
OUTSIDE LOCAL Adrese IP externe destinatie vazute de hosturile din interior;
(pot fi sau nu diferite de cele outside global);

http://packetlife.net/blog/2010/jan/7/understanding-nat-address-types/

Atentie!
NAT-ul dinspre INSIDE spre OUTSIDE se face dupa rutare!
NAT-ul dinspre OUTSIDE spre INSIDE se face inainte de rutare!

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

III. Tipuri de NAT


In functie de configuratie, NAT-ul poate fi:

INSIDE NAT configurat prin comanda (config)#ip nat inside specifica adresele sursa
interne (INSIDE_LOCAL) care vor fi translatate in adrese sursa externe (INSIDE_GLOBAL)

OUTSIDE NAT configurat prin comanda (config)#ip nat outside specifica adresele
destinatie interne (OUTSIDE_LOCAL) care vor fi translatate in adrese destinatie externe
(OUTSIDE_GLOBAL)

Exemplu:

Pt. inside NAT static se configureaza R1 cu urmatoarea comanda:


(config)#ip nat inside source static 10.0.0.10 100.0.0.10
Pachetele generate de VBOX1 spre OUTSIDE (VBOX3) vor avea IP sursa 100.0.0.10. In continuare,
doar pentru inside NAT, se va folosi ca destinatie adresa IP reala a echipamentului din outside.
(INSIDE_LOCAL # INSIDE_GLOBAL
OUTSIDE_LOCAL = OUTSIDE_GLOBAL)
Pt. outside NAT static se configureaza R1 cu urmatoarea comanda:
(config)#ip nat outside source static 200.0.0.100 11.0.0.100 add-route
Pachetele generate de VBOX1 spre OUTSIDE vor avea IP sursa 10.0.0.10 insa IP destinatie va fi
11.0.0.100 care va fi translatat pe OUTSIDE in 200.0.0.100.
(INSIDE_LOCAL = INSIDE_GLOBAL
OUTSIDE_LOCAL#OUTSIDE_GLOBAL)
Cand se folosesc atat inside cat si outside NAT, routerul va schimba atat IP-ul sursa cat si IP-ul
destinatie.
!Argumentul add-route se foloseste pentru ca routerul NAT sa creeze automat in RT o ruta catre
reteaua OUTSIDE_LOCAL; pt. NAT inside spre outside pachetele sunt prima oara rutate si dupa
NATate! Daca in RT nu exista ruta pentru IP destinatie, pachetele sunt dropate!

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

R1#sh ip route | b Gate


Gateway of last resort is not set
100.0.0.0/24 is subnetted, 1 subnets
100.0.0.0 is directly connected, Serial0
200.0.0.0/24 is directly connected, Serial0
10.0.0.0/24 is subnetted, 1 subnets
C
10.0.0.0 is directly connected, FastEthernet0
11.0.0.0/32 is subnetted, 1 subnets
S
11.0.0.100 [1/0] via 200.0.0.100
C
S

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

Inside NAT poate fi sursa sau destinatie!


- ip nat inside source translateaza adrese IP INSIDE_LOCAL in INSIDE_GLOBAL si invers;
- ip nat inside destination translateaza o adresa externa IP INSIDE_GLOBAL in mai multe adrese
interne IP INSIDE_LOCAL pentru tcp load-balancing;

Exemplu de inside destination NAT:


//specificare IP-uri reale (interne) ale serverelor
ip nat pool real-hosts 192.168.15.2 192.168.15.15 prefix-length 28 type rotary
//specificare IP extern care sa fie translatat intern round-robin catre servere;
(config)#access-list 2 permit 192.168.15.1
//configurare inside destination nat
(config)#ip nat inside destination list 2 pool real-hosts
//configurare interfete
ip nat inside
ip nat outside
III.1 Static NAT
Pentru static NAT se foloseste o corespondenta 1 la 1 intre adresele IP private (INSIDE LOCAL) si cele
publice (INSIDE GLOBAL). Corespondenta IP_INSIDE catre IP_OUTSIDE se defineste static.
Atunci cand IP-ul intern X trimite date catre internet, routerul NAT va modifica IP-ul sursa X in IP Y.
Atunci cand se primeste trafic din internet pentru IP destinatie Y, routerul va modifica IP-ul Y (extern)
in IP-ul intern X.
Static NAT presupune accesul unui host la reteaua internet, cat si accesul oricarui host din reteaua
internet la cel intern, intrucat orice pachet adresat IP-ului public definit in static NAT va fi translatat
in IP-ul intern.
Prin static NAT se pot publica resurse in internet (servere) configurate pe echipamente interne care
nu au asignat fizic un IP public. Trebuie sa existe o adresa globala pentru fiecare host in parte.
//configurare static NAT
//definire corespondenta IP internet / IP public
(config)#ip nat inside source static IP_INTERN { INTERFATA | IP_EXTERN }
//definire tip de interfata
(config-if)#ip nat inside
(config-if)#ip nat outside
//verificare
#show ip nat translations
Translatiile apar tot timpul, chiar daca nu sunt folosite.

Atentie! Atunci cand se foloseste acelasi IP de pe interfata outside, tot traficul catre router va fi

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

trimis hostului din inside! (management / protocoale de rutare, etc)


III.2 Dynamic NAT
Fata de static NAT, unde se definesc corespondente 1 la 1, in dynamic NAT se definesc plaje de
adrese IP interne care sa fie translatate in mod dinamic intr-un anumit range de adrese IP externe.
Atentie! Pentru ca dynamic NAT sa functioneze corespunzator, este nevoie ca IP-urile interne sa
aiba corespondent acelasi nr. de IP-uri externe pentru translatare. IP-urile globale nu trebuie sa fie
setate pe interfata de outside a routerului.
Routerul va accepta din outside spre inside doar pachete related intr-o prima faza (hostul inside
trebuie sa genereze trafic), iar atata timp cat ramane corespondenta IP_intern->IP_extern este
permis traficul unrelated din outside in inside. (implicit, dynamic translations fara port raman 24h)

//configurare dynamic NAT


//configurare pool pentru adrese IP publice in care sa fie translatate IP-urile private;
(config)#ip nat pool NUME START_IP END_IP {netmask MASCA | prefix-length NR}
//configurare acl standard pentru specificare adrese IP interne care sa fie translatate;
(config)#access-list 1-99 permit IP_SURSA [WILDCARD_SURSA]
//configurare NAT dinamic; specificare ACL pt. IP-uri interne si pool pt. IP-uri externe;
(config)#ip nat inside source list { NR_ACL| NUME_ACL} NUME_NAT_POOL {overload}
//definire tip de interfata
(config-if)#ip nat inside
(config-if)#ip nat outside

III.3 PAT / NAT Overload


PAT sau NAT Overload este varianta prin care o companie poate folosi o singura adresa IP sau mai
multe pentru o sumedenie de clienti interni. Pe langa translatarea adreselor IP, PAT translateaza si
porturile TCP/UDP.
//PAT pt. o singura adresa IP publica
//configurare acl standard pentru specificare adrese IP interne care sa fie translatate;
(config)#access-list 1-99 permit IP_SURSA [WILDCARD_SURSA]
//configurare PAT pentru o singura adresa IP
(config)#ip nat inside source list { NR_ACL | NUME_ACL } interface INTERFATA overload
//definire tip de interfata
(config-if)#ip nat inside
(config-if)#ip nat outside
//PAT pentru un pool de adrese IP publice
//configurare pool pentru adrese IP publice in care sa fie translatate IP-urile private;
(config)#ip nat pool NUME START_IP END_IP {netmask MASCA | prefix-length NR}
2014 Crystal Mind Academy
Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

//configurare acl standard pentru specificare adrese IP interne care sa fie translatate;
(config)#access-list 1-99 permit IP_SURSA [WILDCARD_SURSA]
//configurare NAT dinamic; specificare ACL pt. IP-uri interne si pool pt. IP-uri externe;
(config)#ip nat inside source list NR_ACL NUME_NAT_POOL overload
//definire tip de interfata
(config-if)#ip nat inside
(config-if)#ip nat outside

F. important, in cazul PAT cu pool de adrese IP publice, routerul va trece la un al doilea IP


folosit pentru PAT doar atunci cand epuizeaza porturile pentru primul.

PAT uses unique source port numbers on the Inside Global IP address to distinguish between
translations. Because the port number is encoded in 16 bits, the total number could theoretically be
as high as 65,536 per IP address.
PAT will attempt to preserve the original source port, if this source port is already allocated PAT will
attempt to find the first available port number starting from the beginning of the appropriate port
group 0-511, 512-1023 or 1024-65535. If there is still no port available from the appropriate group
and more than one IP address is configured, PAT will move to the next IP address and try to allocate
the original source port again. This continues until it runs out of available ports and IP addresses.
III.3 Port Forwarding (Port Static NAT)
(config)#ip nat inside
OUTSIDE_PORT extensible

source

static

tcp

INSIDE_LOCAL

INSIDE_PORT

INSIDE_GLOBAL

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

ex:
(config)#ip nat inside source static tcp 10.0.0.1 80 200.0.0.1 80 extensible

III.4 Network NAT

(config)#ip nat inside source static network RETEA_INTERNA RETEA_EXTERNA MASCA


ex:
(config)#ip nat inside source static network 10.0.0.0 150.150.150.0 /24
Obs. Vor fi create automat corespondente 1 la 1 intre IP-urile interne/externe iar traficul din exterior
spre interior va fi permis implicit ca si in cazul NAT-ului static.

IV. Verificare / Tshoot / Diverse


//verificare NAT
#sh ip nat translation [verbose]
#sh ip nat statistics
#debug ip nat
//stergere translatari
#clear ip nat translation *
//stergere translatari dynamice in functie de adresa ip locala sau externa
#clear ip nat translation inside <global_ip local_ip>
#clear ip nat translation inside <local_ip global_ip>

//Configuring translation timeouts


(config)#ip nat translation timeout <seconds>
Dynamic translations time out after a period of non-use. When port translation is not configured,
translation entries time out after 24 hours.
This time can be adjusted with the above command or the following variations:
ip nat translation udp-timeout <seconds>
ip nat translation dns-timeout <seconds>
ip nat translation tcp-timeout <seconds>
ip nat translation finrst-timeout <seconds>
When port translation is configured, there is finer control over translation entry timeouts, because
each entry contains more context about the traffic using it.
Non-DNS UDP translations time out after 5 minutes;
DNS times out in 1 minute.
2014 Crystal Mind Academy
Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

TCP translations time out after 24 hours, unless a RST or FIN is seen on the stream, In which case it
times out in 1 minute.
Ex. config dynamic NAT (fara overload!)

R1#sh run | i ip nat


ip nat outside
ip nat inside
ip nat pool test 100.0.0.5 100.0.0.10 prefix-length 24
ip nat inside source list 1 pool test
access-list 1 permit 10.0.0.0 0.0.0.255

R1#debug ip nat
*Mar 1 03:07:28.463: NAT*: s=10.0.0.10->100.0.0.5, d=200.0.0.100 [15733]
*Mar 1 03:07:28.539: NAT*: s=200.0.0.100, d=100.0.0.5->10.0.0.10 [14976]
R1#sh ip nat translations
Pro Inside global
Inside local
Outside local
Outside global
tcp 100.0.0.5:11139 10.0.0.10:11139 200.0.0.100:90
200.0.0.100:90
--- 100.0.0.5
10.0.0.10
R1#sh ip nat statistics
Total active translations: 1 (0 static, 1 dynamic; 0 extended)
Outside interfaces:
Ethernet0
Inside interfaces:
FastEthernet0
Hits: 40 Misses: 7
CEF Translated packets: 47, CEF Punted packets: 0
Expired translations: 3
Dynamic mappings:
-- Inside Source
[Id: 8] access-list 1 pool test refcount 1
pool test: netmask 255.255.255.0
start 100.0.0.5 end 100.0.0.10
type generic, total addresses 6, allocated 1 (16%), misses 0
Appl doors: 0
Normal doors: 0
Queued Packets: 0
-----

(pana expira!)

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

2014 - Crystal Mind Academy - www.crystalmind.ro


CCNA4 Connecting Networks

V. NAT order of operation

Resurse:

http://docwiki.cisco.com/wiki/Category:NAT
http://www.cisco.com/image/gif/paws/6450/nat.swf
http://packetlife.net/blog/2010/jan/7/understanding-nat-address-types/
http://www.cisco.com/en/US/docs/ios/security/command/reference/sec_book.html
http://www.cisco.com/en/US/tech/tk648/tk361/technologies_tech_note09186a0080133ddd.sh
tml
http://www.cisco.com/en/US/docs/ios/ipaddr/command/reference/iad_nat.html
http://www.cisco.com/en/US/technologies/tk648/tk361/tk438/technologies_white_paper0918
6a0080091cb9.html

2014 Crystal Mind Academy


Informatiile continute in acest document reprezinta proprietate intelectuala a Academiei Crystal Mind.
Distribuirea sau reproducerea de orice fel este interzisa

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