marți, 4 octombrie 2016

NAT Static sau Port Forwarding

In urma cu ceva timp am primit din partea unui client solicitarea de a implementa port forwarding pe un CPE. Aceasta solicitare mi-a adus aminte de vremea cand am invatat prima data in CCNA despre NAT-ul static si despre faptul ca discutia din programa era destul de sumara. Beneficiul adus de o astfel de configurare il reprezinta accesul la un host (de ex. un server), care se afla in spatele unui router care face NAT. Serverul aflandu-se in partea de LAN si avand in majoritatea cazurilor configurata static o adresa privata, pentru a putea sa fie accesat din internet, este nevoie sa realizam o mapare unu la unu intre adresa privata a serverului si o adresa publica, pe care hosturile din internet sa o foloseasca drept adresa destinatie.

Desi se subintelege ca este vorba despre port forwarding, nicaieri in materia din CCNA nu este specificat acest lucru. Am citit si capitolul IPv4 Services: ACL’s and NAT cuprins CCENT/CCNA ICND1 100-105 Official Certification Guide, partea despre NAT-ul static si discutia a ramas la fel de scurta, punandu-se mai mult accentul pe ce reprezinta adresele Inside/Outside Local si Global.

Intr-un mediu de productie vom dori sa fim ceva mai specifici cand vine vorba despre configurarea NAT-ului static pe echipamente, decat modalitatea prezentata in CCNA. In viata reala ne vom confrunta cu solicitari punctuale de forwardare a unor porturi. De exemplu un client care are un server web, din ratiuni de securitate va dori sa forwardeze doar portul 80 si/sau 443.


In laboratorul de azi propun urmatorul scenariu:
Avem trei routere Kyle, Cartman si Stan (no Kenny unfortunately, apparently the bastards got him again!).
Kyle se va putea conecta prin telnet la Cartman pe portul 23, iar Cartman va avea configurat NAT static astfel incat Kyle sa se poata conecta si la Stan prin telnet pe portul 7077. Practic, taskul pe care il avem de indeplinit este sa facem port forwarding la portul 7077 pe Cartman.

Cu ocazia acestui laborator vom vedea si cum putem schimba portul pe care ne conectam prin telnet la un router, in cazul nostru fiind vorba de Stan.
Daca nu dorim sa schimbam portul 23 de pe Stan puteam sa mapam pe Cartman socketul 193.169.12.2:7077 pe  socketul 192.168.23.3:23. I’ll show you how. It’s easy!


Acestea fiind spuse, sa ne distram. :)
Laboratorul configurat se poate descarca de aici.
Avem urmatoarea topologie:


Din ratiuni de comoditate, total nerecomandat in practica, am configurat liniile vty folosind comenzile “no login” si “privilege level 15”. Aceste comenzi nu se configureaza in practica deoarece ele permit accesul pe echipament fara a fi necesara autentificarea si il plaseaza pe cel conectat direct in modul privileged exec, conferindu-i si drepturi depline in acelasi timp.


Pentru a forwarda portul 7077 este nevoie sa configuram NAT static pe Cartman folosind in global config comanda:
ip nat inside source static tcp 192.168.23.3 7077 193.169.12.2 7077 extendable


Argumentul cheie al comenzii este “tcp”, care ne permite sa specificam punctual portul pe care dorim sa-l forwardam. Fara acest argument, avem doar posibilitatea de a specifica adresa IP pe care dorim sa o translatam, permitand la nivelul transport toate porturile.
Pentru a verifica functionarea solutiei, il vom configura pe Stan sa asculte dupa telnet pe portul 7077.
Incepem prin configurarea pe Stan a unui ACL named extended:
Stan(config)#ip access-list extended TELNET
Stan(config-ext-nacl)#permit tcp any any eq 7077


Apoi plasam ACL-ul pe liniile VTY:
Stan(config)#line vty 0 100
Stan(config-line)#access-class TELNET in
Stan(config-line)#rotary 77


Dupa ce terminam de realizat configurarea pe Stan, ne mutam pe Kyle unde vom face telnet specificand adresa IP a interfetei fa 0/0 de pe Cartman.
Kyle#telnet 193.169.12.2
Trying 193.169.12.2 ... Open
Cartman#


sau
Kyle#Cartman
Translating "Cartman"
Trying Cartman (193.169.12.2)... Open
Cartman#


Daca am folosit comanda “ip host” in global config pe Kyle pentru a mapa sirul de caractere “Cartman” pe adresa IP 193.169.12.2.

Observam ca daca nu specifcam un port la finalul comenzii, hostul va dori implicit sa comunice cu destinatia pe portul 23.
Pentru a schimba acest lucru, iar discutia sa fie initiata cu portul destinatie pe care stim ca asculta dupa telnet Stan, este nevoie sa specificam acest lucru cand dam comanda pe Kyle.
Kyle#Cartman 7077
Translating "Cartman"
Trying Cartman (193.169.12.2, 7077)... Open
Stan#


Vedem ca desi intentionam sa ajungem la Stan, hostul catre care facem telnet este Cartman, deoarece Stan are configurata static o adresa privata, inaccesibila din internet. De aici apare nevoia de configurare a NAT-ului static pe Cartman, deoarece acesta avand configurata o adresa publica pe interfata fa 0/0, teoretic este accesibila din internet.
Specificand tot socketul cand am configurat NAT static pe Cartman, acesta stie ca in momentul in care vede ca un host doreste sa discute pe portul 7077, el trebuie sa forwardeze discutia catre hostul Stan din LAN.


Pentru a vedea intreaga translatare, putem folosi comanda “show ip nat translations” pe Cartman.

Cartman#sh ip nat translations
Pro Inside global       Inside local        Outside local       Outside global
tcp 193.169.12.2:7077 192.168.23.3:7077 193.169.12.1:42798 193.169.12.1:42798


Daca nu dorim modificarea portului pe care asculta Stan dupa telnet, vom configura port forwarding pe Cartman astfel incat sa translatam socketul 193.169.12.2:7077 pe 192.168.23.3:23 folosind comanda:


ip nat inside source static tcp 192.168.23.3 23 193.169.12.2 7077 extendable


Daca facem acest lucru, vom configura telnet pe Stan fara a specifica un alt port dupa care sa asculte, and that’s it !
Totusi, cand facem telnet pe Stan de pe Kyle, e in continuare nevoie sa specificam portul 7077, doar ca acesta este modificat de catre Cartman in portul 23 cand forwardeaza discutia in LAN catre Stan.


O translatare in urma acestei configuratii arata in felul urmator:
Cartman#sh ip nat translations
Pro Inside global      Inside local       Outside local       Outside global
tcp 193.169.12.2:7077 192.168.23.3:23     193.169.12.1:43890 193.169.12.1:43890


Cam acesta a fost scurtul laborator despre configurarea NAT-ului static, sau port forwarding.
Sper ca l-ati gasit util si interesant. Pana data viitoare, va urez toate cele bune si sa avem spor ! :)





Niciun comentariu :

Trimiteți un comentariu