Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:labs:09:contents:01 [2013/11/17 12:54]
mihai.carabas [01. Configurarea translatării de adrese (MAQUERADE)]
rl:labs:09:contents:01 [2023/11/05 13:05] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 01. Configurarea translatării de adrese (MAQUERADE) ​====+==== 01. [15p] Observare porturi deschise pe o stație ​====
  
-Datorită epuizării adreselor IPv4 în cadrul rețelelor se folosesc adrese IP din clase private (ex192.168.0.0/​24). Pe lângă comunicația dintre stațiile unei rețelese dorește ​și accesul la Internet al acestora. De aceea s-a introdus conceptul ​de translatare de adrese (NAT) prin care mai multe stații pot să acceseze Internetul folosind aceeași adresă IP rutabilă. Prin NAT se înlocuiește adresa IP sursă (a stației) cu adresa IP a ruterului care face NAT și un port sursă liber.+Utilitarul ''​netcat''​ este folosit pentru a crea conexiuni server-clientAcesta poate îndeplini atât rolul de servercât și de client.
  
-Pentru a activa NAT pe un server ​Linux vom executa următoarea ​comanda:<code bash> +Pentru a crea un server ​care ascultă conexiuni pe portul TCP ''​2024''​ rulăm ​comanda<​code bash> 
-root@host:​~# ​iptables ​-t nat -A POSTROUTING -j MASQUERADE +root@host:​~# ​netcat ​-l 2024
-root@host:​~#​+
 </​code>​ </​code>​
-În comanda de mai sus ''​-t''​ specifică tabela pe care se aplică regula. În cazul nostru este tabela ''​nat''​. ''​POSTROUTING''​ se referă la momentul când va fi făcut NAT-ul: după rutare. În nomenclatura ''​iptables''​ acesta mai poartă denumirea și de **lanț (chain)**. ''​-j''​ este acțiunea ce va fi luată, iar în acest caz este ''​MASQUERADE''​ (sinonim cu ''​NAT''​). 
  
-Pentru a vedea că regula există, puteți afișa tabela NAT cu următoarea comandă:<code bash> +Parametrul ''​-l''​ înseamnă că ''​netcat''​ este în modul //listen// (//​server//​)iar ''​2024''​ este portul pe care ascultă: ''​netcat''​ va crea un socket de tip server ​și va aștepta conexiuni pe portul ''​2024''​. Terminalul va rămâne în așteptarepentru ca un client să se conecteze serverul deschis cu ''​netcat''​. ​**NU** închideți terminalul.
-root@host:​~#​ iptables -t nat -nvL POSTROUTING +
-Chain POSTROUTING (policy ACCEPT 0 packets0 bytes) +
- pkts bytes target ​    prot opt in     ​out ​    ​source ​              ​destination +
-    0     0 MASQUERADE ​ all  --  ​           0.0.0.0/​0 ​           0.0.0.0/0 +
-</​code>​+
  
-Intrați ​pe  stația ''​red'' ​și verificați dacă puteți da ping în ''​8.8.8.8''​:<code bash> +Dorim să verificăm faptul că pe stația ''​host'' ​un serviciu ascultă pe portul ''​2024''​. ​Deschidem un nou terminal către stația ​''​host''​ și rulăm comanda<code bash> 
-root@host:​~# ​go red+root@host:​~# ​netstat -tlnp 
 +Active Internet connections (only servers) 
 +Proto Recv-Q Send-Q Local Address ​          ​Foreign Address ​        ​State ​      ​PID/​Program name 
 +[...] 
 +tcp        0      0 0.0.0.0:​2024 ​           0.0.0.0:​* ​              ​LISTEN ​     4958/netcat
 [...] [...]
-root@red:~# ping 8.8.8.8 
-PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 
-^C 
---- 8.8.8.8 ping statistics --- 
-2 packets transmitted,​ 0 received, 100% packet loss, time 1007ms 
 </​code>​ </​code>​
  
-Observațcă nu aveți conectivitate în IP-ul ''​8.8.8.8''​. Motivul este reprezentat de faptul ​că nu aveți activată rutarea ​pe stația ''​host''​. ​Pe stația ''​host'' ​activați rutarea:<code bash> +Comanda ''​netstat''​ afișează serviciile TCP care așteaptă conexiuni pe stația locală. Observăm ​că programul ''​netcat''​ ascultă pe portul ''​2024''​. Opțiunile comenzii ''​netstat''​ sunt: 
-root@host:​~# ​sysctl -w net.ipv4.ip_forward=1 +  * ''​t''​ - afișează conexiuni TCP 
-net.ipv4.ip_forward = 1+  * ''​l''​ - afișează serviciile care **așteaptă** (//​listen//​) conexiuni 
 +  * ''​n''​ - dezactivează rezolvare de nume pentru adrese ​IP și porturi; de obicei dezactivăm rezolvarea numelor pentru a elimina latența procesului de rezolvare;​ 
 +  * ''​p''​ - afișează numele și PID-ul procesului de tip serviciu de rețea care așteaptă conexiuni pe portul dat. 
 +În afișare construcția ​''​0.0.0.0:2024'' ​din coloana ''​Local Address''​ înseamnă ​că serviciul ascultă conexiuni ​pe toate adresele IP/interfețele disponibile sistemului pe portul ​''​2024''​. 
 + 
 +În terminalul nou deschis către ​stația ''​host'' ​conectați-vă la serviciul prospăt creat. Folosiți pentru aceasta tot comanda ''​netcat''​ în modul client:<code bash> 
 +root@host:​~# ​netcat localhost 2024
 </​code>​ </​code>​
 +Comanda a creat un socket de tip client și s-a conectat la serviciul de mai sus (conexiune TCP pe portul ''​2024''​). În continuare comanda așteaptă intrare de la utilizator. Mesajele pe care le scriem vor fi transmise serverului care le va afișa la ieșirea standard. Scrieți câteva linii și observați afișarea acestora pe partea serverului. Închideți folosind combinația de taste ''​Ctrl+d''​. Se închide și serverul.
  
-Intrați din nou pe stația ''​red''​ și încercați să executați comanda ​''​ping''​ către 8.8.8.8Observațcă merge.+Pe stația ''​host'',​ realizați pașii de mai sus pentru UDP: 
 +  * creați un server care ascultă pachete UDP pe portul 2024; 
 +  * listați serviciile care ascultă pachete UDP pe stația ''​host''​
 +  * porniți un client UDP și comunicați cu serverul de mai sus. 
 + 
 +<note tip> 
 +Pentru a afla ce opțiune trebuie transmisă comenzii ''​netcat''​ pentru a porni un server sau client UDP, consultați pagina de manual a comenzii și căutați șirul ​''​UDP''​
 + 
 +La fel, pentru a afla ce opțiune trebuie transmisă comenzii ''​netstat''​ pentru a afișa sockeții UDP, consultați pagina de manual a comenzii și utați șirul ''​udp''​. 
 +</​note>​ 
 + 
 +<​hidden>​ 
 +<​solution>​ 
 +Pornim serverul:<​code bash> 
 +root@host:​~#​ netcat -u -l 2024 
 +</​code>​ 
 +Afișăm sockeții UDP de la nivelul sistemului:<​code bash> 
 +root@host:​~#​ netstat -ulpn 
 +Proto Recv-Q Send-Q Local Address ​          ​Foreign Address ​        ​State ​      ​PID/​Program name 
 +[...
 +udp        0      0 0.0.0.0:​2024 ​           0.0.0.0:​* ​                          ​6088/​netcat ​     
 +[...] 
 +</​code>​ 
 +Pornim un client UDP școmunicăm cu serverul creat anterior:<​code bash> 
 +root@host:​~#​ netcat -u localhost 2024 
 +</​code>​ 
 +</​solution>​ 
 +</​hidden>​
rl/labs/09/contents/01.1384685650.txt.gz · Last modified: 2013/11/17 12:54 by mihai.carabas
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0